Как работает reCAPTCHA v3: разбор скоринга и легитимная автоматизация в 2026

Технический разбор того, как reCAPTCHA v3 оценивает трафик: модель скоринга 0.0–1.0, сигналы Google, влияние IP-репутации и легитимный подход с residential-прокри ProxyHat для QA и исследований.

How reCAPTCHA v3 Scoring Works: A Technical Deep Dive for 2026

Если вы когда-либо запускали легитимный автотест против формы входа и получали тихий отказ — форма просто не отправляется, а в логах пусто — вы столкнулись с reCAPTCHA v3. В отличие от v2 с его «выберите светофоры», v3 полностью невидим для пользователя и возвращает серверу числовой риск-скор. Понимание того, как работает reCAPTCHA v3, критично для QA-инженеров, исследователей антибот-систем и команд автоматизации, которые хотят, чтобы их легитимный трафик доходил до целевой страницы, а не отбрасывался на уровне серверной валидации.

Как работает reCAPTCHA v3: модель скоринга 0.0–1.0

reCAPTCHA v3 — это полностью невидимая система оценки рисков. Вместо визуальной задачи она возвращает непрерывную оценку от 0.0 до 1.0 для каждого действия пользователя, где 0.0 означает «явный бот», а 1.0 — «явный человек». Оценка возвращается клиенту через grecaptcha.execute(), а затем токен отправляется на ваш сервер и проверяется через Google siteverify API.

Каждый вызов grecaptcha.execute(siteKey, {action: 'login'}) привязан к конкретному действию — login, signup, checkout. Это действие становится частью токена и должно совпадать при серверной проверке. Без привязки к действию Google не сможет корректно калибровать скор.

На практике Google документирует одиннадцать бакетов скоринга, но реальные пороги определяет каждый сайт индивидуально. Типичная конфигурация выглядит так:

Диапазон оценкиДействие сайтаТипичный сценарий
0.0–0.3БлокировкаПодозрительный трафик, ботнет, datacenter IP
0.3–0.6Вызов (challenge)Вторичный фактор, email-верификация, v2-челлендж
0.6–1.0ПропускНормальный пользовательский трафик

Порог оценки reCAPTCHA 0.3 — это наиболее часто встречающаяся граница между «заблокировать» и «попросить дополнительное подтверждение». Многие e-commerce и финансовые платформы ставят порог блокировки на 0.3, а порог вызова — на 0.5. Если ваш легитимный автотест получает оценку 0.2, вы не пройдёте, даже если поведение идеально имитирует человека.

Сигналы, которые Google объединяет в оценку

Google не раскрывает точную формулу, но из официальной документации reCAPTCHA v3 и исследований антибот-сообщества известно, что система объединяет десятки сигналов в единый скор. Вот основные категории:

1. Поведенческая телеметрия

reCAPTCHA v3 собирает данные о взаимодействии с страницей: тайминги движений мыши, паттерны скроллинга, интервалы между нажатиями клавиш, время наведения на элементы. Эти сигналы формируют «поведенческий отпечаток» — если движения слишком линейные или слишком быстрые, скор падает.

2. Граф Google-куки

Если пользователь ранее взаимодействовал с другими сайтами Google (поиск, YouTube, Gmail), у него есть ___gads и NID куки. Этот граф связывает браузер с историей доверенных сессий. Новая сессия без истории Google-взаимодействий получает более низкий стартовый скор.

3. Характеристики браузера

Система анализирует отпечаток браузера: TLS-фингерпринт (JA3/JA4), порядок шифров, User-Agent, navigator properties, canvas fingerprint, WebGL-рендеринг. Несоответствия между заявленным User-Agent и реальными характеристиками TLS или JS-окружения — сильный сигнал бота. Например, если User-Agent заявляет Chrome на Windows, но JA3-отпечаток соответствует стандартному Python-requests, Google это видит.

Конкретные TLS-сигналы, которые отслеживаются: порядок шифров в ClientHello, расширения TLS, ALPN-протоколы, формат GREASE. Библиотеки вроде requests или curl имеют характерные JA3-хэши, отличные от реальных браузеров. MDN документация по User-Agent описывает, как браузеры формируют эту строку, но антибот-системы смотрят глубже.

