Інтеграція 1С-Бітрікс з Google reCAPTCHA

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з Google reCAPTCHA
Середня
~1-2 тижні
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція 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)) {
    // Логуємо спроbu спаму, повертаємо помилку
    $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 год