Я пытаюсь заблокировать запросы от определенного бота. Я добавил правило фильтрации запросов, но я знаю, что он все еще попадает на сайт, потому что он отображается в 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 следует исправить.