4. IP-репутация

Это критический компонент, который часто недооценивают. Google ведёт репутационную базу IP-адресов. Дата-центровые диапазоны (AWS, DigitalOcean, OVH, Hetzner) почти всегда получают низкий скор, независимо от поведения. Торговые сети, VPN-провайдеры и известные прокси-диапазоны также флагируются. Резидентные IP-адреса — реальные ISP-выделенные адреса домашних пользователей — получают наивысший базовый скор.

Почему datacenter IP обрушивают оценку независимо от поведения

Это ключевой инсайт для команд автоматизации: вы можете идеально сэмулировать движения мыши, использовать реальный Chrome с корректным JA3-отпечатком, иметь валидные Google-куки — и всё равно получить оценку 0.1, если ваш IP принадлежит диапазону AWS. Причина проста: Google классифицирует дата-центровые IP как «вероятно автоматизированные» по умолчанию.

В практических тестах автотесты, запущенные с datacenter-прокси, стабильно получают оценки в диапазоне 0.1–0.2, тогда как те же тесты с residential-прокри в той же стране получают 0.5–0.8. Разница в 0.3–0.6 баллов — это разница между блокировкой и пропуском.

Вот почему обход reCAPTCHA v3 в контексте легитимной автоматизации — это не про взлом системы, а про устранение ложноположительных сигналов. Если ваш трафик легитимен (авторизованное тестирование, QA-автоматизация, accessibility-проверки), вы заслуживаете корректного скора. Использование residential-прокри убирает один из самых весомых негативных сигналов.

Серверная проверка токена: siteverify и соответствие action/hostname

После того как клиент получает токен через grecaptcha.execute(), этот токен отправляется на ваш сервер. Сервер вызывает Google siteverify API:

POST https://www.google.com/recaptcha/api/siteverify
secret=YOUR_SECRET_KEY&token=TOKEN_FROM_CLIENT

Google отвечает JSON с полями:

  • success — boolean, валиден ли токен
  • score — float от 0.0 до 1.0
  • action — строка действия, указанная при execute()
  • hostname — домен, с которого был сгенерирован токен
  • error-codes — массив кодов ошибок

Две критические проверки на стороне сервера:

  1. Соответствие action: значение action из ответа должно точно совпадать с тем, что вы ожидаете. Если вы выполняли execute с {action: 'login'}, а в ответе action: 'signup', токен невалиден.
  2. Соответствие hostname: hostname должен совпадать с вашим доменом (или быть из списка разрешённых). Это предотвращает повторное использование токенов с других сайтов.

Токены одноразовые и действительны примерно 2 минуты. Если ваш автотест задерживается между получением токена и отправкой формы, токен может истечь, и siteverify вернёт timeout-or-duplicate.

Легитимный подход с ProxyHat residential-прокри

Для авторизованного тестирования и QA-автоматизации нужен подход, который устраняет ложноположительные сигналы, не пытаясь «обмануть» систему. Вот практическая конфигурация:

Компоненты

  • Браузер: реальный Chromium/Chrome через Playwright или Puppeteer (не headless-режим — headless детектируется)
  • Прокси: ProxyHat residential с geo-таргетингом на страну целевого сайта
  • Поведение: реалистичные задержки, движения мыши, скроллинг перед взаимодействием с формой
  • Куки: предварительный прогон через Google-сервисы для создания доверительной истории (где этично и применимо)

Python-пример с Playwright и ProxyHat

from playwright.sync_api import sync_playwright
import time
import random

PROXY = {
    "server": "http://gate.proxyhat.com:8080",
    "username": "user-country-US",
    "password": "YOUR_PASSWORD"
}

SITE_URL = "https://example.com/login"
RECAPTCHA_SITE_KEY = "your-site-key"

def human_delay(min_s=0.5, max_s=2.0):
    time.sleep(random.uniform(min_s, max_s))

