Explainers

Требования к файлам cookie reCAPTCHA и сеансу для решения

Короткий ответ: чтобы получить токен reCAPTCHA через API CaptchaAI, cookies браузера передавать не нужно — достаточно sitekey и pageurl. Но если ваш скрипт стабильно ловит визуальный challenge или reCAPTCHA v3 выдаёт низкий score без видимой причины, дело почти всегда в cookies и состоянии сессии на стороне браузера. reCAPTCHA опирается на десяток с лишним cookies для отслеживания сессии, риск-анализа и накопления доверия — без них риск-оценка стартует с более низкой базовой точки. Ниже — полный список cookies, которые использует reCAPTCHA, как они влияют на score, и когда решение через API вообще требует работы с cookies в браузере.


Какие cookies использует reCAPTCHA

Всего reCAPTCHA задействует три группы cookies: собственные (для риск-анализа и состояния проверки), cookies аккаунта Google (усиливают доверие к сессии) и сторонние технические cookies (согласие, реклама). Ниже — все три группы с доменом и назначением каждого cookie.

Cookies, специфичные для reCAPTCHA:

Cookie Домен Назначение Срок жизни
_GRECAPTCHA .google.com Межсайтовое состояние reCAPTCHA 6 месяцев
rc::a Целевой сайт Данные риск-анализа (canvas, хэш поведения мыши) Сессия
rc::b Целевой сайт Данные риск-анализа (поведенческие сигналы) Сессия
rc::c Целевой сайт Данные риск-анализа (тайминги) Сессия
rc::d-15# Целевой сайт Сохранение состояния проверки Сессия

Cookies аккаунта Google (влияют на score):

Cookie Домен Назначение Влияние на score
SID .google.com Идентификатор сессии Google от +0,1 до +0,3
HSID .google.com Идентификатор HTTP-only сессии Часть доверия к сессии
SSID .google.com Идентификатор защищённой сессии Часть доверия к сессии
NID .google.com Настройки/сессия Google от +0,05 до +0,1
1P_JAR .google.com Персонализация рекламы Google Незначительный сигнал доверия

Сторонние cookies, которые задействует reCAPTCHA:

Cookie Домен Назначение
CONSENT .google.com Статус согласия на cookies
AEC .google.com Зашифрованный рекламный cookie
SOCS .google.com Настройки согласия на cookies

Блокировка сторонних cookies в Chrome и её влияние на reCAPTCHA

Chrome постепенно отказывается от сторонних cookies. Это напрямую касается reCAPTCHA, потому что _GRECAPTCHA устанавливается на .google.com и считывается из стороннего контекста относительно целевого сайта.

Google отвечает на это тремя способами: reCAPTCHA v3 и Enterprise выполняют JavaScript как first-party скрипт, минуя проблему стороннего домена; cookies переводятся в хранилище Partitioned (CHIPS); а cookies rc:: и так уже являются first-party — они изначально устанавливаются на домене целевого сайта, а не на .google.com.

Для автоматизации это означает разное. Решение через API затрагивается минимально: CaptchaAI генерирует токены на своей стороне. Браузерная автоматизация может видеть небольшие колебания score по мере того, как Google донастраивает стратегию — закладывайте на это запас в логике повторных попыток.


Типичные проблемы с cookies reCAPTCHA и как их решить

Пять симптомов встречаются чаще всего — вот причина и рабочее решение для каждого:

  • reCAPTCHA v2 всегда показывает картиночный challenge. Причина — нет сессионных cookies, низкое доверие. Решение: сохранять cookies между запросами.
  • Score reCAPTCHA v3 стабильно ниже 0,3. Причина — каждый раз новая сессия без истории. Решение: держать постоянную cookie jar.
  • Токен срабатывает один раз, а при повторе — нет. Причина — несовпадение сессионных cookies. Решение: использовать одну и ту же сессию для загрузки страницы и отправки формы.
  • Сайт возвращает «Cookie/session validation failed». Причина — сайт проверяет цепочку cookies. Решение: использовать инъекцию токена через браузерную сессию (см. раздел ниже).
  • Виджет reCAPTCHA вообще не загружается. Причина — заблокированы сторонние cookies. Решение: разрешить cookies для домена google.com.

Как cookies влияют на risk score reCAPTCHA

Свежая сессия (без cookies)

New browser session, all cookies cleared
    ↓
reCAPTCHA JavaScript loads
    ↓
No _GRECAPTCHA → First-time visitor signal
No SID/HSID → No Google account trust
No rc:: cookies → No behavioral history
    ↓
Starting risk score: lower baseline (0.3-0.5 for v3)
    ↓
Behavioral analysis must compensate for lack of history
    ↓
Result: More likely to receive visible challenge (v2)
         Lower score (v3)

Повторная сессия (с сохранёнными cookies)

Existing browser session with cookies
    ↓
