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