Web crawler 防止对站点数据进行爬网和剥离

Web crawler 防止对站点数据进行爬网和剥离,web-crawler,spam-prevention,Web Crawler,Spam Prevention,我正在考虑建立一个内容网站,可能有数千个不同的条目,可以通过索引和搜索访问 我可以采取哪些措施来防止恶意爬虫从我的站点窃取所有数据?我不太担心搜索引擎优化,虽然我不想一起阻止合法的爬虫程序 例如,我曾想过随机更改用于显示我的数据的HTML结构的一小部分,但我想这不会真正有效。理论上,任何肉眼可见的网站都可能被撕毁。如果你甚至想尝试访问,那么根据定义,必须是这样的(如果你的内容不是机器可读的,会说话的浏览器将如何交付你的内容) 你最好的办法是研究你的内容的水印,这样至少如果它被撕毁了,你可以指向水

我正在考虑建立一个内容网站,可能有数千个不同的条目,可以通过索引和搜索访问

我可以采取哪些措施来防止恶意爬虫从我的站点窃取所有数据?我不太担心搜索引擎优化,虽然我不想一起阻止合法的爬虫程序


例如,我曾想过随机更改用于显示我的数据的HTML结构的一小部分,但我想这不会真正有效。

理论上,任何肉眼可见的网站都可能被撕毁。如果你甚至想尝试访问,那么根据定义,必须是这样的(如果你的内容不是机器可读的,会说话的浏览器将如何交付你的内容)


你最好的办法是研究你的内容的水印,这样至少如果它被撕毁了,你可以指向水印并声明所有权

尽可能使用人工验证程序,并尝试使用某种框架(MVC)。网站翻录软件有时无法翻录此类页面。还可以检测用户代理,至少它将减少可能的裂土器数量

您可以尝试使用Flash/Silverlight/Java显示所有页面内容。这可能会阻止大多数爬虫进入他们的轨道。

阻止网站被机器破坏的唯一方法是让用户证明他们是人类

您可以让用户执行一项对人来说容易而对机器来说难的任务,例如:验证码。当用户第一次访问您的站点时,请出示验证码,并且仅在验证码完成后才允许他们继续。如果用户在页面之间移动过快,请重新验证

这并不是100%有效,黑客总是试图破坏它们

或者,你可以做出缓慢的反应。你不需要让它们爬行,但要选择一个对人类来说合理的速度(这对机器来说是非常慢的)。这只会让他们花费更长的时间来清理你的网站,但并非不可能


嗯。没有想法。

简而言之:你无法阻止撕扯。恶意机器人通常使用IE用户代理,如今相当智能。如果你想最大限度地访问你的网站(如屏幕阅读器等),你不能使用javascript或流行的插件(flash),因为它们可以阻止合法用户的访问

也许你可以有一个cron任务,从你的数据库中挑选一个随机片段,用谷歌搜索来检查匹配。然后你可以试着抓住这个有问题的网站,要求他们把内容删除


您还可以监视来自给定IP的请求数量,如果超过阈值,则会阻止它,尽管您可能必须将合法的机器人列入白名单,并且对僵尸网络没有任何用处(但如果您面对的是僵尸网络,可能翻录并不是您最大的问题)。

如果您要创建一个公共站点,那么这是非常困难的。有些方法涉及服务器端脚本来生成内容,或者使用非文本(Flash等)来最小化翻录的可能性

但是,如果你认为你的内容很好,就用密码保护它,把它从公共场所删除。< /P>
我的观点是,网络的全部目的是向尽可能多的人传播有用的内容。

好的爬虫程序会遵循您在robots.txt中指定的规则,而恶意的爬虫程序则不会。 你可以为坏机器人设置一个“陷阱”,如下所述: .

但话说回来,如果你把你的内容放在互联网上,我认为对每个人来说最好是尽可能轻松地找到(事实上,你是在这里发帖,而不是在某个蹩脚的论坛上,在那里专家们交换意见)

如果内容是公开的、免费的,即使有页面浏览限制或其他什么,你无能为力。如果您需要注册和/或付款来访问数据,您可能会对其进行一些限制,至少您可以看到谁在读什么,并识别似乎正在删除整个数据库的用户

然而,我认为你应该面对这样一个事实:网络就是这样工作的,没有很多方法可以阻止机器阅读人类所能阅读的东西。当然,将所有内容输出为图像会让大多数人泄气,但这样网站就无法访问了,更不用说即使是非残疾用户也无法复制粘贴任何内容了——这真的很烦人

总而言之,这听起来像是DRM/游戏保护系统——让合法用户大发雷霆,只是为了防止一些你根本无法阻止的不良行为。

在这两者之间:

我可以采取哪些措施防止恶意爬虫翻录

这是:

我不想一起阻止合法的爬虫程序

你要求的太多了。事实上,如果你想阻止恶意的爬虫,你最终也会阻止所有“好”的爬虫

你必须记住,如果人们想要刮取你的内容,他们将投入比搜索引擎机器人多得多的手动工作。。。因此,要正确处理你的优先事项。您有两个选择:

  • 让互联网上的农民窃取你的内容。留意它(在谷歌上搜索你的一些更独特的短语)并向ISP发送删除请求。除了时间,这个选择对你的生活几乎没有任何影响
  • 使用AJAX和滚动加密从服务器请求所有内容。您需要保持方法的更改,甚至是随机更改,以便每个页面加载都携带不同的加密方案。但如果有人想破解它,即使是这个也会被破解。你也会丢掉搜索引擎的面孔,从而在真实用户的流量上受到打击

  • 我曾经有一个系统,可以根据用户代理头阻止或允许。 它依赖于爬虫