reCAPTCHA JavaScript loads
    ↓
_GRECAPTCHA found → Returning visitor
SID/HSID found → Google account trust
rc:: cookies found → Previous behavioral data
    ↓
Starting risk score: higher baseline (0.5-0.7 for v3)
    ↓
Behavioral analysis reinforces cookie-based trust
    ↓
Result: More likely to auto-pass (v2)
         Higher score (v3)

Эта разница в базовом score — главная причина, почему incognito-режим чаще ловит challenge, чем обычный профиль браузера с историей.


Как управлять cookies в автоматизации

Сохраняйте cookies между запросами, чтобы наращивать доверие к сессии:

import requests
import pickle
import os

class CookieManager:
    """Manage cookies for reCAPTCHA sessions."""

    def __init__(self, cookie_file="cookies.pkl"):
        self.cookie_file = cookie_file
        self.session = requests.Session()
        self.load_cookies()

    def load_cookies(self):
        """Load cookies from disk if they exist."""
        if os.path.exists(self.cookie_file):
            with open(self.cookie_file, "rb") as f:
                self.session.cookies = pickle.load(f)

    def save_cookies(self):
        """Save cookies to disk for next session."""
        with open(self.cookie_file, "wb") as f:
            pickle.dump(self.session.cookies, f)

    def visit_page(self, url):
        """Visit a page to collect cookies."""
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                          "AppleWebKit/537.36 (KHTML, like Gecko) "
                          "Chrome/120.0.0.0 Safari/537.36",
        }
        response = self.session.get(url, headers=headers, timeout=15)
        self.save_cookies()
        return response

    def get_recaptcha_cookies(self):
        """Get cookies relevant to reCAPTCHA."""
        relevant = {}
        for cookie in self.session.cookies:
            if cookie.name in ["_GRECAPTCHA", "SID", "HSID", "SSID", "NID"]:
                relevant[cookie.name] = {
                    "value": cookie.value[:20] + "...",
                    "domain": cookie.domain,
                    "expires": cookie.expires,
                }
            if cookie.name.startswith("rc::"):
                relevant[cookie.name] = {
                    "value": cookie.value[:20] + "...",
                    "domain": cookie.domain,
                }
        return relevant


# Usage
cm = CookieManager("recaptcha_session.pkl")
cm.visit_page("https://staging.example.com/qa-login")  # Build cookies
print(cm.get_recaptcha_cookies())

Важно для QA-пайплайнов: если такая cookie jar сохраняется на диске как часть автоматизированного тестирования, храните файл так же аккуратно, как API-ключ — не коммитьте его в репозиторий. Учитывайте требования 152-ФЗ «О персональных данных» (для команд в РФ) или GDPR для распределённых команд: cookies сессии могут быть связаны с конкретным тестовым аккаунтом.

Способ 2: передача cookies в Selenium

from selenium import webdriver
import json

def setup_cookies(driver, cookie_file="selenium_cookies.json"):
    """Load and apply saved cookies to a Selenium session."""
    if not os.path.exists(cookie_file):
        return

    with open(cookie_file, "r") as f:
        cookies = json.load(f)

    for cookie in cookies:
        # Selenium requires the domain to match current page
        try:
            driver.add_cookie(cookie)
        except Exception:
            pass  # Skip cookies for different domains

def save_cookies(driver, cookie_file="selenium_cookies.json"):
    """Save current cookies for future sessions."""
    cookies = driver.get_cookies()
    with open(cookie_file, "w") as f:
        json.dump(cookies, f)

# Usage
driver = webdriver.Chrome()
driver.get("https://example.com")
setup_cookies(driver)  # Apply saved cookies
driver.refresh()       # Reload with cookies

# After CAPTCHA solving...
save_cookies(driver)   # Save for next run

Способ 3: передача cookies в Puppeteer

const puppeteer = require("puppeteer");
const fs = require("fs");

async function manageCookies(page, cookieFile = "cookies.json") {
    // Load cookies if file exists
    if (fs.existsSync(cookieFile)) {
        const cookies = JSON.parse(fs.readFileSync(cookieFile));
        await page.setCookie(...cookies);
    }

    // Save cookies after page interaction
    const saveCookies = async () => {
        const cookies = await page.cookies();
        fs.writeFileSync(cookieFile, JSON.stringify(cookies, null, 2));
    };

    return { saveCookies };
}

(async () => {
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();

    const { saveCookies } = await manageCookies(page);

    await page.goto("https://staging.example.com/qa-login");

    // ... solve CAPTCHA ...

    await saveCookies();
    await browser.close();
})();

Нужны ли cookies для решения reCAPTCHA через API CaptchaAI

CaptchaAI генерирует токен в собственной среде, а не в вашем браузере. Целевой сайт проверяет сам токен, а не то, откуда он пришёл — поэтому в большинстве случаев cookies браузера роли не играют. Исключение — сайты, которые дополнительно сверяют сессию.

