我正在建立一个包含大型产品数据库的电子商务网站。当然,当 Goggle 索引网站的所有产品时也很好。但是,如果某个竞争对手想要Web 抓取网站并获取所有图像和产品描述怎么办?
我正在观察一些具有类似产品列表的网站,它们放置了验证码,因此“只有人类”才能阅读产品列表。缺点是……它对 Google、Yahoo 或其他“行为良好”的机器人是不可见的。
我正在建立一个包含大型产品数据库的电子商务网站。当然,当 Goggle 索引网站的所有产品时也很好。但是,如果某个竞争对手想要Web 抓取网站并获取所有图像和产品描述怎么办?
我正在观察一些具有类似产品列表的网站,它们放置了验证码,因此“只有人类”才能阅读产品列表。缺点是……它对 Google、Yahoo 或其他“行为良好”的机器人是不可见的。
您可以通过使用 whois(在命令行或网站上)检查访问者 IP 来发现 Google 和其他人正在使用的 IP 地址。然后,一旦你积累了一些合法的搜索引擎,就允许它们进入你的产品列表,而不需要验证码。
由于潜在的屏幕截图应用程序可以在标头中欺骗用户代理和 HTTP 引荐来源网址(用于图像)并使用类似于人类浏览器的时间表,因此不可能完全阻止专业刮板。但是您仍然可以检查这些东西并防止随意刮擦。除了在网站上注册之外,我个人觉得验证码很烦人。
如果您担心竞争对手使用您的文本或图像,那么水印或自定义文本怎么样?
让他们拍摄您的照片,您的网站上就会有您的徽标!
您可以尝试的一种技术是“蜜罐”方法:可以通过一些简单的脚本挖掘日志文件来完成。
基本过程是您通过查找在很短的时间内查看 2+ 不相关产品的 IP 地址来建立自己的爬虫 IP 的“黑名单”。这些 IP 很可能属于机器。然后,您可以对它们进行反向查找以确定它们是好(如 GoogleBot 或 Slurp)还是坏。
阻止网络爬虫并不容易,而避免误报则更加困难。
无论如何,您可以将一些网络范围添加到白名单中,并且不要向他们提供任何验证码。所有那些众所周知的爬虫:Bing、Googlebot、Yahoo 等。在爬取时总是使用特定的网络范围,并且所有这些 IP 地址都会解析为特定的反向查找。
几个例子:
Google IP 66.249.65.32 解析为 crawl-66-249-65-32.googlebot.com
必应 IP 157.55.39.139 解析为 msnbot-157-55-39-139.search.msn.com
雅虎IP 74.6.254.109 解析为 h049.crawl.yahoo.net
因此,假设“ *.googlebot.com ”、“ * .search.msn.com ”和“ *.crawl.yahoo.net ”地址应列入白名单。
您可以在互联网上实施大量白名单。
话虽如此,我不认为验证码是针对高级爬虫的解决方案,因为诸如deathbycaptcha.com或2captcha.com之类的服务承诺在几秒钟内解决任何类型的验证码。
请查看我们的 wiki http://www.scrapesentry.com/scraping-wiki/我们写了很多关于如何预防、检测和阻止网络爬虫的文章。
也许我过于简化了,但如果您担心服务器性能,那么提供 API 将减少对爬虫的需求,并为您节省带宽/带宽处理器时间。
此处列出的其他想法:
http://blog.screen-scraper.com/2009/08/17/further-thoughts-on-hindering-screen-scraping/