Google reCAPTCHA v3 — Обзор невидимой защиты от ботов

Если вам когда-либо приходилось нажимать «Я не робот» или с трудом выбирать каждый пожарный гидрант в сетке изображений, значит, вы уже сталкивались с reCAPTCHA v2. reCAPTCHA v3 — это ответ Google на жалобы пользователей, для которых такой опыт является раздражающим: полностью невидимая система обнаружения ботов на основе балльной оценки, которая защищает ваш сайт, не требуя от пользователей вообще ничего.
В этом руководстве объясняется, как google recaptcha v3 работает изнутри, чем она отличается от своей предыдущей версии, как выглядит ее интеграция на практике и какое место в этой картине занимают такие инструменты, как CapMonster Cloud.
Как работает reCAPTCHA v3
reCAPTCHA v3 работает полностью в фоновом режиме, что принципиально отличает ее от любых предыдущих подходов к CAPTCHA. Никаких головоломок, никаких флажков и никаких прерываний действий пользователя — вместо этого система Google непрерывно отслеживает поведение пользователя и присваивает оценку риска каждому взаимодействию на вашем сайте.
Механизм оценки
Когда страница загружается с активной библиотекой recaptcha v3 javascript, Google начинает пассивно собирать широкий набор поведенческих и средовых сигналов. К ним относятся:
- Движения мыши и шаблоны кликов — насколько естественно и плавно пользователь перемещается по странице
- Поведение при прокрутке — время, скорость и направление прокрутки
- Динамика нажатия клавиш — ритм и темп набора текста
- Метрики времени на странице — как долго длится сессия до выполнения действия
- Репутация IP-адреса — связан ли IP с известными ботами, дата-центрами, VPN или прокси
- Отпечаток браузера — тип устройства, ОС, версия браузера, установленные плагины, разрешение экрана
- Аккаунт Google и история браузерной активности — если пользователь вошел в сервис Google, этот межсайтовый сигнал существенно повышает точность оценки
Все эти сигналы подаются в модель машинного обучения Google, обученную на огромных объемах человеческого и бот-трафика. В результате формируется оценка от 0.0 до 1.0, которая возвращается вашему backend каждый раз, когда срабатывает защищенное действие.
Примечание: в бесплатном тарифе reCAPTCHA v3 предоставляет только четыре дискретных уровня оценки (0.1, 0.3, 0.7 и 0.9). Полный диапазон из 11 уровней (0.0–1.0) требует привязки платежного аккаунта к вашему проекту Google Cloud.
В таблице ниже показаны сложившиеся в сообществе интерпретации оценок. Google официально рекомендует начинать с порога 0.5 и настраивать его с учетом особенностей вашего трафика — приведенные ниже поддиапазоны являются соглашениями среди разработчиков, а не жестко определенными уровнями от Google:
Если reCAPTCHA v3 присваивает пользователю низкую оценку, обычно лучше не блокировать его сразу. Вместо этого стоит рассматривать сессию как более рискованную и запускать дополнительную проверку, например визуальную CAPTCHA, подтверждение по email, одноразовый код или многофакторную аутентификацию. Для чувствительных действий, таких как вход, регистрация или оформление заказа, вы также можете замедлить обработку запроса, ограничить повторные попытки или при необходимости отправить случай на ручную проверку. Такой подход помогает уменьшить число ложных срабатываний, защитить легитимных пользователей и обеспечить более гибкий баланс между безопасностью и пользовательским опытом.
Система меток действий
Ключевой архитектурной особенностью recaptcha v3 google является параметр action. Каждый раз, когда вы вызываете grecaptcha.execute(), вы передаете именованную строку действия — например, login, register, checkout или contact_submit. Эта метка:
- Встраивается в токен, который отправляется вашему backend
- Включается в ответ верификации от Google recaptcha v3 api
- Используется для построения аналитики оценок по каждому действию в консоли администрирования reCAPTCHA
Это означает, что ваш backend может проверить не только факт возврата оценки, но и то, что эта оценка соответствует именно тому действию пользователя, которое вы собирались защитить, — предотвращая атаки с повторным использованием токена, при которых бот генерирует токен на странице с низким риском, а затем воспроизводит его на странице с высоким риском.
Жизненный цикл токена
После вызова grecaptcha.execute() возвращается одноразовый токен, действительный ровно две минуты. Ваш frontend должен немедленно передать этот токен вашему backend, а ваш backend должен проверить его через endpoint siteverify до истечения этого окна. Токены нельзя использовать повторно — повторная проверка того же токена завершится ошибкой с кодом timeout-or-duplicate . Такая архитектура гарантирует, что каждое защищенное действие привязано к свежему, уникальному поведенческому снимку.
Чего reCAPTCHA v3 НЕ делает
Важно понимать границы этой системы:
- Она не блокирует ботов автоматически. Оценка носит информационный характер — как реагировать, решает код вашего приложения.
- Она не гарантирует обнаружение ботов. Сложные боты, убедительно имитирующие поведенческие шаблоны человека, могут получать высокие оценки. Ни один отдельный уровень защиты не является абсолютно надежным.
- Она не подбирает порог риска за вас. Google возвращает оценку; политику определяете вы. Оценка 0.4 может быть приемлемой для формы подписки на рассылку, но совершенно неприемлемой для страницы подтверждения банковского перевода.
Эта философия проектирования — оценка без принудительного применения — дает разработчикам точный контроль, но также означает, что качество вашей защиты от ботов настолько хорошо, насколько хороша логика, которую вы строите поверх этой оценки.
Непрерывный мониторинг всей страницы
В отличие от reCAPTCHA v2, которая проверяет пользователя в один конкретный момент времени (в момент нажатия флажка), recaptcha version 3 может вызываться несколько раз в течение одной сессии — при загрузке страницы, при фокусе на форме и при отправке. Каждый вызов формирует независимую оценку, отражающую поведение до этого момента. Это позволяет строить многоуровневую проверку: низкий риск при загрузке страницы, за которым следует подозрительная оценка при отправке формы, может запустить дополнительную проверку в середине сессии, при этом пользователь ни разу не увидит CAPTCHA без явного повода.
reCAPTCHA v3 vs. reCAPTCHA v2
Понимание компромиссов между этими двумя версиями помогает выбрать правильный инструмент для правильной страницы и избежать развертывания защиты, которая либо раздражает пользователей, либо оставляет пробелы в вашей обороне.
Фундаментальное различие: challenge vs. scoring
reCAPTCHA v2 работает по модели на основе challenge (головоломки). Когда система подозревает, что посетитель не человек, она прерывает пользовательские действия и требует доказать, что перед ней человек, — либо нажатием флажка «Я не робот» (после чего анализируются движения мыши и тайминг), либо прохождением головоломки на распознавание изображений. Результат бинарный: пользователь проходит проверку или не проходит.
reCAPTCHA v3 не использует головломки. Вместо того чтобы останавливать пользователя и задавать вопрос, она незаметно отслеживает поведение в течение всей сессии на странице и возвращает непрерывную оценку риска от 0.0 до 1.0. После этого ваше приложение само решает, что делать с этой оценкой, — и этот уровень принятия решений полностью находится под вашим контролем.
Сравнение механизмов обнаружения
Как каждая версия обрабатывает подозрительный трафик
В случае с v2 логика проста: Google решает, нужна ли проверка, и показывает ее. Вы получаете бинарный токен — валидный или нет — и ваш backend действует соответственно. Эта простота является ее сильной стороной для развертываний с низкой сложностью, но также означает, что у вас почти нет представления о том, насколько подозрительным на самом деле был запрос.
В случае с v3 простота уступает место детализации. Оценка 0.9 и оценка 0.3 обе проходят техническую верификацию — но они говорят о посетителе совершенно разное. Ваше приложение может по-разному реагировать на каждую из них: выдавать полный доступ при 0.9, требовать подтверждение по email при 0.4 или незаметно блокировать при 0.1.
Аргумент в пользу доступности
Головоломки с изображениями в reCAPTCHA v2 давно критикуют как барьер для пользователей с нарушениями зрения, когнитивными ограничениями или с низкой грамотностью, которым трудно работать с искаженным текстом или неоднозначными категориями изображений. Аудиоальтернатива часто оказывается не легче. reCAPTCHA v3 invisible полностью обходит эту проблему.
Тем не менее v3 создает свою собственную форму косвенной недоступности: если поведенческие сигналы для определенного типа пользователя (например, человека, который пользуется только клавиатурой или вспомогательной технологией, создающей нетипичные шаблоны взаимодействия) стабильно получают низкие оценки, такие пользователи могут незаметно подвергаться дополнительным проверкам без какой-либо возможности обжаловать решение или самостоятельно подтвердить, что они люди. Поэтому для инклюзивных развертываний важны настройка порогов и fallback-стратегии.
Когда выбирать v2, а когда v3
Выбирайте reCAPTCHA v2, если:
- Вам нужна простая, заметная контрольная точка безопасности с минимальной настройкой backend
- У вашей команды нет ресурсов для интерпретации оценок риска и реакции на них
- Вы хотите, чтобы пользователи получали четкий и прозрачный сигнал о том, что защита от ботов активна
- Вы защищаете форму с низким трафиком, где периодическое неудобство для пользователя приемлемо
Выбирайте reCAPTCHA v3, если:
- Для вас в приоритете UX без прерывания действий пользователя — особенно на страницах оформления заказа, в сценариях входа или в формах регистрации, где отказ пользователя обходится дорого
- Вам нужен детальный контроль над тем, как приложение реагирует на разные уровни риска
- Вы работаете с высоконагруженными ресурсами, где визуальные проверки создадут значительные накладные расходы на поддержку
- Вы хотите пассивно собирать данные о сигналах риска и использовать их для аналитики, а не только для контроля доступа
Также стоит отметить, что эти две версии не являются взаимоисключающими. Распространенная схема развертывания — использовать v3 как основной уровень и запускать v2 challenge как fallback только тогда, когда v3 возвращает низкую оценку.
UX-преимущество reCAPTCHA v3 Invisible
Самое очевидное преимущество recaptcha v3 invisible в том, что пользователи даже не знают о ее существовании. Не нужно всматриваться в сетки изображений, не нужно решать аудиоголоволомки, не нужно искать флажок на экране мобильного устройства. Защита работает полностью в фоновом режиме.
Это важно для конверсии. Любое неудобство для пользователя на любом этапе пользовательского пути — особенно при входе, регистрации или оформлении заказа — напрямую влияет на показатели отказа. Google recaptcha v3 позволяет легитимным пользователям беспрепятственно выполнять защищенные действия.
Тем не менее компромисс в UX не равен нулю. Поскольку v3 опирается на поведенческое профилирование, она может незаметно присваивать легитимным пользователям низкие оценки — например, опытным пользователям, которые двигаются необычно быстро, людям, заботящимся о приватности и использующим VPN, или посетителям из неожиданных географических регионов. Если порог задан слишком агрессивно, реальные клиенты будут тихо блокироваться без объяснений. Рекомендуемый стартовый порог составляет 0.5, но его следует настраивать с учетом особенностей именно вашего трафика.
reCAPTCHA v3 API: пошаговое руководство
Интеграция reCAPTCHA v3 включает три последовательных этапа: регистрацию ключей, подключение recaptcha v3 javascript на frontend и проверку токена на backend. Ниже приведен полный процесс.
Шаг 1 — зарегистрируйте свои ключи в Google reCAPTCHA Admin Console
Прежде чем написать хотя бы одну строку кода, вам потребуются учетные данные.
- Перейдите в Google reCAPTCHA Admin Console.
- Заполните поле Label name и выберите reCAPTCHA v3.
- Добавьте все домены, на которых работает ваш сайт (например, example.com, www.example.com).
- Выберите свой проект Google Cloud Platform, если он уже существует. Если нет, он будет создан автоматически.
- Отправьте форму. Google предоставит два ключа:
- Site key — публичный; используется в вашем frontend HTML/JS.
- Secret key — приватный; используется только на вашем backend-сервере. Никогда не раскрывайте его в клиентском коде.
Шаг 2 — загрузите библиотеку JavaScript reCAPTCHA v3
На каждой странице, которую вы хотите защитить, загрузите скрипт recaptcha v3 api, добавив следующий тег в <head> вашего HTML и заменив YOUR_SITE_KEY на ваш реальный ключ:
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>Этот единственный фрагмент инициализирует механизм recaptcha v3 google и начинает пассивно собирать поведенческие сигналы в фоновом режиме — никакой виджет пользователю не показывается.
Шаг 3 — интегрируйте reCAPTCHA в защищаемое действие
В отличие от recaptcha v2, вы не рендерите виджет. Вместо этого вы программно вызываете grecaptcha.execute() в тот момент, когда пользователь инициирует защищенное действие.
Вариант A — кнопка с data-атрибутами (простые формы):
<form id="login-form">
<!-- ваши поля формы -->
<button
class="g-recaptcha"
data-sitekey="YOUR_SITE_KEY"
data-callback="onSubmit"
data-action="login"
type="button">
Войти
</button>
</form>
<script>
function onSubmit(token) {
fetch("/api/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ recaptchaToken: token })
});
}
</script>Вариант B — программный вызов (рекомендуется для AJAX/API-сценариев):
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
<script>
async function submitLogin() {
const token = await new Promise((resolve) => {
grecaptcha.ready(() => {
grecaptcha.execute("YOUR_SITE_KEY", { action: "login" }).then(resolve);
});
});
// Немедленно отправьте токен -- срок его действия истекает через 2 минуты
await fetch("/api/login", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ recaptchaToken: token })
});
}
</script>Ключевое правило: имя action (например, login, signup, checkout) должно совпадать с тем, что ожидает ваш backend. Это предотвращает повторное использование токенов между разными endpoint.
Шаг 4 — проверьте токен на вашем backend
Ваш сервер получает токен и перенаправляет его на endpoint Google siteverify до обработки пользовательского запроса.
Пример для Node.js (с обработкой ошибок):
import express from "express";
const app = express();
app.use(express.json());
app.post("/api/login", async (req, res) => {
const token = req.body.recaptchaToken;
const params = new URLSearchParams();
params.set("secret", process.env.RECAPTCHA_SECRET);
params.set("response", token);
let data;
try {
const verifyResp = await fetch("https://www.google.com/recaptcha/api/siteverify", {
method: "POST",
headers: { "content-type": "application/x-www-form-urlencoded" },
body: params
});
data = await verifyResp.json();
} catch (err) {
console.error("reCAPTCHA verification network error:", err);
return res.status(503).json({ error: "verification_unavailable" });
}
// → переходите к шагу 5
});Примечание: нативный fetch доступен в Node.js 18+. Для более старых версий используйте node-fetch или axios.
Пример для Python (Flask ≥ 2.0):
import os, requests
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.post("/api/signup") # Требуется Flask >= 2.0
def signup():
token = request.json.get("recaptchaToken")
resp = requests.post(
"https://www.google.com/recaptcha/api/siteverify",
data={"secret": os.environ["RECAPTCHA_SECRET"], "response": token},
timeout=5
)
data = resp.json()
# → переходите к шагу 5
if not data.get("success"):
return jsonify({"error": "recaptcha_failed"}), 403
return jsonify({"ok": True})Шаг 5 — интерпретируйте оценку и принимайте решение
Endpoint Google siteverify возвращает JSON-ответ. Вот как выглядит успешный ответ:
{
"success": true,
"score": 0.7,
"action": "login",
"challenge_ts": "2026-02-27T10:00:00Z",
"hostname": "example.com"
}Ваш backend должен по порядку проверить три вещи:
- success имеет значение true— токен валиден и принят Google.
- action совпадает с ожидаемым значением — это подтверждает, что токен был сгенерирован для правильного контекста.
- score достигает вашего порогового значения — 0.5 это рекомендованная Google отправная точка.
Шаг 6 — корректно обрабатывайте ошибки
Ответ siteverify может содержать массив error-codes. Наиболее важные коды, которые нужно обрабатывать:
- timeout-or-duplicate — токен старше 2 минут или уже был использован; повторно вызовите grecaptcha.execute() на стороне клиента, чтобы получить новый токен.
- missing-input-secret / invalid-input-secret — ваш secret key отсутствует или неверен; это ошибка конфигурации, а не ошибка пользователя.
- missing-input-response / invalid-input-response — токен не был отправлен или имеет некорректный формат; проверьте интеграцию на frontend.
- bad-request — сам запрос к siteverify сформирован некорректно.
Никогда не показывайте конечным пользователям сырые коды ошибок — записывайте их в журнал на стороне сервера и выводите общее сообщение «пожалуйста, попробуйте еще раз».
Шаг 7 — тщательно протестируйте интеграцию
Перед выходом в production проверьте весь процесс:
- Откройте защищенную страницу, инициируйте действие и убедитесь, что в браузере генерируется токен.
- Запишите в журнал сырой ответ siteverify на backend, чтобы убедиться в наличии success: true, корректного score и правильного action.
- Для автоматизированного тестирования вы можете использовать CapMonster Cloud, который предоставляет API для решения CAPTCHA, который программно генерирует валидные токены reCAPTCHA v3. Он поддерживает reCAPTCHA v3, v2 и Enterprise и интегрируется через REST API.
- Убедитесь, что ваши сценарии обработки ошибок работают, отправив просроченный или некорректно сформированный токен и проверив, что backend возвращает правильный ответ.
Вопросы конфиденциальности и соответствия требованиям
Поведенческая модель профилирования reCAPTCHA version 3 связана с существенными последствиями для конфиденциальности. Система собирает движения мыши, тайминги нажатия клавиш, отпечатки браузера, IP-адреса и многое другое — данные, которые выходят далеко за рамки строго необходимого для подтверждения того, что перед вами человек.
Для европейских операторов в частности это создает риски с точки зрения GDPR. В рамках заметной правоприменительной меры 2023 года французский орган по защите данных (CNIL) оштрафовал компанию по аренде электроскутеров Cityscoot на €125,000 за множественные нарушения GDPR — включая как сбор избыточных геолокационных данных (отслеживание скутеров каждые 30 секунд), так и использование Google reCAPTCHA без надлежащего согласия пользователя. CNIL постановил, что доступ reCAPTCHA к данным пользовательского устройства требует предварительного согласия в соответствии со статьей 82 французского Закона о защите данных, а не рассматривается просто как пассивный виджет безопасности. Если вы работаете в рамках GDPR, перед развертыванием google recaptcha v3 необходимо заключить надлежащее соглашение об обработке данных с Google и получить соответствующее согласие пользователей.
CapMonster Cloud и reCAPTCHA v3
CapMonster Cloud — это сервис распознавания и автоматизации решения CAPTCHA на базе ИИ, который поддерживает reCAPTCHA v2, v3 и Enterprise, а также многие другие типы CAPTCHA. Для команд разработки и тестирования он предоставляет способ автоматизировать взаимодействие с формами, защищенными reCAPTCHA, без ручного вмешательства — это полезно для интеграционного тестирования, автоматизированных конвейеров мониторинга или легитимных сценариев скрейпинга, где обработка CAPTCHA становится узким местом.
В контексте использования recaptcha v3 CapMonster Cloud выступает как API для решения CAPTCHA: получив целевой URL и site key, он возвращает валидный токен reCAPTCHA, который можно отправить на защищенный endpoint так же, как это сделал бы реальный браузер.
Пример решения reCAPTCHA v3 с использованием CapMonster Cloud:
Создание задачи:
POST
https://api.capmonster.cloud/createTaskЗапрос
{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey": "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"isEnterprise": false,
"minScore": 0.7,
"pageAction": "myverify"
}
}Ответ
{
"errorId":0,
"taskId":407533072
}
Получение результата задачи:
POST
https://api.capmonster.cloud/getTaskResultЗапрос
{
"clientKey":"API_KEY",
"taskId": 407533072
}Ответ
{
"errorId":0,
"status":"ready",
"solution": {
"gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}Подробную документацию по API и примеры интеграции смотрите на сайте capmonster.cloud.
Заключение
reCAPTCHA v3 представляет собой значимый шаг вперед в поиске баланса между защитой от ботов и пользовательским опытом. Полностью перенося верификацию в фоновый режим и заменяя бинарную логику pass/fail на более гибкую оценку риска, recaptcha google v3 позволяет командам безопасности действовать пропорционально — блокировать явных ботов, усиливать проверку для подозрительных сессий и совсем не беспокоить легитимных пользователей.
Компромиссы также присутствуют: интерпретация оценок требует вложений в backend, настройка порогов занимает время, а влияние на конфиденциальность в контексте GDPR нельзя считать незначительным. Но для большинства production-веб-приложений — особенно тех, где неудобство для пользователя при входе, регистрации или оформлении заказа снижает конверсию, — переход с v2 вполне оправдан.
Готовы внедрить reCAPTCHA v3 на своем сайте — или автоматизировать вокруг нее свой конвейер тестирования? Посетите CapMonster Cloud, чтобы изучить возможности ИИ-решения для reCAPTCHA v3, v2 и Enterprise — с подробной документацией API и примерами интеграции, которые помогут вам быстро реализовать ваши задачи.






