Назад | Перейти на главную страницу

Правило фильтрации запросов 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, как и ожидалось. Но трафик ботов все еще отображается в моей аналитике. Что мне не хватает?

Полагаю, вы взяли строку:

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

из журналов IIS. В журналах пробелы представлены как знаки плюса (+).

Настоящая строка User Agent:

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

так что удаление + из раздела denyStrings следует исправить.