Block Bots with IIS 7.5 and 8.0
I would like to block a bot with IIS. With Apache you can add a command to your .htaccess file, as outlined here. How would I accomplish this with IIS 7.5?
Update
In addition to answer below, there are a total of approaches I discovered since posting this question:
- URL Scan option listed in the accepted answer.
- Define a Request Filtering rule (example below)
- Define a URL Rewriting rule (example below)
Request Filter Rule
URL Rewriting rule
For my last project I ended going with option 2 since it is security focused and based on the integrated URL Scan built into IIS 7.
3 Answers 3
Normally you use robots.txt. It will work on all well behaved bots.
For bots that are not well behaved there is often little you can do. You can limit connection counts or bandwidth in your firewall or webserver, but major bots will typically use multiple IP addresses. Limiting based on user-agent strings is usually not a good idea, as those are trivial for the bot to spoof, and bots that does not care about robots.txt have a tendency to spoof useragent strings as well. It works in the specific case when the bot sends a correct user agent, but does not obey the robots.txt.
Edit: If you really want to block based on useragent instead of pushing it back to your firewall or similar I think the easiest way is to use URLScan. You write a rule that looks something like this:
Как распознать и заблокировать «нехороших» ботов
Автор: Бен Гудселл (Ben Goodsell) – руководитель отдела поискового продвижения в RKG Merkle. Специалист в области технического SEO, имеет опыт продвижения сайтов в социальных медиа, специализируется на разработке стратегий контентного продвижения и линкбилдинге. Регулярно сотрудничает с крупными брендами.
Любому грамотному оптимизатору в своей профессиональной деятельности когда-либо доводилось анализировать лог-файлы для того, чтобы определить поведение поискового робота Googlebot. Однако мало кто представляет себе, насколько эффективным может оказаться этот подход для выявления нежелательных ботов, которые регулярно посещают сайт. Главная опасность таится в том, что эти роботы автоматически исполняют сценарий JavaScript, наводняя аналитику ложными данными, нанося вред ресурсу, незаконно копируя его контент и т.д.
Согласно данным ежегодного отчёта агентства Incapsula, доля неестественного трафика, поступающего на сайты, в среднем составляет 56%. При этом в 29% случаев боты, приходящие на ресурс, содержат вредоносное ПО и наносят заметный ущерб. В ходе исследования экспертная группа агентства проанализировала статистику 20 тыс. веб-сайтов разного масштаба за 90-дневный период. Наблюдения позволили выделить ещё один заметный момент: чем более крупный и узнаваемый бренд представляет сайт, тем более очевидной и желанной целью он становится для ботов.

Главная цель этой статьи – рассказать специалистам отрасли о том, с чего следует начинать аудит сайта по данному направлению и как грамотно анализировать лог-файлы при помощи Excel для выявления «недобросовестных» ботов и последующей их блокировки на уровне сервера. Также автор статьи расскажет о том, как устранить искажения в отчётах Google Analytics.
Находим лог-файлы
Как известно, сервер фиксирует все обращения к сайту и хранит их в виде текстового файла со списком. Не важно, заходит ли на сайт реальный пользователь (к примеру, через браузер Firefox) или же новые страницы ресурса сканирует Googlebot – все эти активности фиксируются в специальном файле. Расположение этих файлов зависит от типа сервера или хостинга.
Так, если владелец ресурса использует платную панель управления веб-хостингом cPanel, то файл, записывающий все обращения к сайту, будет располагаться под отдельной ссылкой:

