基于User-Agent的服务器级别阻止,拒绝或redirect?

我们最近开始遇到networking刮板/ DDoS服务的80个问题,因为他们滥用爬取的做法,每周都会把我们的服务器closures几次。 最初,我们只是在受影响的网站的.htaccess文件的底部放置以下内容:

 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^.*80legs RewriteRule .* - [F,L] </IfModule> 

但是,我们只是需要在所有服务器的服务器级别阻止它们。

根据Apache文档,这个configuration是有效的放置在服务器configuration部分,又名httpd.conf ,但这样做没有效果。 在启用了虚拟主机的Apache服务器上,是否有一种特殊的方法可以阻止/拒绝/redirect基于用户代理的请求?

注意:在防火墙级别是不可能的,因为:

  • 80legs使用本质上是一个select在僵尸networking爬行页面。 他们最后的“事件”涉及来自全球约900个不同networking/ IP块的5250个独特IP。
  • 目前我们还没有能力进行深度包检测。

根据http://www.80legs.com/spider.html他们的用户代理string&#x662F;008 ,而不是您使用的“80legs”。

此外,他们说,他们的爬虫尊重robots.txt文件,所以你应该试试看。

更新您的robots.txt以包含:

 User-agent: 008 Disallow: / 

对不起,但是我不知道你是什么意思, we just need to block them at the server level across all servers如果它没有block this at the firewall

的确,那正是我阻止他们的地方。 使用fail2ban。

他们最后的“事件”涉及来自全球约900个不同networking/ IP块的5250个独特IP

无关紧要 – 将脚本设置为8位networking(比如说),或者如果您冒险尝试将ASN映射出来,并阻止它,这是微不足道的。 使用非常长的规则链可能会影响性能(但比通过声音传递stream量要less很多),但是您只需调整禁止的持续时间以防止出现这种情况。

目前我们还没有能力进行深度包检测

不需要 – 你使用Apache来处理HTTPstream量,并redirect到一个触发fail2ban的脚本来实现它的动作。