我想阻止我在服务器日志中看到的几个代理, 他们在日志中的确切名称是,例如:
Python-urllib/2.6
Python-urllib/2.7
CATExplorador/1.0beta (sistemes at domini dot cat; http://domini.cat/catexplorador.html)
我见过this example,但不知道如何实现它, 应该是它们出现的那样:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Python-urllib/2.6 [OR]
RewriteCond %{HTTP_USER_AGENT} ^Python-urllib/2.7 [OR]
RewriteCond %{HTTP_USER_AGENT} ^CATExplorador/1.0beta (sistemes at domini dot cat; http://domini.cat/catexplorador.html) [OR]
RewriteRule ^.* - [F,L]
或者这也很好:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^python [OR]
RewriteCond %{HTTP_USER_AGENT} ^catexplorador [OR]
RewriteRule ^.* - [F,L]
问题例如:
如果我想阻止这个" python"的所有版本(或所有代理人 包含该字符串),第二个代码是否有效?
名称区分大小写? (catexplorador vs CATExplorador vs CaTExplorador)
这些是正确的旗帜吗?
如何阻止"空白"用户代理? (推荐吗?)
答案 0 :(得分:2)
要阻止所有以python
OR catexplorador
开头并使其不区分大小写的代理,您可以使用:
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_USER_AGENT} ^(python|catexplorador) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^.* - [F,L]
答案 1 :(得分:0)
阻止特定用户代理的一个选项是使用此tutorial。
BrowserMatchNoCase python bad_bot
BrowserMatchNoCase catexplorador bad_bot
Order Deny,Allow
Deny from env=bad_bot
BrowserMatchNoCase
允许对用户代理进行不区分大小写的匹配。
第二种选择是使用SetEnvIfNoCase命令
SetEnvIfNoCase Referer "^$" bad_user
SetEnvIfNoCase User-Agent "python" bad_user
SetEnvIfNoCase User-Agent "catexplorador" bad_user
SetEnvIfNoCase User-Agent "^$" bad_user
Order Deny,Allow
Deny from env=bad_bot
此示例阻止空引荐(警告!未推荐)以及包含python
或catexplorador
的用户代理。您不希望阻止空引用,因为浏览器可以自动删除它们。它还使用最后一行阻止空用户代理。浏览器也可以自动执行此操作,具体取决于它们的配置方式。
附注:用户代理可以随意欺骗和更改,如果用户更改其用户代理,则无法保证阻止任何内容。
The BrowserMatch is a special cases of the SetEnvIf directive that sets environment variables conditional on the User-Agent HTTP request header.
BrowserMatch
只能检查用户代理,而SetEnvIf
可以检查其他参数。