В интерфейсе сервера Apache путь к файлу лога будет таким: /var/log далее в поддиректории следует запустить команду access.log – это позволит быстро обнаружить лог-файлы на сервере.
Если в качестве хостинга используется набор серверов от Microsoft IIS (Internet Information Services), то путь будет таким: Панель управления – Администрирование – Internet Information Services (IIS) Manager – Выбрать веб-сайт – после этого нужно правой кнопкой мыши кликнуть по вкладке Свойства – выбрать вкладку Веб-сайт – Свойства – Основные свойства. Для англоязычной версии продукта последовательность действий будет такой: Control Panel -> Administrative Tools -> Internet Services Manager -> Select website -> Right-click then Properties -> Website tab -> Properties -> General Properties tab.
Вычисляем количество хитов на один IP-адрес и считаем число заходов User Agent’ов
После того как все лог-файлы были обнаружены, необходимо объединить их в одном файле и загрузить в Excel любым удобным методом. Учитывая объёмы отдельных лог-файлов, сделать это зачастую бывает очень непросто. В то же время, чтобы проделать указанную выше операцию для небольших и средних сайтов, мощности одного стандартного компьютера будет вполне достаточно.
На практике набор действий сводится к следующей последовательности. Все файлы, расположенные в директории .log files, необходимо объединить и поместить в новый файл формата .txt, используя стандартный текстовый редактор. После этого нужно запустить Excel, разбив текст по колонкам, используя для разделения пробел и выравнивая впоследствии заголовки столбцов.

Рассчитываем количество хитов на один IP
После того как все логи собраны и объединены в таблице Excel, становится гораздо легче рассчитать количество загрузок страниц сайта на один IP-адрес.
Далее нужно выполнить действия в такой последовательности:
- Сформировать сводную таблицу, проанализировать количество Client IP и сделать расчёт.
- Затем необходимо скопировать полученную таблицу; переименовать существующие столбцы в «Client IP» и «Хиты»; отсортировать список по нисходящей; добавить колонку User Agent.

Вычисляем User Agent по IP
На заключительной стадии необходимо выявить потенциально опасных ботов. Для этого придётся установить, с какого IP-адреса осуществлял вход на сайт тот или иной User Аgent, и какой из роботов оказал на ресурс наибольшее негативное воздействие. Чтобы проделать эту операцию, необходимо повторно обратиться к сводной таблице и указать в качестве переменной User Аgent в каждую строку секции сводной таблицы (графа Row Label на рис. выше).
Теперь нахождение роботов Аgent с привязкой к IP станет гораздо более простой задачей. На скриншоте ниже видно, что User Agent с IP-адреса устройства, расположенного в Китае, заходил на сайт на 80 тысяч раз чаще, чем другие роботы.

Блокируем нежелательный IP-адрес
Ключевым этапом всей деятельности становится блокировка доступа к сайту User Agent’а с нежелательного IP-адреса, а также исключение этих данных из сервиса статистики.
Чтобы заблокировать статистику посещений с нежелательного IP в Google Analytics, придётся создать специальный фильтр. Для этого нужно войти во вкладку «Администратор» и выбрать пункт «Аккаунт» , в котором будет создаваться фильтр. Затем выбрать пункт «Фильтры», далее +Новый фильтр. После этого нужно переключиться на пункт «Встроенный» и выбрать стандартный тип фильтра: «Исключить трафик с IP-адресов» (Exclude traffic from the IP addresses). Далее в специальном поле можно перечислить все нежелательные IP.

Совет: Сервис Google Analytics автоматически блокирует данные, поступающие от всех известных краулеров из списка IAB. Чтобы сервис аналитики перестал учитывать переходы от этих роботов, достаточно обратиться к вкладке «Администратор» снизу от пункта меню «Посмотреть Настройки» можно увидеть раздел «Фильтрация роботов» («Bot Filtering») там же можно выбрать пункт «Exclude all hits from known bots and spiders». Самым правильным вариантом будет создавать новый фильтр всякий раз, когда вы меняете настройки профиля.
Если же владелец сайта использует аналитику от Omniture, исключить из статистики данные по нежелательным IP можно следующим способом:
- Опция Exclude by IP позволяет игнорировать данные для 50 IP-адресов.
- Опция Vista Rule предусмотрена для крупных компаний и позволяет увеличить число нежелательных IP.
- Функционал Processing Rule позволяет создавать специальные правила и блокировать данные о переходах на сайт с нежелательных IP.
Блокировка IP на уровне сервера
Аналогично тому, как вычисляется расположение лог-файлов, производится вычисление сервера, которому принадлежит конкретный IP-адрес, и осуществляется его блокировка.
При работе с cPanel имеет смысл воспользоваться возможностями IP Address Deny Manager. Нежелательные IP-адреса будут заблокированы навсегда.

