Документация на модуль abcwww.antispam для CMS 1С-Битрикс
Модуль для защиты от заполнения форм ботами и как следствие защита от спама.Преимущества:
- Спасет от 99% ботов. Успешно работает на множестве проектов.
- Ни каких капчей, ни каких подключений внешних скриптов типа reCAPTCHA, все работает локально без внешних ресурсов.
- Возможность включения модуля только для выбранных сайтов, если используете многосайтовость.
- Если основной функционал не справляется, то можно настроить второй барьер защиты с гибкими настройками.
- Возможность использовать модуль на кастомных формах.
Установка:
Стандартная установка модуля из MarketPlace для CMS 1С-Битрикс (ссылка на модуль).
Настройка модуля
После установки модуля перейдите в административную панель 1С-Битрикс:
Настройки → Настройки продукта → Настройки модулей → Антиспам для web-форм
Также страницу настроек можно открыть по адресу:
/bitrix/admin/settings.php?lang=ru&mid=abcwww.antispam&mid_menu=1
1. Основная защита форм
На вкладке «Настройки (Сайт ...)» можно включить антиспам-защиту для следующих типов форм:
- Веб-формы — формы, созданные с помощью компонента bitrix:form.result.new.
- Формы регистрации — компоненты bitrix:system.auth.registration и bitrix:main.register.
- Формы восстановления пароля — компонент bitrix:system.auth.forgotpasswd.
Для каждого типа форм защита включается независимо. Также можно указать сообщение об ошибке, которое будет выводиться при отклонении отправки формы антиспам-фильтром.
Если используется многосайтовость, настройки основной защиты задаются отдельно для каждого сайта.

2. Дополнительный фильтр
На вкладке «Дополнительный фильтр» находятся дополнительные механизмы защиты, которые можно использовать совместно с основной антиспам-проверкой.
Ограничение количества отправок формы
Позволяет ограничить количество отправок форм одним пользователем за определённый промежуток времени.
- Диапазон времени — период, в течение которого учитывается количество отправок.
- Максимальное разрешенное количество отправок формы за выбранный диапазон времени — предельное количество отправок за указанный период. Значение 0 отключает ограничение.
Если пользователь достиг установленного лимита, последующие попытки отправки формы отклоняются до тех пор, пока количество отправок за контролируемый период не станет меньше установленного ограничения.
Проверка HTTP_REFERER
При включении этой настройки модуль дополнительно проверяет источник запроса на отправку формы. Если источник отсутствует или не соответствует текущему сайту, отправка отклоняется.
Обратите внимание, что некоторые браузеры, настройки конфиденциальности и политики безопасности могут ограничивать передачу HTTP_REFERER. Поэтому перед включением этой проверки рекомендуется убедиться, что она не мешает работе форм у обычных посетителей.
Определение IP-адреса пользователя
В зависимости от конфигурации веб-сервера, использования обратного прокси-сервера (например, Nginx), балансировщика нагрузки или CDN реальный IP-адрес посетителя может передаваться через различные серверные переменные и HTTP-заголовки.
Выберите вариант, при котором правильно определяется IP-адрес посетителя. Если правильный IP-адрес отображается в первом варианте, обязательно выберите именно его.
Дополнительное скрытое поле
Модуль может добавлять в форму специальное поле, невидимое для обычного посетителя. Если бот автоматически заполнит это поле, отправка формы будет отклонена.
При необходимости можно указать собственное имя скрытого поля.

3. Обязательное подключение защиты к формам
ВНИМАНИЕ!!! Если антиспам-защита включена для определённого типа форм, необходимо добавить вызов метода \Bitrix\Abcwww\Antispam\WebForm::init() в каждую защищаемую форму этого типа.
Без вызова данного метода отправка защищаемой формы будет отклоняться!!!
Метод необходимо вызывать внутри HTML-тега <form>, в любом удобном месте.
Например, в шаблоне компонента bitrix:form.result.new вызов можно разместить между выводом заголовка и подвала формы:
<?
//Начало шаблона
...тут какой то код...
?>
<?=$arResult["FORM_HEADER"])?>
<?
//...тут какой то код...
?>
<?\Bitrix\Abcwww\Antispam\WebForm::init()?>
<?
//...тут какой то код...
?>
<?=$arResult["FORM_FOOTER"]?>
<?
...тут какой то код...
//Конец шаблона
?>
После внесения изменений проверьте отправку каждой защищаемой формы, чтобы убедиться в корректной работе антиспам-фильтра.
4. Использование в кастомных формах
Модуль также поддерживает защиту форм, разработанных без использования стандартных компонентов 1С-Битрикс.
Для таких форм предусмотрены методы \Bitrix\Abcwww\Antispam\WebForm::init(), \Bitrix\Abcwww\Antispam\WebForm::check() и \Bitrix\Abcwww\Antispam\WebForm::addLog(), позволяющие подключить защиту, проверить отправленные данные и учитывать успешные отправки при использовании ограничения их количества.
Подробное описание каждого метода приведено в разделе «Методы».
Методы:
- \Bitrix\Abcwww\Antispam\WebForm::init()
- \Bitrix\Abcwww\Antispam\WebForm::check()
- \Bitrix\Abcwww\Antispam\WebForm::addLog() (Только для кастомных форм)
Метод \Bitrix\Abcwww\Antispam\WebForm::init()
Назад к методамОбязательный
Вызов метода располагается в шаблонах стандартных компонентов 1С-Битрикс, выбранных в настройках модуля форм, внутри тега <form>
Он задает служебную информацию для формы, без него форма отправляться не будет!!! (см. Настройки модуля)
Метод \Bitrix\Abcwww\Antispam\WebForm::check()
Назад к методамТолько для кастомных форм
Проверяет отправленные данные формы с помощью антиспам-фильтров модуля, включая дополнительные проверки, включённые в настройках.
Метод необходимо вызывать до обработки и сохранения данных формы.
Возвращаемые значения:
- true — проверка успешно пройдена, обработку формы можно продолжить.
- false — проверка не пройдена, отправку формы необходимо отклонить.
Пример использования:
<?
if (\Bitrix\Abcwww\Antispam\WebForm::check()) {
// Проверка пройдена, можно обрабатывать данные формы
} else {
// Проверка не пройдена, отклоняем отправку формы
}
?>
Метод \Bitrix\Abcwww\Antispam\WebForm::addLog()
Назад к методамТолько для кастомных форм
Регистрирует успешную отправку формы для учёта количества отправок и контроля установленного ограничения.
После успешной отправки формы необходимо вызвать данный метод для регистрации отправки. Модуль сохраняет IP-адрес пользователя и время отправки формы. Эти данные используются дополнительным фильтром защиты для контроля количества отправок за заданный промежуток времени и блокировки последующих попыток при превышении установленного лимита.
Пример использования:
<?
\Bitrix\Abcwww\Antispam\WebForm::addLog();
?>
Важно: использование метода имеет смысл только в том случае, если в настройках «Дополнительный фильтр» заданы оба параметра: Диапазон времени и Максимальное разрешенное количество отправок формы за выбранный диапазон времени
Если ограничение количества отправок не настроено, вызов метода не требуется.
