我希望阻止网页抓取工具在我的网站上大肆抓取 1,000,000个网页。我想通过向每分钟访问异常页数的机器人返回“503 Service Unavailable”HTTP错误代码来执行此操作。我是不在表格垃圾邮件发送者方面遇到麻烦,只需使用刮刀。
我不希望搜索引擎蜘蛛收到错误。我倾向于设置robots.txt抓取延迟,这将确保蜘蛛在我的503阈值下每分钟访问多个页面。
这是一个可以接受的解决方案吗?所有主要搜索引擎都支持爬行延迟指令吗?它会对SEO产生负面影响吗?还有其他解决方案或建议吗?
答案 0 :(得分:3)
我已经制作了一些刮刀,花费时间最长的零件总是试图找出网站布局要刮什么而不是。我可以告诉你的是,改变div和内部布局对所有刮刀都是毁灭性的。就像ConfusedMind已经指出的那样。
所以这里有一些文字给你:
限速
对IP进行速率限制意味着在阻止IP之前,您只允许IP在固定时间范围内进行一定数量的搜索。这似乎可以肯定地防止最严重的罪犯,但实际上并非如此。问题是很大一部分用户可能通过代理服务器或大型企业网关来访问,而这些网关通常与数千名其他用户共享。如果您对代理的IP进行速率限制,则当代理的不同用户使用您的站点时,该限制将很容易触发。仁慈的机器人也可能以高于正常的速度运行,从而触发你的限制。
一种解决方案当然是使用白名单,但问题在于您不断需要手动编译和维护这些列表,因为IP地址会随着时间的推移而变化。毋庸置疑,一旦他们意识到您对某些地址的速率限制,数据抓取工具只会降低其费率或将搜索分配到更多的IP上。
为了使速率限制有效并且对网站的大用户来说并不过高,我们通常建议在阻止之前调查超过速率限制的每个人。
验证验证
验证码测试是尝试阻止网站抓取的常见方法。这个想法是让一张图片显示一些机器无法读取的文字和数字,但人类可以看到(见图片)。这种方法有两个明显的缺点。首先,如果用户必须填写不止一个,验证码测试可能会令用户烦恼。其次,Web scraper可以轻松地手动执行测试,然后让脚本运行。除此之外,验证码测试的几个大用户已经将其实施受到了损害。
混淆源代码
有些解决方案试图模糊http源代码,使机器难以读取它。这种方法的问题在于,如果Web浏览器可以理解混淆代码,那么任何其他程序也可以。混淆源代码也可能会干扰搜索引擎查看和处理您的网站的方式。如果你决定实施这个,你应该非常小心。
的黑名单强>
由知识分子组成的黑名单本身并不是一种方法,因为你仍然需要首先检测一个刮刀才能将其列入黑名单。即使如此,它仍然是一个钝器,因为IP:s往往会随着时间而改变。最后,您将最终使用此方法阻止合法用户。如果您仍然决定实施黑名单,则应至少每月审核一次。