什么样的延迟会阻止机器人抓取我的网站?

信息安全 Web应用程序 http
2021-08-21 16:17:40

我使用我认为是识别不尊重我的坏机器人的标准方法robots.txt(即不允许爬取bad-bots子目录,然后记录那些仍然去那里的人)。

到目前为止,我只是在识别出恶意机器人后根据它们的 IP 地址阻止了它们。但是,我正在考虑为至少一些(例如可能是误报的虚假罪犯)引入一种更微妙的方法。这个想法是请求将被提供,但在延迟之后(例如使用 PHP 实现sleep())。这样,一个(患者)人恰好被分配了一个以前被恶意机器人使用的 IP 地址,将会看到该页面,而恶意机器人可能会放弃请求并转移到下一个受害者。

问题是:在这种类型的方案中我应该使用多少秒?理想情况下,它应该足够短,以免对人类太烦人,同时又足够长以阻止坏机器人爬取我的网站。

或者:是否有某种方法可以用来衡量机器人试图访问我的网站在“放弃”并继续前进之前等待响应的时间?

编辑:Dinu Smădu 和 Rory Alsop 的评论让我相信引入延迟不是一个好主意。Polynominal 建议 Security.SE 可能不是最合适的场所。所以我把我在这里学到的东西(再次感谢,伙计们!)并在Webmasters.SE上发布了一个修改后的问题。

3个回答

我不认为这种方法是一个好主意。通过对某些请求使用 sleep() 函数,攻击者可以更轻松地创建拒绝服务。他只会延迟向您正在服务的资源创建大量请求。这样,服务器一次可以处理的请求数将达到,合法用户将无法访问该站点。

此外,您不必为用户提供较长的等待时间来“惩罚”用户。如果网页一直很慢,我会寻找替代方案。

最好的保护是没有可公开访问的敏感信息。使用身份验证机制来保护这些资源并只允许您想要的用户访问。

如果您试图阻止机器人从您的站点复制信息,那么 CAPTCHA 可能会有所帮助。在显示某些信息之前使用验证码。

延迟不太可能真正用于阻止自动化系统。自动化系统将无限期地等待,可能比一个人愿意等待的时间更长,因此您比机器人更有可能阻止实际客户,因此对业务不利。

更好的方法可能是对错误的机器人 IP 进行重定向。此重定向可以解释情况并提供验证码以从错误的机器人文件中删除 IP。