保护内容不被抓取的最佳措施是什么?

时间:2011-02-08 07:13:35

标签: html security web-scraping web-crawler

我最近一直在抓取很多网站的内容,并且很惊讶到目前为止没有网站能够提出太多阻力。理想情况下,我正在研究的网站不应该如此容易地收获。所以我想知道什么是阻止机器人收集网络内容的最佳方法。 明显的解决方案:

  • Robots.txt(是的)
  • IP黑名单

可以采取哪些措施来捕获机器人活动?如何才能使数据提取变得困难?如何为他们提供糟糕的数据呢?

关于SEO的关注,有没有办法限制对某些数据块的访问(有点像<nofollow>文本块?) 只是寻找想法,没有正确/错误的答案

6 个答案:

答案 0 :(得分:4)

使用客户端解密/解码方案。基本上发送一些编码数据然后依赖JavaScript将其解码为可读的东西。爬虫会得到你的内容但对他们来说没用(至少在你的网站变得如此之大以至于人们会专门针对它)之前。

但是,你为什么要这样做呢?您不希望网站被搜索引擎编入索引吗?

答案 1 :(得分:2)

试图阻止webscrapers并不容易。如果没有一个复杂的,不断发展的解决方案,你所能做的只是提高难度,并希望他们没有足够的决心继续前进。你可以做的一些事情是:

  • 费率限制。确保你不要基于IP做这个,而是 唯一会话,以避免阻止NAT后面的用户。
  • 强制用户执行javascript访问该页面。有 有几种方法可以做到这一点,这使得它变得更加困难 刮,但仍然不是不可能的。有很多脚本工具 (红宝石,硒等)允许你使用真实的网页刮 浏览器。
  • IP黑名单。阻止代理服务器,TOR,amazon ec2等

同样重要的是要注意,您应该将搜索引擎列入白名单以避免搜索引擎优化/流量丢失。您可以通过查看其用户代理并将其与其IP的whois进行比较,将大多数搜索引擎列入白名单。

为了完全披露,我是Distil Networks的联合创始人,我们提供防刮解决方案即服务。这让我有偏见,因为我不相信你的问题有一个静态的答案,也就是说,你不能做一件事而且停下来。这是一场军备竞赛,你将永远不得不继续战斗。

答案 2 :(得分:1)

通过ip跟踪活动(可能与用户代理结合)并尝试通过页面调用之间的延迟来检测机器人。在一定时间间隔内要求的网址太多 - 开始发送修改后的内容,重定向或任何您想到的内容。

答案 3 :(得分:1)

javascript 在客户端上设置 Cookie 。在服务器端,检查是否存在此cookie,并仅在存在cookie时提供您的内容。

如果没有cookie,请发送包含javascript的页面,该页面设置cookie并重新加载页面。

这应该会阻止所有不执行任何javascript的自动化网络工具。

答案 4 :(得分:1)

如果抓取工具真的想要,您无法阻止抓取,但您可以取笑它们。

检测机器人的方法

  • by user agent
  • by ip
  • 通过日志分析(大多数情况下,机器人每x秒加载一页)
  • 使用javascript加载特定文件,即[yadda.gif]。如果你加载了一个给定的页面但没有下载yadda.gif,你就没有启用js,而且你可能是机器人(或者正在使用noscript)

可能的惩罚:

  • 重定向到microsoft.com: - )
  • 设置的输出率非常低,因此下载任何内容都需要永远。你可以用apache的mod_throughput或php的输出缓冲函数
  • 来做到这一点
  • 返回乱语,贬低内容或类似内容。

答案 5 :(得分:0)

实施 Captcha ,仅允许人类查看您的网站。