Стандартная reCAPTCHA (большинство сайтов)

Передача cookies не требуется. CaptchaAI формирует валидный токен, используя только sitekey и pageurl:

import requests
import time

API_KEY = "YOUR_API_KEY"

# Standard solve — no cookies needed
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "SITE_KEY",
    "pageurl": "https://staging.example.com/qa-login",
    "json": 1,
})

Сайты с проверкой сессии: когда cookies всё же важны

Некоторые сайты с повышенными требованиями к безопасности проверяют, что сессия, отправляющая токен, совпадает с сессией, в которой был загружен виджет reCAPTCHA. В этом случае:

  1. Загрузите страницу в реальном браузере, чтобы установились cookies.
  2. Извлеките sitekey со страницы.
  3. Отправьте запрос в CaptchaAI с sitekey и pageurl.
  4. Внедрите полученный токен в ту же сессию браузера.
  5. Отправьте форму из браузера — так сохранится цепочка cookies.
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import time

API_KEY = "YOUR_API_KEY"

# Step 1: Load page in real browser (establishes cookies)
driver = webdriver.Chrome()
driver.get("https://secure-site.com/login")

# Step 2: Extract sitekey
widget = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]")
sitekey = widget.get_attribute("data-sitekey")

# Step 3: Solve via CaptchaAI
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": sitekey,
    "pageurl": driver.current_url,
    "json": 1,
})
task_id = submit.json()["request"]

for _ in range(60):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY,
        "action": "get",
        "id": task_id,
        "json": 1,
    }).json()

    if result.get("status") == 1:
        token = result["request"]
        break

# Step 4: Inject token into browser session (same cookies)
driver.execute_script(
    f'document.getElementById("g-recaptcha-response").value = "{token}";'
)

# Step 5: Submit form from same browser session
driver.find_element(By.CSS_SELECTOR, "form").submit()

Часто задаваемые вопросы

Нужно ли передавать cookies в CaptchaAI, чтобы получить токен?

Нет. CaptchaAI генерирует токен в собственной оптимизированной среде, и cookies вашего браузера ему не нужны — достаточно sitekey и pageurl. Готовый токен валиден для отправки от любого клиента.

Как проверить, какие cookies reCAPTCHA установил в браузере?

Быстрая проверка в три шага:

  1. Откройте DevTools → вкладка Application (Chrome) или Storage (Firefox).
  2. Перейдите в раздел Cookies и выберите нужный домен.
  3. Отфильтруйте по _GRECAPTCHA, rc:: и SID/HSID/SSID/NID.

Если после посещения страницы с виджетом reCAPTCHA этих cookies нет — виджет либо не загрузился, либо сторонние cookies заблокированы браузером или расширением.

Что делать, если reCAPTCHA v3 всё равно даёт низкий score даже с сохранёнными cookies?

Cookies — не единственный фактор score. Google также оценивает:

  • репутацию IP-адреса и прокси;
  • консистентность User-Agent и остальных заголовков между запросами;
  • поведенческие сигналы за сессию в целом (движения мыши, тайминги, canvas-хэш).

Если score остаётся низким при валидных cookies, в первую очередь проверьте именно эти три фактора. Для решения через API это не критично: CaptchaAI формирует токен независимо от того, какой score получила бы сессия при обычной загрузке страницы.

Обязательно ли использовать один и тот же прокси вместе с сохранёнными cookies?

Желательно, если вы работаете через браузерную автоматизацию, а не только через API-решение. Cookies создают доверие к сессии, привязанной к определённому IP и профилю браузера — если между запросами меняется прокси, а cookies остаются старыми, reCAPTCHA видит несостыковку и может расценить это как более рискованное поведение, чем полностью новая сессия.

Почему очистка cookies усложняет прохождение reCAPTCHA?

При очистке cookies удаляются trust-cookie _GRECAPTCHA и cookies поведенческой истории rc::. reCAPTCHA видит в вас совершенно нового посетителя без истории и стартует риск-оценку с более низкой базовой точки. Именно поэтому режим инкогнито и одноразовые профили чаще получают дополнительные проверки.


Главное о cookies и сессиях reCAPTCHA

reCAPTCHA использует cookies для отслеживания сессии (rc::), межсайтового доверия (_GRECAPTCHA) и привязки к аккаунту Google (SID, HSID). Свежие сессии без cookies получают более низкий score и более частые challenge. Для решения через API с CaptchaAI cookies не требуются — решатель формирует валидный токен, используя только sitekey и pageurl страницы. Для сайтов, которые дополнительно сверяют сессию, работает браузерный подход: загрузить страницу (установить cookies), решить через CaptchaAI, внедрить токен и отправить форму из той же сессии браузера.

Похожие статьи

Комментарии для этой статьи отключены.