网络爬虫已经两次瘫痪了我们的网站。它忽略了我们的 robots.txt,而且我们通过电子邮件和 Twitter 都没有收到他们的客户服务或支持人员的回复。
我必须根据他们的用户代理字符串创建 URL 重定向,我已经将他们的所有请求重定向回他们自己的公共网站。这是正确的要做的事?
编辑 如何使用 tomcat/tuckey 根据用户代理字符串返回 40?错误代码?(如果这很重要的话,我们的网站托管在 Windows 服务器上。)我无法使用 IP 地址,因为机器人使用了许多 IP 地址(显然是基于网格的)。
这在一定程度上是因为我们的网站是一个老旧且老旧的遗留系统,但 Google 的爬虫和 Bing 的爬虫不会对我们造成影响,我们的正常业务流量也很好。为了处理一个机器人而进行大量投资/开发是不明智的。
答案1
网络爬虫已两次瘫痪我们的网站
如果网络爬虫能够使您的网站瘫痪,那么他们就表明您的网站很容易受到 DOS 攻击。虽然快速解决方法是阻止该网络爬虫的访问,但它实际上并不能为您提供太多保护以抵御其他网络爬虫/DOS/大量合法流量。
我同意 Bobby 的观点 - 如果您知道请求来自行为不当的客户端,那么正确的响应是 4xx 错误代码 - 但您可以在响应中放置任何状态消息 - 并应在正文中重复它。我认为它不需要新的状态代码 - 409 似乎可以解决这种情况。
实际上,您应该考虑如何更优雅地处理此类流量 - 最低带宽保证比带宽上限更有效,但比后者更少见。限制每个 IP 地址的连接数和连接速率也是一种好方法(但如果您使用的是 IPv4,请注意 IPv6 PoP 问题)。
如果您想要一个在用户空间运行的自适应解决方案(假设是在 Linux / BSD 上),请查看 fail2ban。
限制带宽/连接仍然是一种补救措施——更好的解决方案是提高系统的性能/容量。