XAB - антибот на PHP
- Защищает от спам ботов
- Защищает сайт от блокировки сайта в РСЯ
- Невидим для посетителя
- Не задерживает открытие страницы (работает локально)
- Не выкидывает капчу
- Не мешает индексации сайта поисковиками
- Не требует сложных настроек (установка копированием + include)
- Использует MAX возможных обновляемых черных списков
- Гибкие настройки: блокировать, не показывать рекламу и тп..
При разрабтке антибота продумано наиболее эффетивное хранение данных - антибот работает на маленьких файлах SQlite (конкретный файл зависит от IP адреса посетителя, каждая подсеть обращается к своей маленькой базе данных) - в итоге он работает практически без ощутимых потерь в скорости загрузки страницы:
Благодаря блокировке на позднем этапе (непосредственно в программном коде страницы) имеется возможность гибких настроек - например, не только полностью блокировать страницу, но и не показывать рекламу на ней в зависимости от индивидуальных условий.
Про РСЯ:
Собственно для защиты от бана в РСЯ он и создавался первоначально. Все началось с "вечного" бана в РСЯ одного из сайтов по причине действий третих лиц, а именно из-за резкого наплыва сингапурских ботов:
Никакие объяснения по факту ни к чему не приводят:
Поискали среди приемлимых вариантов антиботов. Варианты с капчами, тормозящие сайт и мешающие нормальной индексации решения были отметены сразу. Оставались с виду неплохие и даже бесплатные варианты оберток над фаерволом iptables , но тут обнаружились 2 главные проблемы:
- Несмотря на заявленные ежедневные обновления, многие очень важные списки фактически не обновляются иногда по полгода (потому что предлагают свои платные продукты защиты) Это критично, так как сотни новых спам адресов появляюся ежедневно.
- Конкретный спамбот который еще не попал в черные списки легко занесет ваш сайт в бан РСЯ используя всего один или несколько айпи
- Нельзя выключить только показ рекламы при подозрении на спам, обрубается полностью сетевой трафик
- Сложно ограничить трафик, не мешая поисковым ботам
В итоге было решено делать свою защиту, работающую как по спискам так и в реальном времени. Первоначальная версия была совсем простой - ограничивала количество посещений с одного айпи. Это направление получило дальнейшее развитие, которое вылилось в текущий программный продукт. Сделали обновления платными, чтобы как то оправдывать дальнейшую поддержку всего этого.
Кстати насчет того сайта в РСЯ -
в итоге его разбанили через несколько месяцев (несмотря на "вечный" бан):
По статистике эти же боты посещали сайт также агрессивно еще не раз, но anti bot справился:
Похоже в рекламной сети Яндекса существует неплохая система анализирующая качество трафика. Одно уточнение - код рекламных объявлений с сайта не снимали после бана.
Инструкция по установке
1) Если не установлен SQlite - установите по ssh
sudo apt install sqlite3 -y
sqlite3 --version
2) Скачать архив и распаковать на сервере в папке
3) Прописать в конфиг файле xab_conf.php логин и пароль доступа к сервису xtool.ru и другие глобальные опции
$xab_cfg_tmp = [
"xtool_login"=>'*****@ya.ru',
"xtool_pass"=>'************',
"count_ban"=>true, //баним по количеству, false - баним только ботов
"ii_ban"=>false, //банить ии ботов
"max_count_ip"=>48, //c 1 айпи
"max_count_octet"=>100 //блокировать по октету с количеством (если нет в блэклисте)
];
4) Подключить антибот в коде (в index.php, в шаблоне и т.п.
include_once '/home/admin/www/conf/xab/antibot.php';
5) При необходимости добавить условие в месте подключения рекламы или др. блоков
<? if (empty($stop_adv)){?> <!-- Yandex.RTB --><script>window.yaContextCb=window.yaContextCb||[]</script><script src="https://yandex.ru/ads/system/context.js" async></script ><?}?>.... и по аналогии в местах непосредсвенного вывода блоков ?>
6) При необходимости(!) перед include (пункт 4) можно прописать индивидуальные для сайта настройки антибота:
$xab_cfg = [
"ii_ban"=>true, //банить ии ботов
"max_count_ip"=>15, //c 1 айпи
"max_count_octet"=>30, //блокировать по октету с количеством (если нет в блэклисте)
...
];
Быстрый антибот PHP - XAB