Некоторое время назад я писал здесь про антиспам для 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 — пишите в комментариях, разберем конкретные случаи.

