В данной статье расскажу, как я боролся с бесполезными ботами, которые напали на один из моих сайтов. Проанализируем источники трафика и рассмотрим сервисы защиты и расскажу про своё ПО борьбы с ботами.
Введение
Сразу к делу. Ниже представлено график посещаемости сайта до начал ботоэпидемии и во время неё.
С февраля 2024 года сильно возрос трафик с большим количеством отказов (Рисунок 2). Причем рост шел по всем каналам: прямые заходы, из поисковых систем, по ссылкам на сайтах. И далее в течении 2х месяцев снижался до нормального уровня, но только не прямые переходы.
Мне почему-то подумалось, что клиент купил поведенческий трафик, т.к. позиции в Яндексе значительно улучшились, но предположение о покупке ПФ не подтвердилось. Позже, со снижением посещаемости, снизились позиции в поиске. На графике видимости видно, что в феврале произошел скачок вверх, затем снижение, и далее в мае, скачок со снижением до конца года (Рисунок 3).
К слову, с 1 сентября был увеличен бюджет в Яндекс Директ, что положительно повлияло на позиции SEO-продвижения.
Мне поставили задачу избавиться от паразитного трафика.
Изучаем паразитный трафик
Давайте посмотрим, что это за трафик и как можно его отфильтровать.
Устройства
Сначала посмотрим какие устройства льют переходы. Для этого в Метрике захожу в Отчеты, Технологии, Устройства.
Здесь явно видно, что трафик идет с мобильных девайсов, а с июня появился трафик с телевизоров. Сам по себе бизнес клиента ориентирован на B2B сектор, в котором менеджеры ищут товар на рабочем месте, т.е. 99% трафика должно быть с ПК.
IPv4 и IPv6
Еще интересно с каких сетей заходили боты?
В данном графике я создал два сегмента: заходы с IPv4 и IPv6. В данном случае в метрике использовал фильтра "IP" и регулярные выражения ~\: и !~\:
IPv4 — это классические сети, состоят из четырех цифр от 0 до 255, например: 5.112.23.23, 127.0.0.1, 192.168.0.1 и т.п. Но из-за того, что диапазон таких сетей исчерпался, провайдеры стали выдавать IPv6, которые представляют из себя записи вида 2a0c:f5a0:1:3::4. Вся проблема в том, что IPv4-адреса стоят от 120рублей/шт, а IPv6 выдают блоками по 18 446 744 073 709 551 616 адресов абсолютно бесплатно. На данный момент IPv6 редко используются российскими провайдерами, а системы блокировок не обрабатывают такой трафик, так что при наличии у вас такого IP вы можете без проблем заходить на заблокированные сайты.
На графике видно, что основная часть ботов использует IPv6.
В целом, собрано достаточно информации чтобы заблокировать их. Если у Вас есть мысли, как еще отследить ботов, пишите в комментариях.
Как защититься от ботов?
Здесь рассмотрю несколько популярных сервисов и проблемы, связанные с их использованием.
Самый простой вариант защиты
Так как 65% нежелательного трафика поступает из IPv6 сетей, то можно просто отключить их на хостинге. Вариант хоть и простой, но не дешевый из-за возможности потери лидов и соответственно упущенной прибыли. Поэтому рассмотрим другие варианты.
Сервис Cloudflare
Это самый популярный сервис защиты от ботов и DDOS-атак. Есть бесплатный тариф на 5 правил фильтрации, но требуется передача всего DNS на их сервера. На каждое правило можно настроить показ капчи, автоматическую проверку или бан. Кэширует статику: картинки, js, css и другое. Можно подключить дополнительные фильтры, включая AI-антибот, а при необходимости подключить платный тариф с защитой от DDOS. IP данного сервиса часто блокируется Роскомнадзором, т.к. он популярен среди запрещенных сайтов. Коллеги часто жалуются на его работу и предлагают российскую альтернативу Killbot и АНТИБОТ.КЛАУД .
Сервис Killbot
Российский сервис, написанный частным лицом. Собирает информацию о посетителях, формирует слепки и через сутки вы уже сможете блокировать ботов. Есть два варианта установки: через подключение javascript-файла, и новый вариант, через DNS. При платной подписке, позволяет отправлять данные в Яндекс Аудитории и далее ограничить показ рекламы в Яндекс Директ для ботов. Мне данный сервис не понравился тем, что разработчик не рекомендует включать капчу, т.к. честным пользователям по ошибке она может показываться бесконечно. Возможно, эта проблема уже решена.
Сервис АНТИБОТ.КЛАУД
Сервис также написан частным лицом, но работает по другому в отличии от Killbot.
Позволяет настроить правила фильтрации пользователей по аналогии с Сloudflare WAF. Например, показывать каптчу для IPv6 или при наличии определенного совпадения в User-agent, что в целом и нужно, но меня смутило то, что сам сайт выдал каптчу Cloudflare при первом посещении, и я не нашел возможности исключить индексирующих роботов в автоматическом режиме.
Мой вариант защиты от ботов
По сколько я инженер-программист со стажем более 15 лет, то решил по-быстрому накидать свою систему защиты от ботов. Вся работа заняла три дня и еще пару дней на отладку и добавления дополнительного функционала, и 14 дней на тестирование эффективности и влияния на позиции в поисковых системах.
Алгоритм защиты схож с Cloudflare WAF, но работает локально на вашем хостинге и не требует внешних сервисов или базы данных. Не требует подписки или абонентской платы, открытый исходный код.
Основные фильтры:
- Белый список ip
- Индексирующие роботы (определяет полезных ботов по обратной DNS записи)
- Черный список ip
- Исключение по User-agent (для ваших ботов)
- Без JavaScript (блокировка)
- Без Cookie (блокировка)
- IPv6 (выводит капчу)
- Мобильный девайс (выводит капчу)
- Прямой заход (выводит капчу)
- Открытие сайта в iframe (бан)
- Заход из Tor-сети (бан)
Вкл/выкл каждого пункта настраивается в конфигурационном файле.
При заходе на сайт, пользователь проходит проверки на наличие в белом/черном списке, индексирующего бота и User-agent. Если ни одно из правил не сработало, то открывается страница заглушка (по аналогии с Сloudflare), в которой идут проверки по оставшимся правилам. Если все хорошо, пользователю устанавливается cookie-маркер и происходит переход на сайт, иначе отображается капча (Рисунок 7).
При успешном прохождении капчи, аналогично устанавливается маркер входа, она отключается на 14 дней (можно настроить). Так же можно отключить для авторизированных пользователей.
Результаты
После внедрения защиты, трафик сайта вернулся к нормальному уровню (Рисунок 8).
Более чем на 80% снизилась нагрузка на хостинг и базу данных. На графике так же можно заметить снижение паразитного трафика с рекламы (Яндекс Директ). Как оказалось это ретаргетинговая реклама на мобильные устройства. Незначительно снизился трафик из поисковой выдачи и других сайтов.
Как защита повлияла на позиции в поиске и конверсию? Напишу в другой статье — подпишись, чтобы не пропустить!
Для каких сайтов подходит данная защита:
- Wordpress, Joomla, 1С Битрикс, Opencart, Drupal, MODX, Netcat, самописная
- Для любых сайтов на PHP 5.6.4 и старше (тестировался на PHP 5.6.4 и 7.1.33)
Пример работы защиты от ботов: https://hubhost.ru/
Бесплатно скачать защиту от ботов можно по ссылке на гитхаб https://github.com/githubniko/antibot.git
Обсуждения бота в моем Телеграмме https://egorniko.ru/r/D5
Если вам нужно установить защиту от ботов, заказывайте мой кворк https://kwork.ru/website-repair/39914255/zashchita-sayta-ot-bespoleznykh-botov-nagruzok-i-atak
Надеюсь, найдутся специалисты, которые смогут улучшить ПО, и вместе мы сделаем использование ботов нерентабельным.
Поставить лайт и подпишись!