2

我想防止网络抓取工具在我的网站上积极抓取1,000,000 个页面。我想通过向每分钟访问异常页数的机器人返回“503 服务不可用”HTTP 错误代码来做到这一点。我没有遇到垃圾邮件发送者的问题,只是遇到了抓取工具。

我不希望搜索引擎蜘蛛收到错误。我的倾向是设置 robots.txt 爬行延迟,这将确保蜘蛛每分钟访问的页面数低于我的 503 阈值。

这是一个可接受的解决方案吗?所有主要搜索引擎都支持 crawl-delay 指令吗?它会对SEO产生负面影响吗?还有其他解决方案或建议吗?

4

1 回答 1

3

我已经建立了一些刮板,而花费时间最长的部分总是试图找出站点布局要刮什么而不是什么。我可以告诉你的是,改变 div 和内部布局对所有爬虫来说都是毁灭性的。就像 ConfusedMind 已经指出的那样。

所以这里有一段文字给你:

速率限制
对 IP 进行速率限制意味着您只允许 IP 在固定时间范围内进行一定数量的搜索,然后再阻止它。这似乎可以肯定地防止最严重的罪犯,但实际上并非如此。问题是您的大部分用户可能来自代理服务器或大型企业网关,他们经常与成千上万的其他用户共享这些网关。如果您对代理的 IP 进行速率限制,则当来自代理的不同用户使用您的站点时,该限制将很容易触发。仁慈的机器人也可能以比正常速度更高的速度运行,从而触发您的限制。

一种解决方案当然是使用白名单,但问题是您需要不断手动编译和维护这些列表,因为 IP 地址会随着时间而变化。不用说,一旦数据抓取工具意识到您正在限制某些地址的速率,它们只会降低它们的速率或将搜索分布在更多的 IP:s 上。

为了使速率限制对网站的大用户有效且不会令人望而却步,我们通常建议在阻止他们之前调查超出速率限制的每个人。

Captcha 测试
Captcha 测试是试图阻止网站抓取的常用方法。这个想法是让一张图片显示一些机器无法阅读但人类可以阅读的文本和数字(见图)。这种方法有两个明显的缺点。首先,如果用户必须填写多个验证码,验证码测试可能会让他们感到厌烦。其次,网络爬虫可以很容易地手动进行测试,然后让他们的脚本运行。除此之外,一些验证码测试的大用户的实施受到了损害。混淆源代码

一些解决方案试图混淆 http 源代码,使机器更难阅读它。这种方法的问题在于,如果网络浏览器可以理解混淆代码,那么任何其他程序也可以。混淆源代码也可能会干扰搜索引擎如何查看和处理您的网站。如果你决定实施这个,你应该非常小心。

黑名单
由已知的 IP:s 组成的黑名单本身并不是一种真正的方法,因为您仍然需要先检测到刮板才能将他列入黑名单。即便如此,它仍然是一种钝器,因为 IP:s 往往会随着时间而变化。最后,您将最终使用此方法阻止合法用户。如果您仍然决定实施黑名单,您应该有一个至少每月审查一次的程序。

于 2012-12-03T13:24:19.357 回答