Для Apache рекомендуется использовать модуль mod_authz_host, кроме него можно использовать .htaccess.
Те, кто пользуются IIS, могут заблокировать все нежелательные IP на уровне сервера в Open IIS Manager (Features View -> IPv4 Address and Domain Restrictions -> Actions Pane -> Add Deny Entry).
Итоги и выводы
Сегодня сторонние решения, предназначенные для выявления неестественного трафика на сайты и обнаружения ботов, позволяют делать это в режиме реального времени. При этом они умеют анализировать не только IP-адреса и коды юзерагентов, но и параметры HTTP-запроса, поведение робота на сайте и целый ряд других факторов.
Помимо подобных решений, владельцы ряда сайтов всё чаще применяют такой инструмент, как reCAPTCHA. Новая формула защиты от Google еще раз позволяет убедиться, что на сайт приходят реальные пользователи, а не роботы.
белый список, чтобы остановить нежелательных ботов, использующих IIS
В Apache вы можете заблокировать многих ботов, просто изменив файлы .htaccess на OPT-IN вместо OPT-OUT, в основном белый список вместо черного списка. Вы пускаете Google, Yahoo, MSN и т. д., а также IE, Opera, Firefox, Netscape и ВСЕ остальное по умолчанию. Прелесть здесь в том, что вам больше не нужно искать ботов, так как все, что идентифицирует себя как бот, будет отклонено.
Как мне добиться этого в IIS? Не могли бы вы указать мне пример? Спасибо!
HackRepair.com’s Bad Bots .htaccess in web.config for IIS
Jim Walker from HackRepair.com posted a 2016 version of his Bad Bots .htaccess on Pastebin. I offered Jim to translate his Bad Bots .htaccess to web.config, to be used with Windows Server IIS. And here it is, learn to protect your WordPress website with this web.config file!
Bad Bots web.config for Windows Server IIS
Just put the following content in a new text file, save as web.config and upload it to your website. Note, your hosting provider may have denied access to some settings, but basically all you need is IIS URL Rewrite.
Convert .htaccess to web.config easily with help from this post
My WordPress web.config on IIS
Not so long ago, I posted my WordPress web.config – that I have currently in use. It offers a lot of same functionality, therefore you’d best combine both web.config files into one.
Share this post:

