阻止用户代理

时间:2018-11-29 20:46:53

标签: mod-rewrite apache2

有人可以告诉我如何使用apache2 mod rewrite或任何其他方法阻止以下用户代理,

wait for condition

1 个答案:

答案 0 :(得分:0)

要使用mod_rewrite阻止Apache vHost中的特定用户代理,您可以执行以下操作:

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} "=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1"
RewriteRule . - [F]

对于来自该确切用户代理的任何请求,这将禁止403。

通过在 CondPattern RewriteCond指令的第二个参数)前面加上=,使其成为字典字符串比较(即精确匹配),而不是正则表达式。因为我们要匹配的字符串包含空格,所以必须在双引号周围

F标志等效于R=403。不需要L标志,因为它返回非3xx(或2xx)状态时会被暗示

  

更新:我们是否可以添加通配符条目,例如Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1的最后一部分不断更改/A1E1

是的,但是您需要将上述 CondPattern 更改为正则表达式。

例如:

RewriteCond %{HTTP_USER_AGENT} "^Mozilla/5\.0 (Windows NT 6\.1; WOW64; rv:63\.0) Gecko/20100101 Firefox/"

以上内容与开始 Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/的所有用户代理匹配,因此保留了user-agent变量的结尾。

请注意,由于现在这是一个正则表达式,因此任何特殊的正则表达式元字符都需要反斜杠转义。在此示例中,这似乎只是点(.)。周围的双引号仍然可以用来避免必须转义空格。