阻止用户代理 [英] Blocking user agent

查看:26
本文介绍了阻止用户代理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人能告诉我如何使用apache2mod重写或任何其他方法来挡路以下用户代理吗?

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:63.0) Gecko/20100101 Firefox/A1E1

推荐答案

要在Apache vHost中使用mod_rewrite重写特定用户代理,您可以执行如下操作:

RewriteEngine On

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

这为来自该用户代理的任何请求提供403禁止服务。

regex(第一个参数)^(字符串开始断言)对于每个请求都是成功的。而替换字符串(第二个参数)中的单个-(连字符)表示没有替换(我们只是阻止请求,而不是重写URL)。

通过在CondPattern(RewriteCond指令的第二个参数)前加上=使其成为字典序字符串比较(即.完全匹配),而不是正则表达式。由于我们要匹配的字符串包含空格,因此需要用双引号括起来。

F标志相当于R=403L标志不是必需的,因为它在返回非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/的任何用户代理匹配,因此留下用户代理变量的末尾。

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

这篇关于阻止用户代理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