Невидимий захист 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
    1441
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1013
  • 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
    751
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    873
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    791
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1153

Невидимий захист 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 дні. Ми даємо гарантію на коректну роботу. Отримайте консультацію з інтеграції — ми оцінимо проект безкоштовно. Замовте захист форм від спаму вже сьогодні.