Python 根据坏机器人列表测试用户代理字符串的方法?
我通过Apache配置文件中的一长串坏机器人用户代理字符串拒绝坏机器人进入我的Apache服务器,如下所示:Python 根据坏机器人列表测试用户代理字符串的方法?,python,linux,apache2,debian,user-agent,Python,Linux,Apache2,Debian,User Agent,我通过Apache配置文件中的一长串坏机器人用户代理字符串拒绝坏机器人进入我的Apache服务器,如下所示: <IfModule mod_setenvif.c> SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot SetEnvIfNoCase User-Agent "Baiduspider" bad_bot SetEnvIfNoCase User-Agent "Exabot" bad_bot ... <Directory /> Or
<IfModule mod_setenvif.c>
SetEnvIfNoCase User-Agent "AhrefsBot" bad_bot
SetEnvIfNoCase User-Agent "Baiduspider" bad_bot
SetEnvIfNoCase User-Agent "Exabot" bad_bot
...
<Directory />
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Directory>
</IfModule>
问题:是否有办法找出匹配的坏机器人用户代理字符串导致请求被拒绝,例如通过日志,或者有办法根据坏机器人列表提供上述用户代理字符串,以查看导致匹配的原因
谢谢。嗯,你有1600多个坏机器人的列表。这听起来像是对CPU周期的完全浪费。如果这些机器人确实是糟糕的机器人,是什么阻止它们使用桌面或移动浏览器用户代理字符串,并使其无法被您的配置检测到:现在回答您的问题,您应该使用正则表达式来匹配您的机器人,这样您就可以避免mod_setenvif的子字符串匹配。您的SetEnvifLocase用户代理AhrefsBot bad_bot将成为SetEnvifLocase用户代理^AhrefsBot$bad_bot,因此在此之后,您的误报将消失。160,而不是1600…我的错。如果使用正则表达式模式,它工作正常吗?
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)"