BotBan

Как защитить сайт от ботов: разбор способов и их цены

Пять способов по порядку: от бесплатных и почти бесполезных до рабочих. И честный счёт, во что каждый обходится — не в рублях, а в потерянных заявках.

4 мин чтения

Сначала стоит договориться о том, что такое «защитить». Полностью убрать автоматический трафик невозможно и не нужно: поисковые роботы, сервисы мониторинга, краулеры соцсетей — это тоже боты, и без них сайт станет хуже. Задача другая: отсечь тех, кто вредит, и не задеть ни людей, ни полезных роботов.

Дальше — способы, от самых дешёвых к самым рабочим.

robots.txt

Первое, что советуют в интернете, и первое, что не работает.

robots.txt — это просьба, а не запрет. Его соблюдают поисковые роботы, потому что заинтересованы в хороших отношениях с сайтами. Парсер, написанный ради вашего каталога, этот файл проигнорирует — а заодно прочитает как подсказку, где лежит самое интересное.

Что делает: упорядочивает работу добросовестных роботов. Против вредных ботов: ничего.

Блокировка по User-Agent

Следующий шаг — запретить в конфиге сервера обращения с подозрительными именами: python-requests, curl, Scrapy.

Это уже что-то. Простые скрипты действительно отсекаются, а написать такое правило можно за пять минут. Проблема в том, что User-Agent подделывается одной строкой кода, и любой, кто столкнулся с блокировкой, поменяет его на строку от Chrome.

Второй риск серьёзнее: широкое правило может задеть нужного робота. Строка bot в правиле заблокирует и Googlebot, и TelegramBot.

Что делает: отсекает самых ленивых. Риск: легко случайно заблокировать поисковик.

Блокировка по IP

Работает, пока адресов немного. Один назойливый парсер с одного адреса блокируется в две минуты.

Но у способа два тяжёлых недостатка. Первый: адреса меняются, а резидентные прокси дают боту тысячи разных адресов из сетей обычных провайдеров. Второй, куда более опасный: за одним адресом часто стоит много разных людей. Мобильные операторы выпускают абонентов в интернет через общий выход, и за одним адресом МТС может быть целый район. Заблокировав его, вы выключаете сайт для тысяч живых людей и об этом не узнаете.

Что делает: решает точечные проблемы. Риск: высокий — можно отрезать целый город.

Капча

Самый популярный ответ и самый дорогой для владельца сайта. Капча работает: большинство простых ботов её не проходят. Но цена — время и нервы каждого посетителя.

Исследования конверсии дают разброс, но направление всегда одно: каждый дополнительный шаг между «хочу оставить заявку» и «отправил» стоит части заявок. Больше всего страдают те, кто заходит с телефона, и те, кто плохо видит: картиночная капча для человека со слабым зрением — это барьер, который он часто не берёт.

Отдельно стоит сказать, что серьёзные боты капчу давно решают. Существуют сервисы распознавания за копейки, и целевая атака на ваш сайт капчей не останавливается.

Что делает: отсекает массовые простые атаки. Цена: платит покупатель, а не бот.

Антибот-сервис

Логика другая: не задавать вопрос посетителю, а посмотреть на него. Признаков, отличающих программу от человека, десятки — от набора заголовков запроса до того, двигал ли посетитель мышью. Каждый по отдельности ничего не доказывает, но вместе они дают уверенный ответ.

Главное преимущество: обычный человек ничего не замечает. Проверка показывается только в спорных случаях, а решение принимается за миллисекунды.

Главный риск: ошибка антибота стоит дороже, чем пропущенный бот. Заблокированный покупатель уходит навсегда и, скорее всего, не поймёт почему. Поэтому при выборе сервиса смотрите не на обещанную точность распознавания, а на то, что происходит при ошибке:

  • Можно ли посмотреть, кого он блокирует, до того, как включить блокировку? У BotBan для этого есть обязательная неделя наблюдения.
  • Видно ли, почему принято решение? Если сервис не показывает сработавшие признаки, разобраться в ошибке невозможно.
  • Что произойдёт, если сервис ляжет? Правильный ответ — сайт продолжит работать без защиты. Неправильный — сайт станет недоступен.
  • Блокирует ли он адреса мобильных операторов? Если да — рано или поздно потеряете район.

С чего начать

Если бюджета нет совсем: закройте админку по IP, поставьте ограничение попыток входа и уберите с сайта то, что не должно быть публичным. Это даст процентов двадцать результата бесплатно.

Если задача серьёзнее — начните с наблюдения. Прежде чем что-то блокировать, узнайте, сколько у вас автоматического трафика и какого. Часто оказывается, что проблема не там, где казалось.

Читайте также