我正在尝试阻止来自某个机器人的请求。我添加了请求过滤规则,但我知道它仍然会访问该网站,因为它会显示在 Google Analytics 中。这是我添加的过滤规则:
<security>
<requestFiltering>
<filteringRules>
<filteringRule name="Block GomezAgent" scanUrl="false" scanQueryString="false">
<scanHeaders>
<add requestHeader="User-Agent" />
</scanHeaders>
<denyStrings>
<add string="GomezAgent+3.0" />
</denyStrings>
</filteringRule>
</filteringRules>
</requestFiltering>
</security>
这是我尝试阻止的用户代理的一个示例。
Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:13.0;+GomezAgent+3.0)+Gecko/20100101+Firefox/13.0.1
在某些方面,它似乎有效。如果我使用 Chrome 欺骗我的用户代理,我会得到 404,正如预期的那样。但机器人流量仍显示在我的分析中。我错过了什么?
答案1
我假设你拿了字符串:
Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:13.0;+GomezAgent+3.0)+Gecko/20100101+Firefox/13.0.1
来自 IIS 日志。日志中的空格字符以加号 (+) 表示。
真正的用户代理字符串是:
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0; GomezAgent 3.0) Gecko/20100101 Firefox/13.0.1
因此删除+从您的denyStrings部分应该可以修复它。