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

ale*_*exp 6 iis-7.5 request-filtering

我正在尝试阻止来自某个机器人的请求。我添加了一个请求过滤规则,但我知道它仍在访问网站,因为它显示在 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>
Run Code Online (Sandbox Code Playgroud)

这是我试图阻止的用户代理的一个例子。

Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:13.0;+GomezAgent+3.0)+Gecko/20100101+Firefox/13.0.1
Run Code Online (Sandbox Code Playgroud)

在某些方面它似乎有效。如果我使用 Chrome 来欺骗我的用户代理,我会得到 404,正如预期的那样。但是机器人流量仍然出现在我的分析中。我错过了什么?

Pet*_*orf 8

我假设你拿了字符串:

Mozilla/5.0+(Windows+NT+6.1;+WOW64;+rv:13.0;+GomezAgent+3.0)+Gecko/20100101+Firefox/13.0.1
Run Code Online (Sandbox Code Playgroud)

从 IIS 日志。在日志中,空格字符表示为加号 (+) 字符。

真正的用户代理字符串是:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0; GomezAgent 3.0) Gecko/20100101 Firefox/13.0.1
Run Code Online (Sandbox Code Playgroud)

所以从你的 denyStrings 部分删除+应该可以解决它。