Skip to content

Защита от ПФ ботов, которые умеют эмулировать браузер, JavaScript, а так же классических ботов.

Notifications You must be signed in to change notification settings

githubniko/antibot

Repository files navigation

Инструкция

1745503945878

Данная программа предназначена для блокировки ботов, которые умеют эмулировать браузер, JavaScript, а так же классических ботов.

Программа проверяет посетителя по настроенным фильтрам, и в зависимости от результата выводит капчу, блокирует или пропускает пользователя.

Основные фильтры:

  • Белый список ip
  • Индексирующие роботы (определяет полезных ботов по обратной DNS записи)
  • Черный список ip
  • Исключение по User-agent (для ваших ботов)
  • Исключение по REQUEST_URI (например для JSON и REST API)
  • Без JavaScript (блокировка, кроме исключений)
  • Без Cookie (блокировка, кроме исключений)
  • IPv6 (показ капчи)
  • Мобильный девайс (показ капчи)
  • Открытие сайта в iframe (блокировка)
  • Переход из Tor-сети (блокировка)
  • Отсутствует User-Agent (блокировка)

Вкл/выкл каждого пункта настраивается в конфигурационном файле.

При первом открытии страницы, программа проверяет совпадения из белого/черного списков, список индексирующих робот, user-agent. Если ни одно из правил не сработало, то открывается страница заглушка, в которой делаются дополнительные проверки, требующие определённое время. В процессе проверки отображается индикатор прогресса. В зависимости от результатов, страница может попросить пользователя пройти капчу (сейчас работает только простая капча) или же заблокировать его.

Программа обеспечивает максимальную производительность, не использует базу данных и другие ресурсозатратные операции.

Быстрый старт

  1. Распакуйте файлы проекта в папку /antibot/
  2. Перейдите по адресу https://сайт.рф/antibot/ и убедитесь, что нет ошибок
  3. Вставьте следующую строку в начало вашего кода. Обычно это index.php в корне сайта
require_once $_SERVER['DOCUMENT_ROOT'].'/antibot/index.php';
  1. Проверьте работу сайта
  2. Готово

Белый список

Файл /lists/whilelist содержит список исключений ip-адресов.

Пример:

2001:0db8::85a3:8a2e:0370:7334 #пример для IPv6

5.24.102.211 # пример для IPv4

Черный список

Файл /lists/blacklist содержит список заблокированных ip-адресов. В этот список обычно попадают пользователи, которые пытались каким-ли образом обойти механизм проверки на роботность.

Пример файла:

32.23.104.201 # c5b4c36d24417e72 iframe 32.23.104.202 # c5b4c26d24417e73 iframe

В данном примере указан IP-адрес, RayID для удобства поиска и комментарий. В данном случае, причина добавления — запуск сайта во фрейме.

User-agent список

Файл /lists/useragent.rules содержит список разрешающих совпадений User-agent

Можно писать регулярные выражения. Правила проверяются поочередно до первого срабатывания.

REQUEST_URI список

Файл /lists/wl_request_url.rules содержит список исключений URL адресов и параметров.

Например:

  • /wp-json/ будет пропускать REST API запросы в Wordpress
  • реглярное выражение .*\.xml$ будет пропускать все xml файлы.

Правила проверяются поочередно до первого срабатывания.

Индексирующие роботы

Файл /lists/indexbot.rules содержит список PTR индексирующих роботов. Указывается домен первого уровня.

IP-адреса ботов автоматически добавляются в whilelist для улучшения производительности.

Отдача 404 заголовка в капчу

Можно настроить отдачу 404 заголовка при отображении капчи. Это позволить отсеять ботов, которые обрабатываю 404 ошибку. Для этого установите следующее значение в TRUE.

$AB_IS_404 = TRUE;

Лог-файл и отладка

Каждое посещение записывается в лог-файл antibot.log. Тут можно отследить процесс фильтрации и понять причину блокировки. Чтобы отключить логирование измените переменную в файле vars.inc.php.

$AB_DEBUG=false;

Отключение логирования повышает скорость фильтрации, т.к. нет необходимости лишний раз записывать данные на диск.

Как разблокировать пользователя

Для разблокировки, пользователь должен сообщить RayID, который отображается внизу страницы. Используйте его, чтобы найти запись блокировки в blacklist и для поиска процесса обработки в лог-файле.

Для каких сайтов подходит данная защита

  • Wordpress, Joomla, 1С Битрикс, Opencart, Drupal, MODX, Netcat, самописная
  • Для любых сайтов на PHP 5.6.4 и старше (тестировался на PHP 5.6.4 и 7.1.33, 8.3.15)

Автор ПО

EgorNiKO

About

Защита от ПФ ботов, которые умеют эмулировать браузер, JavaScript, а так же классических ботов.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published