with sync_playwright() as p:
    browser = p.chromium.launch(
        headless=False,
        proxy=PROXY,
        args=[
            "--disable-blink-features=AutomationControlled",
            "--no-sandbox"
        ]
    )
    context = browser.new_context(
        viewport={"width": 1920, "height": 1080},
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                  "AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/121.0.0.0 Safari/537.36",
        locale="en-US"
    )
    page = context.new_page()

    # Навигация с реалистичной задержкой
    page.goto(SITE_URL)
    human_delay(2, 4)

    # Имитация человеческого взаимодействия
    page.mouse.move(500, 300)
    human_delay(0.5, 1.5)
    page.mouse.move(700, 450)
    human_delay(0.3, 0.8)
    page.mouse.wheel(0, 200)
    human_delay(1, 2)

    # Заполнение формы
    page.fill("input[name=email]", "test@example.com")
    human_delay(0.5, 1.0)
    page.fill("input[name=password]", "testpass123")
    human_delay(0.8, 1.5)

    # Выполнение reCAPTCHA v3
    token = page.evaluate(f"""
        async () => {{
            await new Promise(r => grecaptcha.ready(r));
            return await grecaptcha.execute(
                '{RECAPTCHA_SITE_KEY}',
                {{action: 'login'}}
            );
        }}
    """)

    print(f"Token received: {token[:20]}...")

    # Отправка токена на сервер
    # Сервер вызовет siteverify для проверки
    page.click("button[type=submit]")
    human_delay(2, 4)

    browser.close()

Конфигурация прокри ProxyHat

ProxyHat residential-прокри используют формат аутентификации с параметрами в username. Для geo-таргетинга на США:

# HTTP
http://user-country-US:pass@gate.proxyhat.com:8080

# SOCKS5
socks5://user-country-US:pass@gate.proxyhat.com:1080

# Sticky-сессия для сохранения IP между запросами
http://user-country-US-session-abc123:pass@gate.proxyhat.com:8080

# Городской таргетинг
http://user-country-US-city-newyork:pass@gate.proxyhat.com:8080

Sticky-сессии важны для reCAPTCHA v3: если IP меняется между загрузкой страницы и выполнением grecaptcha.execute(), Google видит несоответствие и снижает скор. Используйте session-ID для сохранения одного IP на протяжении всей сессии теста.

Подробнее о доступных локациях и конфигурации — на странице локаций ProxyHat и в официальной документации.

Типичные ошибки и краевые случаи

1. Headless-браузер без стелс-настроек

Стандартный headless Chrome детектируется по множеству сигналов: navigator.webdriver === true, отсутствие WebGL-рендерера, характерные размеры окна. Решение: используйте headless=False или применяйте стелс-плагины вроде playwright-stealth.

2. Несоответствие JA3-отпечатка и User-Agent

Если вы используете Python requests с заголовком Chrome User-Agent, JA3-отпечаток всё равно выдаёт Python. reCAPTCHA v3 может не проверять JA3 напрямую, но Google использует комплексный отпечаток браузера, включающий TLS-характеристики. Решение: используйте реальный браузер через Playwright/Puppeteer.

3. Слишком быстрые взаимодействия

Заполнение формы за 50мс — явный сигнал бота. Добавляйте случайные задержки 200–800мс между полями, движения мыши между действиями.

4. Истёкшие токены

Токен действителен ~2 минуты. Если ваш автотест делает много шагов между execute() и отправкой, токен может истечь. Выполняйте grecaptcha.execute() как можно ближе к моменту отправки формы.

5. Несоответствие action

Если на сайте несколько форм с разными action, убедитесь, что вы используете правильный. Серверная проверка отклонит токен с неверным action.

Где это уместно — и где нет

Этот подход предназначен исключительно для легитимных сценариев:

  • Авторизованное тестирование: QA-команды, тестирующие собственные формы с reCAPTCHA v3
  • Accessibility-автоматизация: проверка доступности форм для assistive-технологий
  • Исследования антибот-систем: академические и промышленные исследования в области безопасности
  • Нагрузочное тестирование: валидация производительности форм под реалистичной нагрузкой

