ReCAPTCHA v3. Или как убить свой проект
Я знаю, что каждого из вас задолбали эти квадратики со светофорами. Все мы успокаивали себя мыслью, что когда-нибудь разрабы рекапчи все-таки вернутся в адекватность, возьмут такие, подумают чем там у них есть и как оптимизируют систему..
Здрасьте, знакомьтесь кто еще не знаком: reCAPTCHA v3!
Да, базара ноль. Светофоры из неë убрали.. беда в том, что из неë вообще всë убрали.

Пару слов, для не совсем знающих, что это вообще и куда.
ReCAPTCHA v2 нам всем хорошо знакома. Она сейчас повсюду. Когда вы клацаете в родной квадратик «Я не робот» — она сканирует вашу активность. И если появляется сомнения, что вы не робот — выдает картиночки, которые вам надо повыбирать. Дает, так сказать, возможность реабилитироваться.
В reCAPTCHA v3 же вообще ничего нажимать не надо. На странице еë вообще никак не видно. Она абсолютно автоматическая. Точно так же сканирует-оценивает тебя и если ей что-то не нравится, то всё. Просто тупо не дает тебе ничего сделать.
Т.е. вспомни все случаи когда v2 выдавала картиночки. Вот v3 — во всех этих случаях просто перекрывала бы кислород: «Проверка не пройдена». Досвидули. И ничë ты не сделаешь. Просто неть и всë. Выход там.

По заверениям балаболов маркетологов, v3 лучше справляется со спамом и всяким зловредом. Не спорю, возможно. Но вместе с тем она отсеивает и живой трафик. Причем отсеивает его куда лучше, чем роботный. Есть там пара лазеек для роботов (только тссс). Отсеивает живых людей, готовых тебе заплатить. И за которых ты, между прочим, сам уже заплатил.
И вот сидишь ты такой, удивляешься: Бабосов вроде вложили, трафик купили. Вроде и посещения есть. И на нужной кнопке даже задерживаются.. а звонков нет.. А по кочану. ReCAPTCHA v3 не пускает. И всë. Зато без спама.

