Apache 这是阻止我在日志中找到的用户代理的正确方法吗?
我想阻止我在服务器日志中看到的几个代理, 他们在日志中的确切姓名是,例如:Apache 这是阻止我在日志中找到的用户代理的正确方法吗?,apache,.htaccess,security,mod-rewrite,block,Apache,.htaccess,Security,Mod Rewrite,Block,我想阻止我在服务器日志中看到的几个代理, 他们在日志中的确切姓名是,例如: pythonurllib/2.6 pythonurllib/2.7 CATExplorador/1.0beta(domini dot cat的系统;http://domini.cat/catexplorador.html) 我见过,但不知道如何实施, 如果它完全像它们出现的那样: RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^Python-urllib/2.6 [OR
pythonurllib/2.6
pythonurllib/2.7
CATExplorador/1.0beta(domini dot cat的系统;http://domini.cat/catexplorador.html)
我见过,但不知道如何实施,
如果它完全像它们出现的那样:
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
开头的所有代理,并使其不区分大小写,可以使用:
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{HTTP_USER_AGENT} ^(python|catexplorador) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule ^.* - [F,L]
阻止特定用户代理的一个选项是使用此选项
BrowserMatchNoCase
允许对用户代理进行不区分大小写的匹配
第二个选项是使用命令
此示例阻止包含python
或catexplorador
的空引用程序(警告!不推荐使用)和用户代理。您不想阻止空引用,因为浏览器可以自动删除它们。它还阻止使用最后一行的空用户代理。浏览器也可以自动执行此操作,具体取决于它们的配置方式
旁注:用户代理可以被欺骗并随意更改,如果用户更改其用户代理,则这不能保证阻止任何操作
BrowserMatch是setenif指令的一个特例,它根据用户代理HTTP请求头设置环境变量。
BrowserMatch只能检查用户代理,而setenif
可以检查其他参数。谢谢。使用第一个代码模式的动机是什么?e、 g,他为什么不使用你的模式?B他还获得了Bot\mailto:craftbot@yahoo.com
-你的方法会如何阻止它(恐怕(bot
也会阻止googlebot)?c.是否(pytho
包括python
,也会阻止它?a)使用regex支持比编写这么多单独的RewriteCond
行要好。b)对于可以编写的阻塞:RewriteCond%{HTTP_USER_AGENT}^(python | catexplorador | Bot\mailto:craftbot@yahoo\是的,会的。代码中是否有表示“通配符”的内容,即ab |
将阻止abc
和abjjjd
?我在试着理解逻辑。B“regex”是您的|
方法吗?C第二个答案提出了一些不同的规则,你怎么看?谢谢a) 在正则表达式中,^ab
表示匹配任何以ab
开头的字符串,因此它匹配abc
,abc123
等。b)是的
表示或在正则表达式中c)是的,这是一种替代方法,但我更喜欢mod_rewrite
规则,因为它更强大,功能更丰富。谢谢!我该如何阻止一个“空白”特工?你推荐它吗?(它们似乎总是我日志上的黑客工具)谢谢,但我有点困惑,你能解释一下BrowserMatch Vs.SetEnvIF Vs.RewriteCond吗?最佳实践是什么?为什么?(我不想阻止空白引用,但确实认为最好阻止空白代理)在我的回答中,BrowserMatch是setenif指令的一个特例,它根据用户代理HTTP请求头设置环境变量。
BrowserMatch
只能检查用户代理,而setenif
可以检查其他参数。
BrowserMatchNoCase python bad_bot
BrowserMatchNoCase catexplorador bad_bot
Order Deny,Allow
Deny from env=bad_bot
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