用户代理的 IIS 请求过滤规则

用户代理的 IIS 请求过滤规则

我正在尝试阻止来自某个机器人的请求。我添加了请求过滤规则,但我知道它仍然会访问该网站,因为它会显示在 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部分应该可以修复它。

相关内容