Bitrix recaptcha v3

Каптча которая установлена в Битриксе по умолчанию устарела. Уже много лет ее с легкостью распознают боты и как следствие сыпется спам с форм. Поэтому часто возникает задачка , как поставить «новую» Google  Recaptcha v3.  Разумеется без маркетплейса Битрикса. Расписываю пошагово.

1. для начала на сайте https://www.google.com/recaptcha/admin зарегить сайт который будем защать от спама. Выбрать последнюю recaptcha v3 и получить 2 ключа

2. Подключить к форме на  Bitrix, которую будем защищать — гугловский javascript. Стандартную каптчу отключить. А код recaptcha v3 подключем в component_epilog.php компонента с формой.

И кусок кода ответственный за запуск проверки из документации

Этот кусок из документации практически всегда не работает по умолчанию 🙂

В моем случае в инструментах разработчика постоянно вылетала ошибка Uncaught ReferenceError: grecaptcha is not defined. Обращение к api.js занимает время, и когда пытаюсь запустить проверку, объект grecaptcha еще не существует. Попытка загрузить api.js в самом начале страницы, тоже ничего не давала. Документация по recaptcha v3 пакостная. В итоге все заработало только когда сделал вызов через callback функцию. При отладке проще было работать присваивая токен, скрытому полю.

И код для recaptcha v3 в итоге получился такой.

После того как заработало на «клиенте» делаем серверную часть. Там все попроще. Ищем где на bitrix сайте обработчик формы и в него добавляем проверку от рекапчи.

$decoded_response->score это вероятность бот-человек. Экспериментировал в нескольких броузерах и с разных компов, гугл дает мне обычно 0.8-0.9. А спамботы на тестовых сайтах обычно выдают 0.1-0.2.

Вот так выглядит статистика на форме прикрытой от спама рекапчей на одном из рабочих bitrix сайтов у клиента

bitrix recaptcha v3

Я при проверке в коде выставил, пропускать письма при score 0.5 но на некоторых сайтах можно выставлять и выше. Пока что recaptcha v3 справляется со спамом весьма успешно.

You may also like...