Недопустимые сценарии: массовая регистрация аккаунтов, credential stuffing, fraud-автоматизация, обход защиты на сайтах, где у вас нет явного разрешения. В США такие действия могут нарушать Computer Fraud and Abuse Act (CFAA), а в ЕС — GDPR, особенно при обработке персональных данных. reCAPTCHA v3 — это защитный механизм, и его обход без авторизации — это нарушение, а не «техническая задача».

Важно: Даже при легитимном тестировании согласовывайте с владельцем сайта. Тестирование на продакшн-формах без разрешения может нарушать ToS и создавать юридические риски.

Для сценариев веб-скрапинга, где reCAPTCHA v3 защищает целевые страницы, residential-прокри ProxyHat помогают поддерживать корректный скор. Подробнее — в материалах про веб-скрапинг и SERP-трекинг. Тарифы и доступные пакеты — на странице цен ProxyHat.

Ключевые выводы

  • reCAPTCHA v3 возвращает скор 0.0–1.0 — типичные пороги: блокировка <0.3, вызов 0.3–0.6, пропуск >0.6. Порог 0.3 — наиболее частая граница блокировки.
  • IP-репутация — критический сигнал: datacenter IP почти всегда обрушивают скор до 0.1–0.2, residential IP дают базовый скор 0.5–0.8.
  • Серверная проверка требует соответствия action и hostname — несоответствие = невалидный токен.
  • Токены одноразовые и действуют ~2 минуты — выполняйте grecaptcha.execute() максимально близко к отправке формы.
  • Используйте real browser + residential proxy + human-like behavior — это три обязательных компонента для легитимного прохождения.
  • Sticky-сессии обязательны — смена IP между загрузкой страницы и execute() снижает скор.
  • Только авторизованное использование — CFAA и GDPR применяются к несанкционированному обходу.

FAQ

Что такое оценка reCAPTCHA v3 и как она работает?

Оценка reCAPTCHA v3 — это число от 0.0 до 1.0, возвращаемое Google для каждого действия пользователя через grecaptcha.execute(). Система анализирует поведенческую телеметрию, характеристики браузера, граф Google-куки и IP-репутацию, объединяя десятки сигналов в единый скор. Сайты используют этот скор для принятия решений: блокировка, вызов дополнительного подтверждения или пропуск. Оценка не видна пользователю — всё происходит в фоне.

Почему оценка reCAPTCHA v3 важна для пользователей прокси?

Потому что IP-репутация — один из самых весомых сигналов в скоринг-модели. Дата-центровые IP почти всегда получают низкий скор (0.1–0.2), что приводит к блокировке легитимного трафика. Residential-прокри с реальными ISP-адресами дают базовый скор 0.5–0.8, что позволяет легитимной автоматизации (QA, accessibility-тесты) проходить проверку. Без residential-прокри даже идеальное поведение браузера не компенсирует негативный IP-сигнал.

Какой тип прокси лучше всего подходит для reCAPTCHA v3?

Residential-прокри — безусловно лучший выбор. Они используют реальные IP-адреса ISP, которые Google классифицирует как пользовательские. Datacenter-прокри помечаются как автоматизированные и обрушивают скор. Mobile-прокри тоже работают хорошо, но residential обеспечивают оптимальный баланс стоимости и качества. Важно использовать sticky-сессии, чтобы IP не менялся между загрузкой страницы и выполнением grecaptcha.execute() — несоответствие IP снижает скор.

Как избежать блокировок при работе с reCAPTCHA v3?

Используйте комбинацию: реальный браузер (Playwright/Puppeteer в non-headless режиме), residential-прокри с geo-таргетингом, sticky-сессии для сохранения IP, реалистичные задержки и движения мыши. Выполняйте grecaptcha.execute() максимально близко к отправке формы, так как токен действует ~2 минуты. Убедитесь, что action и hostname совпадают при серверной проверке. И главное — используйте этот подход только для авторизованного тестирования, не для обхода защиты на чужих сайтах.

Готовы начать?

Доступ к более чем 50 млн резидентных IP в 148+ странах с AI-фильтрацией.

Смотреть ценыРезидентные прокси
← Вернуться в Блог