我收到了来自ahrefs bot的来自某些特定域的大规模bot攻击,例如“ hydrogen084.a.ahrefs.com”,“ hydrogen172.a.ahrefs.com”等,最终导致我的服务器挂起并不允许该网站访问起来。有什么办法可以防止此域名hydro * .a.ahrefs.com停止访问我的服务器(Apache)。任何帮助表示赞赏。谢谢!
最佳答案
第一个想法是在您的.htaccess文件中屏蔽此漫游器和类似内容
# Block abusive spiders
BrowserMatchNoCase "Baiduspider" bots
BrowserMatchNoCase "Yandex" bots
BrowserMatchNoCase "MegaIndex" bots
BrowserMatchNoCase "AhrefsBot" bots
BrowserMatchNoCase "HTTrack" bots
Order allow,deny
Allow from all
Deny from env=bots
然后看一下这篇文章。 https://perishablepress.com/eight-ways-to-blacklist-with-apaches-mod_rewrite/
通过用户代理和其他部分查看黑名单部分,以获取建议。
通过用户代理程序将其列入黑名单是一种常见的策略,其结果令人怀疑。将用户代理列入黑名单的概念围绕这样一种思想,即访问您的服务器的每个浏览器,漫游器和爬虫都使用特定的用户代理字符串来标识自己。因此,可以识别与恶意,不友好或其他不想要的行为相关联的用户代理并将其列入黑名单,以防止将来的访问。这是一种众所周知的黑名单策略,已导致一些广泛且有效的用户代理黑名单。
当然,这种方法的缺点在于,容易伪造用户代理信息,从而很难确定某些被列入黑名单的客户的真实身份。通过简单地将其用户代理更改为未知身份,恶意机器人可以绕过Internet上的每个黑名单。实际上,许多邪恶的“垃圾机器人”确实在做这种事情,这解释了数量众多的黑名单用户代理。即使这样,某些用户代理字符串可以更改的程度也有一定的限制。例如,GNU的Wget和cURL命令行工具很难伪造,许多其他客户端的用户编码字符串都经过硬编码,很难更改。
在Apache服务器上,可以通过HTTP_USER_AGENT变量轻松识别用户代理并将其列入黑名单。这是一个例子:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(<|>|'|%0A|%0D|%27|%3C|%3E|%00).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(HTTrack|clshttp|archiver|loader|email|nikto|miner|python).* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(winhttp|libwww\-perl|curl|wget|harvest|scan|grab|extract).* [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>