И ладно, хрен с ними со всякими вшивыми лендингами. Не хочет хозяин зарабатывать — пускай как хочет.
Этой фигней начинают баловаться некоторые важные сервисы и тематические сети (не буду озвучивать). Которые нужны, но пользоваться ими тупо не возможно. Просто потому что админ далекий от самостоятельных размышлений, повелся на балаболов обзорщиков из ютубчика и влепил вот это.
Я знаю, что сейчас балаболы представители компании призовутся и расскажут нам, что её можно настроить и вообще всë очень радостно и полезно. Но давайте по чесному. Если делать паранойю минимум, то:
- Теряется смысл. Роботность обратно увеличивается.
- А часть живых людей всë так же заë..вается. При любом раскладе. Причем заë..вается именно самая активная часть — которая в интернете работает. Те кому капча постоянно выпадает. Т.е. вот мы с вами.
Да я знаю, что v2 легко обходится. Но это не повод закрывать свой сервис от живых людей!
Админы, если вас так заспамили, если v2 не справляется — на свете есть куча современных капч, в которых для прохождения, необходимо проявить человечность и знание языка (чтобы индусы не разгадывали). Либо которые технически сложно передать этим индусам. К примеру, решить какую-то простую логическую задачу или выполнить какие-то четкие действия. Опять же рекламировать их не буду. В Гугле всë есть.
Так же щас набегут умники, которые будут рассказывать что сам дурак. Что можно то-то сделать, другое сделать, текст не копипастить, браузер сменить, данные удалить, телефон выкинуть.. Нет, дорогие. Сервис должен работать нормально. Не должен посетитель е..аться с бубнами.
В конце принято говорить, что дело ваше, решать вам и т.п.
Я скажу иначе: Если ты создал сайт или софт. Любой. То ты создал нечто социальное. На тебя люди смотрят. И если ты этих людей посылаешь на х..й в тот момент, когда они пытаются с тобой связаться или дать тебе денег, то по итогу сам понимаешь, кто куда идет. А люди отворачиваются в сторону более адекватных сервисов.
Если не хочешь разориться — не используй reCAPTCHA v3!
Считай это личной просьбой.
Защита от спама c Google reCAPTCHA v3
Защита от спама комментариев и форм обратной связи, добавление Google reCAPTCHA v3 на WordPress сайт без плагина и с помощью плагина, оптимизация сайта по скорости после добавления reCAPTCHA v3 — этими вопросами займемся в данной статье. И, кстати, описанная в статье защита от спама успешно используется на данном сайте.
Содержание скрыть
Защита от спама
Защита от спама формы обратной связи подробно разбирается в статье: «WordPress Email. Настраиваем отправку писем«. Здесь же разберем защиту от спама комментариев. Ведь даже молодым сайтам приходится сталкиваться с тонной комментариев от спамеров, а вручную удалять спам очень уж трудоемко.
Лучший способ защиты от спама — это добавить на сайт капчу.
Google reCAPTCHA v3 против Google reCAPTCHA v2
Как же меня раздражает подтверждать, что я не робот, отмечая картинки со светофорами, пешеходными переходами или гидрантами. Это и есть Google reCAPTCHA v2. В отличие от нее Google reCAPTCHA v3 работает в фоновом режиме без какого-либо взаимодействия с пользователем. Пользователь ничего не видит и не вводит. ReCAPTCHA v3 анализирует действия пользователя и выдает числовую вероятность того, что пользователь является человеком или роботом.
Не будем раздражать пользователей своего сайта и добавим на сайт Google reCAPTCHA v3.
Капча и серверное кэширование
Серверное кэширование — это техника, которая позволяет сохранять копии динамически генерируемых веб-страниц на сервере и предоставлять их повторно клиентам без необходимости выполнения дорогостоящих операций обработки на сервере. Преимущества серверного кэширования — это улучшение производительности сайта и снижение нагрузки на сервер. На WordPress сайте серверное кэширование включается с помощью плагина WP Fastest Cache. Подробнее в статье: «Оптимизация WordPress. Ускоряем загрузку сайта«.
Серверное кэширование мешает работе обычной капчи, которая в виде картинки с текстом, который нужно пользователю ввести. Такая капча генерируется на сервере, а затем отправляется пользователю и отображается у него в браузере. При включенном серверном кэшировании в браузер пользователя попадает закэшированная старая капча, предназначенная совсем другому какому-то пользователю. И пользователю пройти проверку капчи становится невозможным.
Серверное кэширование не мешает работе Google reCAPTCHA v2. Это AJAX капча, которая получает задание для пользователя с сервера без перезагрузки страницы. А, следовательно, пользователь получает свое актуальное задание, а не закэшированное устаревшее задание другого пользователя, как в случае с обычной капчей.
Серверное кэширование так же не мешает работе Google reCAPTCHA v3. Поскольку, эта капча вообще не взаимодействует с пользователем, а только анализирует его действия.
Защита от спама с reCAPTCHA v3 и WordPress плагином
Добавить Google reCAPTCHA v3 на WordPress сайт можно с помощью плагина. Например, с помощью плагина Расширенная версия Google reCAPTCHA:

Но, к сожалению, при таком добавлении reCAPTCHA v3 на сайт производительность сайта сильно падает. Результаты тестирования производительности сайта смотрите в разделе «Тесты производительности сайта«. Поэтому, давайте добавим reCAPTCHA v3 на сайт без помощи плагинов, тем более, это не составит большого труда.
Защита от спама с reCAPTCHA v3 без плагина
Публичный ключ и секретный ключ reCAPTCHA v3
Чтобы добавить Google reCAPTCHA v3 на сайт, необходимо сначала получить ключи (публичный и секретный) от Google. Переходим по ссылке: https://www.google.com/recaptcha/admin/create, выбираем тип reCAPTCHA v3, указываем домен, на котором будет установлена капча, и нажимаем кнопку ОТПРАВИТЬ.

Публичный ключ (или ключ сайта) и секретный ключ получены:

Файл functions.php
Переходим в админ-панель WordPress сайта, на который устанавливаем reCAPTCHA v3, и выбираем меню Внешний вид и подменю Редактор тем.

