Интеграция 1С-Битрикс с Google reCAPTCHA

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с Google reCAPTCHA
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с Google reCAPTCHA

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

reCAPTCHA v2 vs v3

v2 — пользователь ставит галочку или решает задачу (выбрать светофоры). Встраивается явным виджетом. Защита надёжная, но ухудшает UX.

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

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

В консоли Google reCAPTCHA (https://www.google.com/recaptcha/admin) регистрируем домен, получаем два ключа:

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

Подключение на frontend

В шаблоне сайта в <head>:

<script src="https://www.google.com/recaptcha/api.js?render=SITE_KEY"></script>

Перед отправкой формы получаем токен:

grecaptcha.ready(function() {
    grecaptcha.execute('SITE_KEY', {action: 'submit'}).then(function(token) {
        document.getElementById('g-recaptcha-response').value = token;
        document.getElementById('feedback-form').submit();
    });
});

Скрытое поле g-recaptcha-response передаётся на сервер вместе с данными формы.

Серверная проверка в Битриксе

В обработчике формы (до записи в базу и отправки в CRM):

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;
}

Интеграция со стандартными компонентами Битрикса

Для компонента bitrix:main.feedback — переопределяем шаблон компонента в /bitrix/templates/[шаблон]/components/bitrix/main.feedback/[вариант]/. Добавляем скрытое поле и JS-код в template.php. В result_modifier.php выполняем проверку токена и устанавливаем переменную $arResult['CAPTCHA_PASSED'].

Для кастомных Ajax-форм — проверка выполняется в контроллере или обработчике компонента до любых операций с данными.

Логирование и анализ блокировок

Пишем заблокированные попытки в таблицу через \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.

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

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

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