reCAPTCHA v2 и reCAPTCHA v3: какая версия лучше защищает от ботов?

Если вы выбираете между reCAPTCHA v2 и v3 для своего сайта, перед вами стоит компромисс: явное прерывание действий пользователя или незаметная оценка риска. В этом руководстве подробно рассматриваются различия между reCAPTCHA v2 и v3 с точки зрения защиты от ботов, пользовательского опыта и реализации — с полными примерами кода, — чтобы вы могли сделать осознанный выбор.
Что такое reCAPTCHA v2?
Google reCAPTCHA v2 — это версия, которую большинство пользователей узнают мгновенно по классическому флажку "Я не робот". Когда сигналов риска у Google недостаточно для уверенной оценки, система повышает уровень проверки до задания с сеткой изображений — предлагая пользователям определить пожарные гидранты, светофоры, пешеходные переходы и так далее.
У reCAPTCHA v2 есть два подварианта:
- Checkbox (Standard): Отображает виджет на странице. Пользователь нажимает на флажок; Google оценивает движение мыши, тайминги и сигналы браузера. Если уверенность низкая, появляется задание с изображениями.
- Invisible v2: Видимого виджета нет. Проверка запускается незаметно при отправке формы. Задание показывается только пользователям, которые выглядят подозрительно. Это важное различие при сравнении reCAPTCHA v2 invisible и v3 (подробнее об этом ниже).
Разница между reCAPTCHA v2 и v3 заключается в следующем: v2 опирается на явное действие человека, тогда как v3 пассивно собирает поведенческие сигналы на протяжении всей пользовательской сессии.
Что такое reCAPTCHA v3?
Google reCAPTCHA v3 полностью невидима. Она никогда не прерывает действия пользователя заданием. Вместо этого она непрерывно работает в фоновом режиме, отслеживая поведенческие сигналы, такие как движение мыши, паттерны прокрутки, тайминги взаимодействия и история просмотра. В заданной точке — страница входа, регистрация, оформление заказа — она возвращает оценку риска от 0.0 до 1.0:
- 1.0 = с очень высокой вероятностью человек
- 0.0 = с очень высокой вероятностью бот
Практическое замечание: на бесплатном тарифе reCAPTCHA v3 обычно доступны только четыре значения оценки риска: 0.1, 0.3, 0.7 и 0.9. Крайние значения (0.0 и 1.0) на практике возвращаются редко. Полный 11-уровневый диапазон требует наличия платежного аккаунта, привязанного к проекту Google Cloud.
Что особенно важно, reCAPTCHA v3 не блокирует запросы автоматически. Ваш backend должен интерпретировать оценку и решать, что делать дальше. В этом и состоит ключевое различие между reCAPTCHA v3 и v2: v2 останавливает ботов на входе, а v3 помечает их и оставляет решение за вами.
Различия между reCAPTCHA v2 и v3: глубокий разбор защиты от ботов
Чтобы понять различия между Google reCAPTCHA v2 и v3, важно изучить, как каждая версия обнаруживает и предотвращает атаки.
reCAPTCHA v2 сразу останавливает базовых ботов на скриптах — они не могут нажать на флажок или решить задание с сеткой изображений без специализированных инструментов. Однако у нее есть уязвимости к:
- Атакам с применением компьютерного зрения — ML-модели могут решать задания с сеткой изображений с разной точностью в зависимости от типа задания и сложности модели.
- Сервисам ручного решения — сторонним платформам, где люди решают задания за небольшую плату.
- Атакам повторного применения токена — повторному использованию действительного токена в нескольких запросах, если серверная проверка отсутствует или реализована слабо.
reCAPTCHA v3 меняет модель обнаружения. Поскольку она анализирует поведение на протяжении всей сессии, она может выявлять сложных ботов, имитирующих человеческое взаимодействие. Однако ее слабые стороны включают:
- Отсутствие жесткой блокировки — злоумышленник, который понимает ваш порог оценки, со временем может настроить запросы так, чтобы оставаться выше него.
- Ложноположительные срабатывания — легитимные пользователи, использующие VPN, Tor или браузеры с упором на приватность, могут получать низкие оценки и блокироваться по ошибке.
- Нагрузка по настройке порогов — вам нужно дополнительно усовершенствовать логику сайта, собирать данные и калибровать пороги, а это требует постоянного сопровождения.
Ни одна из версий не гарантирует защиту от ботов. Для сценариев с высоким риском использование обеих версий — v3 как основного слоя с переходом к проверке v2 при низких оценках — считается наилучшей гибридной стратегией.
Сравнение UX
Разрыв в UX между Google reCAPTCHA v2 и v3 значителен. reCAPTCHA v2 создает заметное прерывание действий пользователя и может снижать конверсию сайта в точке проверки. Задания с сеткой изображений особенно неудобны для пользователей мобильных устройств и людей с нарушениями зрения, а стандартное задание только с изображениями может противоречить рекомендациям доступности WCAG, если не предлагается аудиоальтернатива. Это означает, что v2 может заметно влиять на показатели конверсии, особенно в формах для массовой аудитории.
Если сравнивать reCAPTCHA v2 invisible и v3, то обе версии не видны большинству пользователей, но по-разному обрабатывают пограничные случаи. Invisible v2 переходит к заданию, если ее уверенность низка, — поэтому пользователи, заботящиеся о приватности, все равно могут увидеть сетку изображений. v3 никогда не показывает задание — вместо этого она возвращает оценку риска вашему backend, который затем решает, как реагировать. Если ваш backend настроен отклонять запросы ниже определенного порога, пользователь может столкнуться с молчаливым отказом в дальнейших действиях на сайте без объяснения причин. Это может вызывать раздражение, даже несмотря на то, что сама v3 никого не блокирует: решение о блокировке всегда принимает серверная логика.
Примечания по доступности для людей с ограниченными возможностями:
- v2 checkbox: Умеренная доступность при навигации с клавиатуры; сетки изображений по-прежнему сложны для пользователей экранных дикторов без аудиоальтернативы.
- v2 invisible: Более доступна, поскольку большинство пользователей вообще не видят задание.
- v3: Лучшая базовая доступность, поскольку задание никогда не показывается; однако ложноположительные тихие блокировки нужно обрабатывать через прозрачный резервный путь (например, подтверждение по электронной почте).
reCAPTCHA v2 и v3 — сравнение возможностей
Возможность | reCAPTCHA v2 (Checkbox) | reCAPTCHA v2 (Invisible) | reCAPTCHA v3 |
Взаимодействие с пользователем | Нажатие на флажок + возможна головоломка | Нет для большинства пользователей; головоломка при подозрении | Нет — полностью невидима |
Метод обнаружения ботов | Сигналы браузера + ответ на головоломку | Сигналы браузера + резервный переход к головоломке | Поведенческая оценка на протяжении сессии |
Результат | Токен Pass / Fail | Токен Pass / Fail | Оценка (0.0–1.0) для каждого места применения капчи |
Риск ложноположительных срабатываний | Низкий–средний | Низкий–средний | Средний–высокий (для пользователей VPN, приватных браузеров) |
Доступность для пользователей с инвалидностью | Умеренная (сетки изображений могут быть проблемой) | Лучше | Лучшая (задание не показывается) |
Неудобство для пользователя | Высокое | Низкое | Отсутствует |
Сложность backend-логики | Низкая (проверить токен) | Низкая (проверить токен) | Выше (интерпретировать оценку в зависимости от места применения капчи) |
Влияние на приватность | Умеренное | Умеренное | Обычно выше (непрерывное отслеживание сессии) |
Лучший сценарий использования | Формы с высоким риском, вход в аккаунт, платежи | Формы со средним уровнем риска | Непрерывный мониторинг, многоэтапные сценарии действий |
Когда использовать reCAPTCHA v2 или v3
Ответ на вопрос, что лучше — reCAPTCHA v2 или v3, полностью зависит от вашего контекста. Ни одну из версий нельзя назвать универсально лучшей.
Выбирайте reCAPTCHA v2, если:
- Форма относится к сценариям с высоким риском (вход в аккаунт, создание аккаунта, платеж), и явное подтверждение со стороны пользователя дает дополнительную ценность
- Вам нужна простая backend-логика — проверить токен, без интерпретации оценок
- Ваша аудитория менее чувствительна к неудобству для пользователя (B2B-инструменты, панели администратора)
- Вам нужна резервная проверка с жесткой блокировкой для пользователей, не прошедших проверку по оценке v3
Выбирайте reCAPTCHA v3, если:
- Пользовательский опыт и конверсия для вас в приоритете (e-commerce, лендинги, онбординг в SaaS-сервисах)
- Вы хотите защищать несколько действий на сайте, не прерывая действия пользователя
- У вас есть backend-возможности для интерпретации оценок и применения многоуровневых ответов (allow / challenge / block)
- Вы хотите получать пассивную аналитику по ботам на протяжении всей пользовательской сессии
Рекомендуемый гибридный подход:
- Разверните v3 для всех защищаемых действий
- Если пользователь получает оценку ниже вашего порога (например, ниже 0.5), покажите invisible v2 challenge
- Если и это не сработает, блокируйте действие или отправляйте его на ручную проверку
Такой подход сочетает плавный UX версии v3 с возможностью жесткой блокировки в v2.
Руководство по реализации — reCAPTCHA v2
Шаг 1: Зарегистрируйте ключ сайта
Перейдите в Google reCAPTCHA Admin Console, выберите reCAPTCHA v2 ("I'm not a robot" Checkbox) и добавьте свой домен. Вы получите site key (публичный ключ) и secret key (приватный ключ — только для проверки на стороне сервера, никогда не раскрывайте его на стороне клиента).
Шаг 2: Frontend — виджет Checkbox
<!DOCTYPE html>
<html>
<head>
<title>Демо reCAPTCHA v2</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<form action="/submit" method="POST">
<input type="text" name="email" placeholder="Ваш email" required />
<div class="g-recaptcha" data-sitekey="YOUR_SITE_KEY"></div>
<br/>
<input type="submit" value="Отправить">
</form>
</body>
</html>Шаг 3: Frontend — вариант Invisible v2
<!DOCTYPE html>
<html>
<head>
<title>Демо reCAPTCHA v2 Invisible</title>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
function onSubmit(token) {
document.getElementById("demo-form").submit();
}
</script>
</head>
<body>
<form id="demo-form" action="/submit" method="POST">
<input type="text" name="email" placeholder="Ваш email" required />
<button class="g-recaptcha"
data-sitekey="YOUR_SITE_KEY"
data-callback="onSubmit"
data-badge="bottomright">
Отправить
</button>
</form>
</body>
</html>Шаг 4: Проверка на backend (PHP)
<?php
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
exit('Метод не разрешен');
}
$token = $_POST['g-recaptcha-response'] ?? '';
$secret = 'YOUR_SECRET_KEY';
if (!$token) {
exit('Токен CAPTCHA отсутствует.');
}
// Используйте POST, чтобы не раскрывать secret key в логах сервера/прокси
$postData = http_build_query([
'secret' => $secret,
'response' => $token,
]);
$context = stream_context_create([
'http' => [
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded',
'content' => $postData,
],
]);
$response = file_get_contents(
'https://www.google.com/recaptcha/api/siteverify',
false,
$context
);
if ($response === false) {
http_response_code(503);
exit('Не удалось связаться со службой проверки reCAPTCHA.');
}
$result = json_decode($response, true);
if (!empty($result['success'])) {
echo "<p>Форма успешно отправлена!</p>";
} else {
http_response_code(403);
echo "<p>Проверка CAPTCHA не пройдена. Попробуйте еще раз.</p>";
}
?>Руководство по реализации — reCAPTCHA v3
Шаг 1: Зарегистрируйте ключ сайта v3
В reCAPTCHA Admin Console выберите reCAPTCHA v3. Вы получите ключи, отдельные от ключей v2 — не смешивайте их между версиями.
Шаг 2: Frontend — программная обработка токена
<!DOCTYPE html>
<html>
<head>
<title>Демо reCAPTCHA v3</title>
<script src="https://www.google.com/recaptcha/api.js?render=YOUR_SITE_KEY"></script>
</head>
<body>
<form id="login-form">
<input type="email" name="email" placeholder="Email" required />
<input type="password" name="password" placeholder="Пароль" required />
<button type="button" onclick="submitWithRecaptcha()">Войти</button>
</form>
<script>
async function submitWithRecaptcha() {
// Срок действия токенов истекает через 2 минуты -- выполняйте непосредственно перед отправкой
const token = await new Promise((resolve) => {
grecaptcha.ready(() => {
grecaptcha.execute('YOUR_SITE_KEY', { action: 'login' }).then(resolve);
});
});
const response = await fetch('/api/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: document.querySelector('[name="email"]').value,
recaptchaToken: token
})
});
const data = await response.json();
if (data.ok) {
alert('Вход выполнен успешно!');
} else {
alert('Проверка не пройдена: ' + (data.error || 'неизвестная ошибка'));
}
}
</script>
</body>
</html>Шаг 3: Проверка на backend (Node.js / Express)
// Node.js 18+ с Express
import express from 'express';
const app = express();
app.use(express.json());
app.post('/api/login', async (req, res) => {
const { recaptchaToken } = req.body;
const params = new URLSearchParams();
params.set('secret', process.env.RECAPTCHA_SECRET);
params.set('response', recaptchaToken);
try {
const verifyRes = await fetch('https://www.google.com/recaptcha/api/siteverify', {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
body: params
});
const data = await verifyRes.json();
if (!data.success) {
return res.status(403).json({ error: 'recaptcha_failed', codes: data['error-codes'] });
}
// Всегда проверяйте, что action соответствует ожидаемому
if (data.action !== 'login') {
return res.status(403).json({ error: 'recaptcha_action_mismatch' });
}
// 0.5 — рекомендуемый Google стартовый порог, настраивайте его с учетом вашего трафика
if (data.score < 0.5) {
return res.status(403).json({ error: 'recaptcha_low_score', score: data.score });
}
return res.json({ ok: true });
} catch (err) {
return res.status(503).json({ error: 'recaptcha_service_unavailable' });
}
});
app.listen(3000, () => console.log('Сервер запущен на порту 3000'));Автоматизация решения reCAPTCHA с CapMonster Cloud
При создании тестовой автоматизации, QA-пайплайнов или авторизованных сценариев веб-скрейпинга вам нужен способ программно проходить проверки reCAPTCHA — не ломая тестовый набор каждый раз, когда появляется CAPTCHA. CapMonster Cloud — это сервис автоматического решения CAPTCHA, который поддерживает reCAPTCHA v2, v3 и многие другие типы CAPTCHA, предоставляя API, легко интегрируемый в любой технологический стек.
Важно: CapMonster Cloud предназначен для использования на сайтах и платформах, к которым у вас есть авторизованный доступ, — для тестирования, QA-автоматизации и авторизованных сценариев веб-скрейпинга.
Решение reCAPTCHA v2 через API CapMonster Cloud
Запрос на создание задачи:
POST https://api.capmonster.cloud/createTask
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "RecaptchaV2Task",
"websiteURL": "https://example.com/login",
"websiteKey": "YOUR_SITE_KEY"
}
}Ответ
{
"errorId":0,
"taskId":407533072
}Получение результата:
POST https://api.capmonster.cloud/getTaskResult
{
"clientKey": "YOUR_API_KEY",
"taskId": 407533072
}Ответ (когда решение готово):
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AFcWeA66ZARdA5te7ac..."
}
}Решение reCAPTCHA v3 через API CapMonster Cloud
POST https://api.capmonster.cloud/createTask
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "YOUR_SITE_KEY",
"isEnterprise": false,
"minScore": 0.7,
"pageAction": "login"
}
}Последующие шаги аналогичны v2.
Пример SDK (Python — reCAPTCHA v3)
# https://github.com/Zennolab/capmonstercloud-client-python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV3ProxylessRequest
client_options = ClientOptions(api_key="YOUR_API_KEY") # Укажите ваш API key CapMonster Cloud
cap_monster_client = CapMonsterClient(options=client_options)
# При необходимости вы можете проверить баланс
balance = asyncio.run(cap_monster_client.get_balance())
print("Баланс:", balance)
recaptcha_v3_request = RecaptchaV3ProxylessRequest(
websiteUrl="https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta", # URL вашей страницы с captcha
websiteKey="6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
minScore=0.6,
pageAction="myverify"
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha_v3_request)
responses = asyncio.run(solve_captcha())
print(responses)Пример SDK (Node.js — reCAPTCHA v2)
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2Request } from '@zennolab_com/capmonstercloud-client';
const API_KEY = "YOUR_API_KEY"; // Укажите ваш API key CapMonster Cloud
async function solveRecaptchaV2() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Базовый пример без proxy
// CapMonster Cloud автоматически использует собственные proxy
let recaptcha2Request = new RecaptchaV2Request({
websiteURL: "https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
websiteKey: "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd"
});
// Пример использования собственного proxy
// Раскомментируйте этот блок, если хотите использовать свой proxy
/*
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};
recaptcha2Request = new RecaptchaV2Request({
websiteURL: "https://lessons.zennolab.com/captchas/recaptcha/v2_simple.php?level=high",
websiteKey: "6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
proxy,
userAgent: "userAgentPlaceholder"
});
*/
// При необходимости вы можете проверить баланс
const balance = await client.getBalance();
console.log("Баланс:", balance);
const result = await client.Solve(recaptcha2Request);
console.log("Решение:", result);
}
solveRecaptchaV2().catch(console.error);CapMonster Cloud также поддерживает reCAPTCHA Enterprise, Cloudflare Turnstile и ряд других типов CAPTCHA, что делает его универсальным инструментом для любой тестовой инфраструктуры, взаимодействующей с формами, защищенными CAPTCHA.
Чек-лист по реализации
reCAPTCHA v2
- Зарегистрируйте ключи сайта v2 в Google reCAPTCHA Admin Console
- Добавьте на страницу скрипт api.js с атрибутами async defer
- Отрисуйте виджет с помощью <div data-sitekey="..."> (checkbox) или настройте invisible-вариант через data-callback
- Извлеките g-recaptcha-response из POST-тела запроса на сервере
- Проверьте токен через https://www.google.com/recaptcha/api/siteverify, используя ваш secret key через POST (не GET), чтобы защитить secret key от попадания в логи
- Перед обработкой отправки формы убедитесь, что возвращается success: true
- Никогда не раскрывайте secret key в клиентском коде
- Предусмотрите аудиоальтернативу задания для людей с ограниченными возможностями
reCAPTCHA v3
- Зарегистрируйте отдельные ключи сайта v3 (не используйте повторно ключи v2) в Google reCAPTCHA Admin Console
- Подключите api.js?render=YOUR_SITE_KEY
- Вызывайте grecaptcha.execute(siteKey, { action: 'your_action' }) для каждого защищаемого действия
- Сразу отправляйте токен на backend — срок действия токенов истекает через 2 минуты, и они одноразовые
- Выполняйте проверку через siteverify, проверяйте success: true и валидируйте соответствие action ожидаемому значению
- Установите начальный порог оценки (0.5 — рекомендуемая Google отправная точка) и корректируйте его на основе анализа реального трафика
- Определите реакцию для каждого диапазона оценок: allow / step-up challenge / block
- Логируйте оценки, чтобы отслеживать их изменение и точнее настраивать пороги
- Предусмотрите резервный путь (например, подтверждение по email) для пользователей, которые получают низкую оценку не по своей вине
FAQ
В: reCAPTCHA v3 лучше, чем v2? Не всегда. reCAPTCHA v3 обеспечивает лучший пользовательский опыт, но требует значительно больше работы на backend и создает риск ложноположительных срабатываний для легитимных пользователей с VPN или браузерами, ориентированными на приватность. v2 проще развернуть, и она обеспечивает жесткую блокировку на уровне формы. Для форм с высокими требованиями к безопасности многие команды используют обе версии в гибридной схеме — v3 как первый слой, v2 как резервный вариант.
В: В чем разница между reCAPTCHA v2 и v3 с точки зрения пользовательского опыта? v2 (checkbox) требует видимого действия со стороны пользователя и может перейти к заданиям с изображениями. v3 полностью невидима — пользователи никак не взаимодействуют с ней напрямую. Однако v3 может вернуть низкую оценку и вызвать молчаливую блокировку легитимных пользователей, что представляет собой другую — но все равно реальную — форму неудобства для пользователя, особенно если человек не получает объяснения, почему его действие было отклонено.
В: Могу ли я использовать reCAPTCHA v2 и v3 вместе? Да, и это рекомендуется для сценариев с высоким риском. Используйте v3 как основной слой для пассивной оценки всех пользователей, а затем показывайте проверку v2 (видимую или invisible) тем пользователям, чья оценка v3 ниже вашего порога. Это и есть гибридный подход, описанный выше.
В: Какой порог следует установить для reCAPTCHA v3? Google рекомендует 0.5 в качестве отправной точки. Правильный порог зависит от паттернов вашего трафика — проанализируйте распределение оценок среди реальных пользователей, прежде чем окончательно выбирать значение. Если установить порог слишком высоко, можно заблокировать легитимных пользователей; слишком низко — и боты смогут пройти. Для действий с высоким риском, таких как платежи или сброс пароля, может потребоваться более высокий порог.
В: В чем разница между reCAPTCHA v2 invisible и v3? Обе версии скрыты от большинства пользователей, но работают по-разному. У invisible v2 по-прежнему есть резервный переход к заданию — подозрительные пользователи могут увидеть сетку изображений. v3 никогда не показывает никаких заданий; она возвращает только оценку. Ключевое практическое отличие состоит в том, что invisible v2 сохраняет механизм жесткой блокировки через задания, тогда как v3 полностью делегирует каждое решение о блокировке вашей backend-логике.
Заключение
Выбор между reCAPTCHA v2 и v3 сводится к двум переменным: какой уровень неудобства для пользователя вы готовы принять и насколько сложную backend-логику готовы внедрить. v2 дает простой, проверенный механизм защиты с минимальной настройкой; v3 обеспечивает тонкую, невидимую аналитику, которая требует активной интерпретации и постоянной калибровки порогов. Для большинства production-сайтов наиболее устойчивый подход — гибрид обеих версий.
Готовы протестировать интеграцию CAPTCHA? Попробуйте CapMonster Cloud уже сегодня — автоматизируйте решение reCAPTCHA v2 и v3 в ваших QA- и тестовых сценариях с помощью простого API и официальных SDK для Python, JavaScript и C#.






