XAB - антибот на PHP

XAB (XTOOL AntiBot) - простой, легкий и очень быстрый антибот на php и файлах бд Sqlite.
  • Защищает от спам ботов
  • Защищает сайт от блокировки сайта в РСЯ
  • Невидим для посетителя
  • Не задерживает открытие страницы (работает локально)
  • Не выкидывает капчу
  • Не мешает индексации сайта поисковиками
  • Не требует сложных настроек (установка копированием + include)
  • Использует MAX возможных обновляемых черных списков
  • Гибкие настройки: блокировать, не показывать рекламу и тп..

XAB использует одну из самых больших баз черных (и серых) списков айпи адресов и обновляет её в онлайн режиме. Используется как собственный список, так и blacklists из инернет источников.

При разрабтке антибота продумано наиболее эффетивное хранение данных - антибот работает на маленьких файлах SQlite (конкретный файл зависит от IP адреса посетителя, каждая подсеть обращается к своей маленькой базе данных) - в итоге он работает практически без ощутимых потерь в скорости загрузки страницы:

Благодаря блокировке на позднем этапе (непосредственно в программном коде страницы) имеется возможность гибких настроек - например, не только полностью блокировать страницу, но и не показывать рекламу на ней в зависимости от индивидуальных условий.

Про РСЯ:

Собственно для защиты от бана в РСЯ он и создавался первоначально. Все началось с "вечного" бана в РСЯ одного из сайтов по причине действий третих лиц, а именно из-за резкого наплыва сингапурских ботов:

Никакие объяснения по факту ни к чему не приводят:

Поискали среди приемлимых вариантов антиботов. Варианты с капчами, тормозящие сайт и мешающие нормальной индексации решения были отметены сразу. Оставались с виду неплохие и даже бесплатные варианты оберток над фаерволом iptables , но тут обнаружились 2 главные проблемы:

  1. Несмотря на заявленные ежедневные обновления, многие очень важные списки фактически не обновляются иногда по полгода (потому что предлагают свои платные продукты защиты)
  2. Это критично, так как сотни новых спам адресов появляюся ежедневно.
  3. Конкретный спамбот который еще не попал в черные списки легко занесет ваш сайт в бан РСЯ используя всего один или несколько айпи
  4. Нельзя выключить только показ рекламы при подозрении на спам, обрубается полностью сетевой трафик
  5. Сложно ограничить трафик, не мешая поисковым ботам

В итоге было решено делать свою защиту, работающую как по спискам так и в реальном времени. Первоначальная версия была совсем простой - ограничивала количество посещений с одного айпи. Это направление получило дальнейшее развитие, которое вылилось в текущий программный продукт. Сделали обновления платными, чтобы как то оправдывать дальнейшую поддержку всего этого.

Кстати насчет того сайта в РСЯ - в итоге его разбанили через несколько месяцев (несмотря на "вечный" бан): По статистике эти же боты посещали сайт также агрессивно еще не раз, но 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

Выберите подходящий тарифный план на обновления антибота
(отличие в размере скидки)
СКИДКА 0%
500 баллов
₽500
Обновления на 166 дней (чуть меньше полгода)
СКИДКА 5 %
10000
₽9524
Обновления на 3333 дня (~ 9+ лет)
СКИДКА 7 %
15000
₽14019
Обновления на 5000 дней (~ 14 лет)
СКИДКА 2 %
3000
₽2941
Обновления на 1000 дней (~ 3 года)
SAVE 10%
25000
₽22727
Обновления на 8333 дня (~ навсегда)
Без обновлений
БЕСПЛАТНО
По умолчанию при регистрации
На любом тарифе:
Бесплатная техническая поддержка
Нет подписок, обновления пока не кончатся баллы
Нет ограничений по количеству сайтов
Гибкие индивидуальные настройки
Общая база данных ip
После установки на вашем сервере будет доступен также скрипт просмотра статистики , которая выглядит примерно так(на данный момент):