About the author
Hi, my name is Jan. I am not a hacker, coder, developer or guru. I am merely a systems administrator, doing my daily SysOps/DevOps thing at clidn. With over 15 years of experience, my specialties include Windows Server, IIS, Linux (CentOS, Debian), security, PHP, websites & optimization.
13 thoughts on “HackRepair.com’s Bad Bots .htaccess in web.config for IIS”
A long shot, but if you could take a look at this post I’d really appreciate the help: https://forums.iis.net/p/1241163/2147153.aspx?p=True&t=636899562261243589
Bot blocking rule works on one machine but not on another. Most frustrating.
It allows Googlebot and bingbot but aborts requests from those useragents that mention one of a number of common bots that we have experienced.
Hi Peter,
I think that you need to use MatchAny in your condition tag if you use more than one HTTP_USER_AGENT line as input.
Hi, would it be possible to only allow the bots you want EX googlebot, bingbot, etc
then all others would be disallowed?
Hi Mary,
When working with user agents (the name of browsers), it is very hard to allow just a few and block all others. You’d have to know the user agent strings you want to allow, including yours and those of your visitors. Otherwise you and them can’t visit your site. Here is a list that’s probably not complete: https://deviceatlas.com/blog/list-of-user-agent-strings.
The web.config syntax would be something in the lines of (untested):
The negate=»true» makes this rule so that all not matching user agent strings are blocked.
nice work, thank you very much for sharing this.
I was just wondering, is there any special reason for the multiple input tags, or is it just for better readability ?
Well, for me “oBot” and “robot” blocked “uptimerobot” ( a free monitoring tool ).
So I thought instead of just removing those, I could change the condition to MatchAll, white list “uptimerobot” in one input with negate=”true” and black list everything else in second input….
Hi Ivan, thank you for your reaction! The multiple input tags are for readability. You can easily whitelist uptimerobot ‘s user agent the way you describe:
I haven’t tested this but it shouldn’t give a problem.
But do you think that the blocks at bingbot and others are due to the error ?
Hi Jan,
two question:
1) thats are blocked. Are bad spider ?
5.90.205.132 Mozilla/5.0+(Linux;+Android+5.0.1;+SAMSUNG+GT-I9515+Build/LRX22C)+AppleWebKit/537.36+(KHTML,+like+Gecko)+SamsungBrowser/4.0+Chrome/44.0.2403.133+Mobile+Safari/537.36 403 0 0 9
or
5.90.234.18 Mozilla/5.0+(Linux;+Android+4.4.4;+Vodafone+890N+Build/KTU84P)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/50.0.2661.89+Mobile+Safari/537.36 403 0 0 24
or
151.37.23.207 Mozilla/5.0+(Mobile;+Windows+Phone+8.1;+Android+4.0;+ARM;+Trident/7.0;+Touch;+rv:11.0;+IEMobile/11.0;+NOKIA;+Lumia+635;+Vodafone)+like+iPhone+OS+7_0_3+Mac+OS+X+AppleWebKit/537+(KHTML,+like+Gecko)+Mobile+Safari/537 403 0 0 71
2) thats are blocked. msnbot or bingbot are bad bot?
157.55.39.224 Mozilla/5.0+(compatible;+bingbot/2.0;++http://www.bing.com/bingbot.htm) 403 0 0 181
u can correct the rules for IIS ?
Can send me for email that correction ?
thanks
Hi Carlo, thank you for your questions.
1. I cannot find a common identifier -in this post- as to why the IP addresses 5.90.205.132, 5.90.234.18 and 151.37.23.207 got blocked. Maybe they triggered not an USER_AGENT match but a Query String (to revslider for example).
2. the web.confg code is provided AS-IS, and is an one-on-one translation of HackRepair.com’s .htaccess bad bots. The user-agent string Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) does belong to MSN bot, and is in HackRepair.com’s (and thus this) list. You can safely remove it, do a text search in your web.config for Msnbot and remove the occurrences.
Please note that a solution or piece of code never works in all thinkable situations, code is always posted “AS-IS”, and always test in non-production environments.
hi Jan,
i removed from the rules msnbot but nothing. Its blocked as bingbot (not found bingbot in the rules and cant remove it to resolve)
i removed all from the rule Query String (with revslider or as your example) but nothing
5.169.131.131 Mozilla/5.0+(Linux;+Android+5.0.1;+SAMSUNG+GT-I9505+Build/LRX22C)+AppleWebKit/537.36+(KHTML,+like+Gecko)+SamsungBrowser/4.0+Chrome/44.0.2403.133+Mobile+Safari/537.36 403 0 0 24
5.169.131.131 Mozilla/5.0+(Linux;+Android+5.0.1;+SAMSUNG+GT-I9505+Build/LRX22C)+AppleWebKit/537.36+(KHTML,+like+Gecko)+SamsungBrowser/4.0+Chrome/44.0.2403.133+Mobile+Safari/537.36 403 0 0 23
maybe the problem is to copy your code from the page to encoding issues .
In fact I found a character incorrectly and the server gave me error.
I deleted that character and the rule works but with the symptoms above .
( Maybe there is some other incorrect character and sends confusing the rule ? )
You can send it via email to a test.
Thank you
You’re correct. On line 39, next to “ CoolBott ” there is a non-ascii character. I’ve updated the post and removed the non-ascii character.
I found it using grep (for anyone interested):
This will give you the line number, and will highlight non-ascii characters in red (from Stack Overflow).
I found that the IPAdd user agent blocks iPads and iPhones. You may wish to remove it.
Hi Neal, thank you for your comment!
The 4.53.120.22 was somewhere in my blacklist (for as far as I can remember assigned to Websense and used as a annoying bot). Currently the IP address is assigned to Level 3 Communications, and may be used for Wi-Fi or other wireless network systems. You’re free to remove or change the line.
I’ve replaced 4.53.120.22 with 203.0.113.15, which is in a reserved testing block.
Comments are closed.
UmbHost — The Happy Hosting company, eco-friendly and Umbraco hosting.
Some links on this website are affiliate links to external businesses that provide me with a small commission every time someone subscribes for that service.