Regra de filtragem de solicitação do IIS para o agente do usuário

3

Estou tentando bloquear solicitações de um determinado bot. Eu adicionei uma regra de filtragem de solicitações, mas sei que ela ainda está atingindo o site porque aparece no Google Analytics. Aqui está a regra de filtragem que adicionei:

<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>

Este é um exemplo do agente do usuário que estou tentando bloquear.

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

De certa forma parece funcionar. Se eu usar o Chrome para falsificar meu agente de usuário, recebo um 404, como esperado. Mas o tráfego de bot ainda está aparecendo na minha análise. O que estou perdendo?

    
por alexp 24.10.2013 / 17:54

1 resposta

6

Eu assumo que você pegou a string:

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

dos logs do IIS. Nos espaços de registros, os caracteres são representados como caracteres de mais (+).

A string real do User Agent é:

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:13.0; GomezAgent 3.0) Gecko/20100101 Firefox/13.0.1

então remover o + da sua seção denyStrings deve corrigi-lo.

    
por 24.10.2013 / 18:11