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

Спам через формы способен завалить отдел продаж и засорить CRM, отнимая время на фильтрацию мусора. Мы разрабатываем невидимую защиту на базе Google reCAPTCHA v3, которая блокирует ботов без раздражающих задачек для пользователей. Наша команда реализует интеграцию под ключ — от настройки серверной проверки до последующей поддержки, обеспечивая надёжную работу форм.

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

Интеграция с 1ССредний~1-2 недели
Часто задаваемые вопросы

Невидимая защита 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 дня. Мы даём гарантию на корректную работу. Получите консультацию по интеграции — мы изучим задачу и подготовим оценку проекта. Закажите защиту форм от спама уже сегодня.

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060
  • Разработка виджета онлайн-записи на прием для медицинского центра
    Разработка виджета онлайн-записи на прием для медицинского центра
    837
  • Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    928
  • Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    865
  • Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1223