20

我正在考虑建立一个内容站点,其中可能包含数千个不同的条目,可通过索引和搜索访问。

我可以采取哪些措施来防止恶意爬虫窃取我网站上的所有数据?我不太担心 SEO,尽管我不想一起阻止合法的爬虫。

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

4

12 回答 12

20

从理论上讲,人眼可见的任何站点都可能被撕裂。如果您甚至要尝试访问,那么根据定义,必须是这种情况(如果它不是机器可读的,那么说话的浏览器将如何传递您的内容)。

您最好的办法是研究为您的内容添加水印,这样至少如果它被撕掉,您可以指向水印并声明所有权。

于 2008-10-07T07:25:49.457 回答
13

这之间:

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

还有这个:

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

你要求很多。事实是,如果您要尝试阻止恶意抓取工具,您最终也会阻止所有“好的”爬虫。

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

  1. 让互联网的农民窃取您的内容。留意它(在 Google 上搜索您的一些更独特的短语)并向 ISP 发送删除请求。除了时间,这个选择对你几乎没有任何影响。
  2. 使用 AJAX 和滚动加密从服务器请求您的所有内容。您需要保持方法不断变化,甚至是随机的,这样每个页面加载都带有不同的加密方案。但是,如果有人想破解它,即使它也会被破解。您还将丢掉搜索引擎的面子,从而减少真实用户的流量。
于 2008-10-07T07:41:31.950 回答
6

好的爬虫会遵循你在 robots.txt 中指定的规则,恶意爬虫不会。您可以为坏机器人设置“陷阱”,如下所述:http: //www.fleiner.com/bots/
但话又说回来,如果你把你的内容放到互联网上,我认为如果它尽可能轻松地找到对每个人来说都会更好(事实上,你在这里发帖,而不是在专家交流意见的蹩脚论坛上发帖)

于 2008-10-07T07:40:18.320 回答
6

实际上,您无法阻止恶意爬虫 - 并且您为防止它们而采取的任何措施都可能损害您的合法用户(除了可能向 robots.txt 添加条目以允许检测之外)

因此,您必须对被盗的内容进行计划——它很可能以一种或另一种形式发生——并了解你将如何处理未经授权的复制。

预防是不可能的 - 这样做会浪费你的时间。

确保网站内容不易被复制的唯一可靠方法是拔下网线...

要检测它,请使用http://www.copyscape.com/之类的东西可能会有所帮助。

于 2008-10-07T11:38:21.350 回答
5

甚至不要试图在网络上设置限制!

真的就这么简单。

阻止翻录的每一项潜在措施(除了非常严格的 robots.txt 之外)都会伤害您的用户。验证码比收获更痛苦。检查用户代理会关闭意外的浏览器。使用 javascript 的“聪明”技巧也是如此。

请保持网络畅通。如果您不希望从您的网站中获取任何内容,请不要在此处发布。水印可以帮助您声明所有权,但这仅在您想在损害完成后提起诉讼时才有帮助。

于 2008-10-07T08:59:25.600 回答
3

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

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

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

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

好的。没有想法。

于 2008-10-07T07:37:12.973 回答
2

简而言之:您无法阻止翻录。恶意机器人通常使用 IE 用户代理,并且现在相当聪明。如果您想让您的站点访问的最大数量(即屏幕阅读器等),您不能仅仅因为它们会阻止合法用户的访问而使用 javascript 或流行的插件之一(flash)。

也许你可以有一个 cron 作业,从你的数据库中挑选一个随机片段并用谷歌搜索它以检查匹配项。然后,您可以尝试获取违规网站并要求他们删除内容。

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

于 2008-10-07T07:39:50.957 回答
2

如果您正在制作一个公共网站,那么这将非常困难。有些方法涉及到服务器端脚本来生成内容或使用非文本(Flash 等)来最大限度地减少翻录的可能性。

但老实说,如果您认为您的内容非常好,只需对其进行密码保护并将其从公共领域删除即可。

我的观点是,网络的全部意义在于向尽可能多的人传播有用的内容。

于 2008-10-07T07:39:57.367 回答
1

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

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

总而言之,这听起来像是 DRM/游戏保护系统——惹恼你的合法用户只是为了防止一些你无论如何都无法真正防止的不良行为。

于 2008-10-07T07:41:08.583 回答
0

您可以尝试使用 Flash / Silverlight / Java 来显示所有页面内容。这可能会阻止大多数爬虫。

于 2008-10-07T07:35:26.330 回答
0

我曾经有一个基于 User-Agent 标头阻止或允许的系统。它依赖于爬虫设置他们的用户代理,但似乎大多数人都这样做。

当然,如果他们使用假标头来模拟流行的浏览器,那将无法正常工作。

于 2008-10-07T07:43:39.730 回答
-1

尽可能使用人工验证器并尝试使用一些框架(MVC)。网站翻录软件有时无法翻录此类页面。还要检测用户代理,至少它会减少可能的撕裂者的数量

于 2008-10-07T07:30:46.810 回答