Отредактируем файл functions.php. В конец файла добавим следующий код:
/*** Add reCAPTCHA v3 to Comment Section ***/ function add_recaptcha_script() < if ( is_singular( 'post' ) )< wp_enqueue_script( 'google-recaptcha', 'https://www.google.com/recaptcha/api.js?render=RECAPTCHA_PUBLIC_KEY', array(), null, true ); >> add_action( 'wp_footer', 'add_recaptcha_script' ); function add_recaptcha_jscode () < if ( is_singular( 'post' ) )< echo ' '; > > add_action( 'wp_print_footer_scripts', 'add_recaptcha_jscode' ); function add_recaptcha_field($submit_field) < $submit_field['comment_notes_before'] = ''; $submit_field['submit_field'] = 'This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.'; return $submit_field; > if (!is_user_logged_in()) < add_filter('comment_form_defaults','add_recaptcha_field'); add_filter('comment_form_default_fields', function($fields) < unset($fields['url']); unset($fields['email']); return $fields; >); > function verify_recaptcha_response() < $captcha = $_POST['g-recaptcha-response']; if(empty($captcha))< wp_die(__("Spam detected")); return; > $captcha_postdata = http_build_query( array( 'secret' => 'RECAPTCHA_PRIVATE_KEY', 'response' => $captcha, 'remoteip' => $_SERVER['REMOTE_ADDR'] ) ); $captcha_opts = array( 'http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $captcha_postdata ) ); $captcha_context = stream_context_create($captcha_opts); $captcha_response = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify", false, $captcha_context), true); if($captcha_response['success'] && $captcha_response['score'] > 0.5)< return; >else< wp_die(__("Spam detected")); > > if (!is_user_logged_in())
где RECAPTCHA_PUBLIC_KEY — это публичный ключ reCAPTCHA v3, выданный Google.
RECAPTCHA_PRIVATE_KEY — это приватный ключ reCAPTCHA v3, выданный Google.
По добавляемому в файл functions.php коду пояснения следующие:
- Функция add_recaptcha_script() добавляет скрипт reCAPTCHA, только если текущая страница является записью ( is_singular(‘post’) ). Добавляемый скрипт reCAPTCHA располагается по адресу: https://www.google.com/recaptcha/api.js?render=RECAPTCHA_PUBLIC_KEY .
- add_action( ‘wp_footer’, ‘add_recaptcha_script’ ) указывает WordPress, что функцию add_recaptcha_script нужно выполнить при выводе футера страницы. Это позволяет добавить скрипт reCAPTCHA в футер сайта.
- Функция add_recaptcha_jscode() добавляет JavaScript-код, только если текущая страница является записью ( is_singular(‘post’) ). Этот JavaScript-код обрабатывает клик по кнопке с идентификатором buttonSubmit . При клике на кнопку выполняется следующая логика: отменяется действие по умолчанию (предотвращается отправка формы), а затем выполняется функция reCAPTCHA. Токен reCAPTCHA помещается в скрытое поле с идентификатором g-recaptcha-response , а затем форма с идентификатором commentform отправляется.
- Через хук wp_print_footer_scripts функция add_recaptcha_jscode() добавит JavaScript-код непосредственно в футер сайта.
- Функция add_recaptcha_field() добавляет поле reCAPTCHA. Оно включает кнопку отправки комментария с идентификатором buttonSubmit , скрытое поле для хранения результата reCAPTCHA и ссылку на политику конфиденциальности и условия обслуживания Google. Ссылка нужна, чтобы, не нарушая условия использования, скрыть логотип reCAPTCHA, появляющийся в правом нижнем углу сайта и занимающий огромное количество места при просмотре сайта на мобильных устройствах.
- С помощью хука comment_form_defaults функция add_recaptcha_field() добавит поле reCAPTCHA в форму комментариев, но только для неавторизованных пользователей сайта.
- Функция verify_recaptcha_response() обращается для проверки к Google reCAPTCHA API ( https://www.google.com/recaptcha/api/siteverify ) и получает оценку ( score ) от 0.0 до 1.0. Значение 0.0 относится к роботу, значение 1.0 относится к человеку. Запрос на комментарий будет ободрен, если оценка превысит 0.5. В противном случае выводится сообщение об обнаружении спама.
- С помощью хука pre_comment_on_post функция verify_recaptcha_response() привязывается к событию отправки комментария.
Вот и все! Google reCAPTCHA v3 добавлена на сайт.
Скрываем логотип reCAPTCHA v3
Логотип reCAPTCHA v3 занимает много места на экране, еще и загораживает текст на сайте. На мобильных устройствах это особенно неудобно. Смотрите, как это выглядит на мобильном устройстве, например, на iPhone 12 Pro:
Чтобы не нарушить условия использования, скрыв логотип Google reCAPTCHA v3, мы уже добавили на сайт ссылку на политику конфиденциальности и условия обслуживания Google, когда редактировали файл functions.php.
Чтобы скрыть сам логотип Google reCAPTCHA v3, нужно добавить следующий код в файл стилей WordPress сайта:
.grecaptcha-badge
В моей теме WordPress сайта это делается, перейдя в меню Внешний вид, а затем в подменю Настроить:
Далее выбираем настройку Дополнительные стили и вставляем код:
Готово! Логотип Google reCAPTCHA v3 скрыт.
Оптимизация сайта по скорости
Асинхронная загрузка JS скрипта
Скрипт reCAPTCHA может загружаться асинхронно, т.е. независимо от основного потока выполнения страницы. Асинхронная загрузка скрипта reCAPTCHA не влияет на работоспособность самого скрипта, а производительность сайта при этом улучшается.
Давайте поменяем загрузку скрипта reCAPTCHA на асинхронную, т.е. в исходном коде страницы с reCAPTCHA строка:
должна будет поменяться на строку:
Добавим в конец файла functions.php следующий код:
function add_async_attribute($tag, $handle) < if ('google-recaptcha' === $handle) < $tag = str_replace(' src', ' async="async" src', $tag); >return $tag; > add_filter('script_loader_tag', 'add_async_attribute', 10, 2);
Здесь используется фильтр script_loader_tag для добавления атрибута async к скрипту reCAPTCHA.
В следующем разделе статьи узнаем, какой прирост производительности сайта дает асинхронная загрузка скрипта reCAPTCHA.
Тесты производительности сайта
Производительность сайта тестировалась с помощью онлайн сервиса Google Page Speed https://pagespeed.web.dev/. Привожу результаты тестирования только для мобильных устройств. Результаты для мобильных устройств более показательные.
Результат тестирования сайта без reCAPTCHA v3:

Результат тестирования сайта с reCAPTCHA v3, установленной с помощью WordPress плагина Расширенная версия Google reCAPTCHA:

А это результат тестирования сайта с reCAPTCHA v3, установленной без плагина:

А после проведенной оптимизации предыдущий результат улучшился:

Эффективность защиты от спама
Защита от спама, описанная в статье, работает на данном сайте и уже показала свою эффективность. За все время использования reCAPTCHA v3 на сайте не было получено ни одного спама ни в комментариях под статьями, ни в электронных письмах, отправленных из контактной формы раздела Контакты сайта.
Google предоставляет интересную статистику по используемой reCAPTCHA на сайте (https://www.google.com/recaptcha/admin/).

Количество запросов — это количество запросов к reCAPTCHA v3, которые сделал сайт, чтобы распознать пользователя сайта, робот он или человек. Темно-синим цветом обозначено количество запросов с высоким уровнем риска, т.е. от роботов-спамеров. Светло-синим цветом обозначено количество запросов с низким уровнем риска, т.е. от реальных людей. На графике Распределение оценок мы видим четкое разделение: все роботы-спамеры получают минимальную оценку (0.1), а реальные люди — максимальную (0.9). Такое четкое разделение говорит об эффективности алгоритма распознавания робот или человек.
Выводы
Эффективность описанной защиты от спама — 100%. Единственный минус — небольшое «проседание» скорости загрузки сайта. Поэтому, тестируйте, взвешивайте плюсы и минусы и принимайте решение. А в комментариях, пожалуйста, напишите, какую защиту от спама на сайте используете вы? Будет интересно!
Util::ReCaptcha3 — распознавание Google ReCaptcha v3
Этот парсер предназначен для использования в качестве подключаемого компонента в других парсерах, где может быть необходимо разгадывать Google ReCaptcha v3.
Принцип работы этого парсера заключается в отправке данных рекаптчи (это всегда sitekey и url страницы, на которой получена рекаптча) на сервис разгадывания и получения в ответ токена, состоящего и цифр и букв. Правильность разгадывания зависит только от сервиса разгадывания, как правило сервисы почти всегда разгадывают рекаптчи правильно.
Возможности
- Поддерживается работа с такими сервисами: AntiCaptcha, RuCaptcha, 2captcha, XEvil, CapMonster, CapMonster.cloud, CapSolver, captchas.io
- Возможность настраивать время ожидания ответа и задержку проверки статуса
Варианты использования
- Распознавание Google ReCaptcha v3 во встроенных парсерах, в которых опционально или обязательно необходимо разгадывать каптчи для получения результатов
- Распознавание Google ReCaptcha v3 в собственных JS парсерах
Запросы
Парсер принимает запросы вида:
Параметры разделяются пробелом и означают:
- sitekey — это sitekey рекаптчи, в некоторых сервисах он называется websitekey. Как правило, sitekey нужно получить из кода страницы и обычно он находится в урле подключаемого скрипта:
https://www.google.com/recaptcha/api.js?render=SITEKEY
Также sitekey в коде страницы может быть указан в качестве аргумента функции:
grecaptcha.execute(SITEKEY, ).
- url — страница, на которой находится рекаптча
Варианты вывода результатов
- $resp — ответ рекаптчи
- $error — если возникла ошибка, ее описание
Вывод токена рекаптчи
$resp
03AGdBq24qfVWiRMofkMHuxaaW024vkt2Oc4Nnt4WXs3PdV0fJlpDystp444u_rG8HvuJUgN3n-upnHJXeQODxHjn_X9JdRlKEzhDnatYyehxN00WDWN_37LKwdHOgER2TrdB7XBKqrz5rko_CGWea6R1Lfe3eKmkoOeHkTyn8H3ZI90wcSvZR8gSztvq5EZWpGdNgLq15w84F92-PR8S051gUH2Ls82An0N4iiAIcTFrOTQZizqfIjgVzCzqHhSaigIPGy6j8-3nt1sac7q6Xn26fKLsQzd4hZDmrlem5rNoK-IQHEb_AUJ6r4UxQZQ-z4hk9wPpzdeiCi81sxWEX5YI-cn4cWYFsoWutv_DYvZy87Iog7u1VELGWvjT3XwkY3MyDZzpUfauyCGSd5oouLDhV5YnRPfMm-gWQUSRpt28z5xbVbwGSAfmMLEpFboCgKZdUhb-IdAiKHGA4oSXB3RhOA9TQZR-ETVqyUG8A4wJEXdCvEHU7Uhw
Возможные настройки
Для выбора используемого сервиса используется параметр Provider.
Для онлайн сервисов (AntiCaptcha, RuCaptcha, 2captcha, CapMonster.cloud, CapSolver, captchas.io) обязательно нужно задать параметр Client key.
| Параметр | Значение по умолчанию | Описание |
|---|---|---|
| Client key | Ключ клиента для онлайн сервисов разгадывания | |
| Provider url | Урл провайдера, позволяет переопределить домен. Можно указывать несколько через запятую, парсер будет использовать каждый из них в случайном порядке. Может быть пустым, парсер автоматически использует нужный в зависимости от выбранного сервиса разгадывания | |
| Provider | AntiCaptcha | Сервис разгадывания |
| Wait between get status | 5 | Задержка между получением статуса |
| Max wait time | 300 | Максимальное время ожидания разгадывания |
| minScore | 0.3 | Минимальная степень доверия к результату. Подбирается экспериментально для каждого отдельного сайта. При обращении к сервису разгадывания определяет фильтр, по которому отбирается работник с нужным минимальным score |
| pageAction | Значение параметра action, которое передается в Google, и которое потом видит владелец сайта при проверке токена. Как правило указывается в качестве аргумента функции: grecaptcha.execute(‘sitekey’, ) | |
| isEnterprise | ☐ | Указывает сервису разгадывания что нужно решить эту рекапчу как Recaptcha Enterprise V3. Работает не во всех сервисах разгадывания |
Последнее обновление 27 дек. 2023 г.
- Обзор парсера
- Возможности
- Варианты использования
- Запросы
- Варианты вывода результатов
- Вывод токена рекаптчи
reCAPTCHA v3 — скрытая защита вашего сайта от спама

Уважаемые клиенты Мегагрупп.ру! Теперь все формы на вашем сайте защищены скрытой капчей. Пользователю больше не нужно вводить код, чтобы подтвердить, что он не робот — Google самостоятельно определит, подозрителен ли посетитель и, если это так, пользователю будет предложено заполнить капчу.
Как было раньше?
В каждом разделе, предполагающем работу с формой («Конструктор форм», форма заказа магазина, форма регистрации, комментарии к статьям или к товарам и т.д.) вы самостоятельно включали или выключали капчу. Соответственно, если капча была включена — пользователю на сайте перед отправкой формы нужно было ввести код или отметить галочку, подтверждающую, что он не робот. Старая настройка включения капчи
Что изменилось?
- Google по своим алгоритмам определяет, насколько надежен пользователь, заполняющий форму, и присваивает ему оценку.
- Если оценка у пользователя высокая — капчу заполнять не придется, форму можно отправить сразу.
- Если оценка низкая — на сайте отобразится капча и пользователю нужно будет подтвердить, что он не робот.
Какие разделы затронули изменения?
- Конструктор форм,
- Расширенный конструктор форм,
- Форма заказа в Магазине-2,
- Форма модуля «Вопрос-ответ»,
- Форма регистрации,
- Форма модуля «Прием платежей»,
- Комментарии к новостям, статьям, блогам, товарам в магазине,
- Форма отправки предложенных статей в модуле «Новости (статьи, блог)»,
- Отправка сообщений на форуме.
Как это влияет на мою работу с сайтом?
- Ваш сайт автоматически огражден от спама с помощью скрытой капчи.
- Дополнительно настраивать капчу для отдельных разделов не нужно, она уже работает везде.
- Старые настройки капчи скрыты, так как теперь не имеют смысла.
Иными словами, работа с системой управления стала проще, а защита сайта от спама — надежнее.