Невидимий захист 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