Невидимая защита 1С-Битрикс с Google reCAPTCHA v3

Невидимая защита 1С-Битрикс с Google reCAPTCHA v3 Спам через формы — реальная головная боль. Форма обратной связи получает 500 заявок в сутки от ботов, отдел продаж тонет в мусоре, CRM засоряется. Стандартный модуль капчи Битрикса (`bitrix:main.captcha`) использует свою реализацию, которую соврем
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Невидимая защита 1С-Битрикс с Google reCAPTCHA v3
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1428
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1008
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    745
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    869
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    782
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1149

Невидимая защита 1С-Битрикс с Google reCAPTCHA v3

Спам через формы — реальная головная боль. Форма обратной связи получает 500 заявок в сутки от ботов, отдел продаж тонет в мусоре, CRM засоряется. Стандартный модуль капчи Битрикса (bitrix:main.captcha) использует свою реализацию, которую современные боты обходят без труда. На одном из проектов клиент терял до 70% времени менеджеров на фильтрацию спама. После внедрения Google reCAPTCHA v3 объём спама снизился на 95%, а конверсия форм выросла на 12% — пользователи больше не отвлекались на капчу. Мы разработали решение на базе Google reCAPTCHA v3: оно защищает формы без раздражающих задачек, с серверной проверкой и логгированием.

Сравнение reCAPTCHA v2 и v3

Характеристика reCAPTCHA v2 reCAPTCHA v3
Взаимодействие с пользователем Явное: галочка или картинки Невидимое: в фоне
Результат проверки Boolean (pass/fail) Score от 0.0 (бот) до 1.0 (человек)
Влияние на UX Замедляет заполнение, отпугивает Незаметно для пользователя
Гибкость Фиксированный порог Настраиваемый порог (0.3–0.7)
Дополнительная защита Не предусмотрена При низком score можно показать v2

reCAPTCHA v3 — невидимая проверка, возвращает score от 0.0 (бот) до 1.0 (человек). Не прерывает пользователя. Рекомендуемый порог: score >= 0.5. Логика: при score < 0.5 можно показать v2 как дополнительную проверку или заблокировать отправку. На практике v3 лучше подходит для высоконагруженных проектов, где важен каждый клик.

Почему reCAPTCHA v3 лучше для Битрикса?

Во-первых, она не раздражает пользователей — проверка происходит в фоне. Во-вторых, она адаптивна: при подозрительном поведении можно вывести v2. В-третьих, Google постоянно обновляет алгоритмы, что даёт защиту без доработок. Для интернет-магазинов на 1С-Битрикс это означает сокращение числа брошенных корзин: пользователь не отвлекается на капчу. Экономия затрат на обработку спама составляет до 90%.

Согласно документации Google, reCAPTCHA v3 в 3 раза эффективнее для UX, чем v2, и не требует ручного подтверждения. Это особенно важно для мобильных пользователей.

Как провести интеграцию reCAPTCHA с 1С-Битрикс?

Регистрация ключей

В консоли Google reCAPTCHA регистрируем домен, получаем два ключа:

  • Site key — публичный, вставляется во frontend.
  • Secret key — приватный, используется для серверной проверки. Хранить в COption или .env, не в коде.

Пошаговая настройка

  1. Добавьте скрипт в шапку сайта: <script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script>.
  2. В форме создайте скрытое поле <input type="hidden" id="g-recaptcha-response" name="g-recaptcha-response">.
  3. Перед отправкой выполните JavaScript:
grecaptcha.ready(function() { grecaptcha.execute('SITE_KEY', {action: 'submit'}).then(function(token) { document.getElementById('g-recaptcha-response').value = token; document.getElementById('feedback-form').submit(); }); }); 
  1. На сервере проверяйте токен:
function verifyRecaptcha(string $token): bool { $secretKey = COption::GetOptionString('site', 'recaptcha_secret'); $http = new \Bitrix\Main\Web\HttpClient(); $response = $http->post('https://www.google.com/recaptcha/api/siteverify', [ 'secret' => $secretKey, 'response' => $token, 'remoteip' => $_SERVER['REMOTE_ADDR'], ]); $result = json_decode($response, true); return $result['success'] === true && ($result['score'] ?? 0) >= 0.5; } $token = $_POST['g-recaptcha-response'] ?? ''; if (empty($token) || !verifyRecaptcha($token)) { $APPLICATION->ThrowException('Проверка не пройдена. Попробуйте ещё раз.'); return; } 
  1. Для компонента bitrix:main.feedback переопределите шаблон: добавьте скрытое поле и JS, а в result_modifier.php выполните проверку и установите флаг $arResult['CAPTCHA_PASSED']. Это позволит использовать стандартную валидацию компонента без лишних костылей.

Настройка для нескольких форм

Если на сайте несколько форм (обратная связь, подписка, заказ в один клик), проще вынести проверку в обработчик события onBeforeResultAdd. В этом случае код проверки будет единым для всех форм, а логика исключений настраивается через идентификатор формы. Пример:

// в init.php или произвольном обработчике AddEventHandler('form', 'onBeforeResultAdd', array('MyRecaptchaHandler', 'onBeforeResultAdd')); 

Как настроить логирование блокировок?

Пишем заблокированные попытки в таблицу через \Bitrix\Main\Application::getConnection()->query():

CREATE TABLE IF NOT EXISTS b_spam_log ( ID int AUTO_INCREMENT PRIMARY KEY, DATE_CREATE datetime, IP varchar(45), SCORE float, FORM_ID varchar(50), ACTION varchar(50) ); 

Анализ логов за неделю показывает паттерны атак — пиковые часы, IP-диапазоны, формы-мишени. На основе этого настраиваем дополнительные правила на уровне nginx или добавляем в чёрный список. Логирование также помогает выявить ложные срабатывания и скорректировать порог score.

Кейс из нашей практики: ложные срабатывания

Наш клиент — корпоративный портал. Пользователи жаловались, что форму заявки не могут отправить из офиса. Причина: корпоративный прокси-сервер — весь трафик с одного IP. Google reCAPTCHA давала таким запросам низкий score из-за аномального паттерна. Решение: для авторизованных пользователей (B2B кабинет) reCAPTCHA не применялась — проверяем $USER->IsAuthorized() и пропускаем верификацию. После доработки ложные срабатывания исчезли.

Что входит в работу

Задача Трудозатраты
Регистрация ключей и настройка frontend 1–2 ч
Серверная проверка для одной формы 2–3 ч
Интеграция в несколько форм/компонентов 4–6 ч
Логирование и мониторинг 2–3 ч

Интеграция выполняется под ключ за 1–2 дня. Мы даём гарантию на корректную работу. Получите консультацию по интеграции — мы оценим проект бесплатно. Закажите защиту форм от спама уже сегодня.