Анти Бот для 1C Битрикс: как антиспам для WordPress обзавёлся родственником на Битриксе

от автора

Некоторое время назад я писал здесь про антиспам для WordPress – историю о том, как из недоступного клиентам Cloudflare и дырявых бесплатных решений родился свой плагин геоблокировки, а чуть позже – вторую часть с разбором критики и рассказом, что успело поменяться. В конце самой первой статьи была одна проходная фраза: «параллельно ведется разработка аналогичного решения для 1С Битрикс – задача там несколько сложнее архитектурно, но подход тот же». С тех пор модуль доехал до Маркетплейса, обзавелся парой обновлений и первыми покупателями. Расскажу, что получилось – и почему для Битрикса такая защита понадобилась даже раньше, чем для WordPress.

Как боты гонялись за одним конкретным клиентом

Я давно веду поддержку нескольких сайтов на Битриксе, и с одним из клиентов эта история началась задолго до всяких модулей. Сначала банили диапазоны IP через .htaccess – руками, по мере поступления жалоб. Работало, пока список не разросся: .htaccess не резиновый, а на каждый чих перечитывать конфиг Apache не то чтобы хочется. Перешли на iptables – стало быстрее и надежнее, но появились свои лишние движения: консоль, перезапуски служб, а временами и работа через vim (кто в теме – тот вздрогнул). Апофеозом было то, что раз в какое-то время к серверу подключался штатный админ клиента и одним махом «тушил» весь список блокировок – то ли по незнанию, то ли решив, что он мешает. И все начиналось заново.

Отдельно стояла капча от самого Битрикса – штатная, встроенная. Проблема в том, что даже в официальной документации по ней прямо сказано: она не решает проблему спама и ботового трафика, это скорее косметическая мера. То есть штатных средств формально хватало «для галочки», а по факту – нет.

Почему Битрикс запросил защиту раньше, чем WordPress

Пока у клиентов оставался доступ к Cloudflare, WordPress-сайты жили спокойно: прокси гасил основную массу мусора еще на подступах. С Битриксом все вышло куда болезненнее. Движок гораздо чувствительнее к самому факту проксирования – начинают сыпаться авторизации, сессии, оплата. То есть ровно та защита, которая должна была все упростить, для части клиентов на Битриксе превращалась в источник новых тикетов в поддержку. Добавьте сюда .htaccess, fail2ban, iptables и капчу-для-галочки – и станет понятно, почему запрос на нормальный Анти Спам для Битрикс назрел у этого клиента раньше, чем у владельцев блогов на WordPress.

Совпадение почти день в день

Забавно, что запрос на модуль для Битрикса пришел буквально за неделю до публичной выгрузки плагина для WordPress на маркетплейс – и от тех же клиентов, чьи сайты я поддерживаю. Тот случай, когда две параллельные истории неожиданно сходятся в одной точке.

Поскольку основа – логика геоблокировки, списки, подход к JS-проверке вместо капчи – уже была обкатана на WordPress, собрать модуль для Битрикса оказалось быстрее, чем начинать с нуля. Но легкой прогулки все равно не вышло. Отдельным квестом стали требования к структуре самого модуля и пакетов обновлений (Битрикс тут довольно строг и специфичен), нюансы подключения к Маркетплейсу, адаптация под PostgreSQL – часть корпоративных инсталляций Битрикса работает именно на нем, а не на привычном MySQL – и, конечно, модерация по безопасности. Она временами по-настоящему раздувает из мухи слона: не то чтобы это плохо (лишняя проверка безопасности лишней не бывает), но нервов и итераций отняла заметно.

Что в итоге получилось (без лишней техники)

Не буду подробно расписывать реализацию – не хочу раскрывать внутреннюю кухню, да и не в этом суть статьи. По сути Анти Бот для 1C Битрикс закрывает тот же набор задач, что и WordPress-версия, но с поправкой на архитектуру Битрикса:

  • блокировка трафика по странам, ASN и собственным черным/белым спискам IP;

  • вместо капчи – собственная JS-проверка (слайд-пазл), которая не раздражает живых пользователей так, как классическая капча;

  • поддержка мультисайтовости «из коробки» – актуально, потому что на Битриксе один модуль часто обслуживает сразу несколько сайтов в рамках одной установки;

  • работа как на MySQL, так и на PostgreSQL;

  • совместимость с любыми редакциями БУС и с Битрикс24, начиная с PHP 8.0.

Отдельно старался, чтобы модуль не превращался в очередной «WAF, который сам стал проблемой» – то есть без агрессивного fail-open поведения, когда при сбое внешних сервисов защита просто отключается и пропускает все подряд.

Текущий статус

Модуль уже доступен публично на Маркетплейсе Битрикса, у него есть несколько десятков скачиваний и уже реальные покупки. Отзывов пока нет, жалоб – тоже, но вижу это в основном по своим клиентам: сам Маркетплейс, увы, не показывает список сайтов, где установлен модуль, так что провести полноценный опрос пользователей возможности нет.

Если у вас Битрикс и вы хотите протестировать модуль и поделиться впечатлениями – буду рад обратной связи. Ищется на Маркетплейсе по названию «Анти Бот – защита сайта (антиспам) от нежелательного трафика, спама, ботов».

Куда дальше

Как и в случае с WordPress, в планах – своя система оценки пользователя: поведенческие сигналы, куки, история запросов по сайту. Один из практических примеров – отсекать трафик, который на каждый запрос меняет User-Agent, но при этом остальные параметры (IP, ASN, паттерн запросов и так далее) остаются неизменными. Живой пользователь так себя не ведет, а вот скрипт, перебирающий список UA «для маскировки», – вполне.

Сейчас как раз тестирую модуль на сайтах с заметной долей зарубежного трафика, где грубая гео-отсечка не работает вообще: нельзя просто поставить капчу на все страны, кроме России – под раздачу попадут реальные покупатели и партнеры. Тут приходится работать точечно, в первую очередь опираясь на IP и ASN, дополнительно – на User-Agent, а в перспективе все сильнее смещаясь в сторону поведенческого анализа.

Из более близких обновлений – локальное хранение не только гео-базы (как сейчас), но и базы ASN. Это должно снизить зависимость от внешних запросов и ускорить принятие решений на лету.

Если у вас есть похожий опыт борьбы с ботами и спамом на Битриксе – или, наоборот, вопросы про Анти Спам для Битрикс и чем он отличается от штатной капчи и связки fail2ban + iptables – пишите в комментариях, разберем конкретные случаи.

ссылка на оригинал статьи https://habr.com/ru/articles/1072726/