Технические разборы

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

reCAPTCHA использует файлы cookie для отслеживания сеансов, оценки рисков и управления состоянием задач. Отсутствие или неправильное использование файлов cookie приводит к сбоям в решении, низким оценкам и повторным проблемам. В этом руководстве описаны все файлы cookie, которые использует reCAPTCHA, как сеансы влияют на оценку, а также практическое управление файлами cookie для автоматизации.


печенье Домен Цель Продолжительность жизни
_GRECAPTCHA .google.com Межсайтовое состояние reCAPTCHA 6 месяцев
rc::a Целевой сайт Данные анализа рисков (холст, хэш поведения мыши) Сессия
rc::b Целевой сайт Данные анализа рисков (поведенческие сигналы) Сессия
rc::c Целевой сайт Данные анализа рисков (сроки) Сессия
rc::d-15# Целевой сайт Бросьте вызов настойчивости государства Сессия
печенье Домен Цель Влияние на оценку
SID .google.com Идентификатор сеанса Google от +0,1 до +0,3
HSID .google.com Идентификатор сеанса только для HTTP Часть доверия сеанса
SSID .google.com Идентификатор безопасного сеанса Часть доверия сеанса
NID .google.com Google предпочтения/session от +0,05 до +0,1
1P_JAR .google.com Персонализация рекламы Google Незначительный сигнал доверия
печенье Домен Цель
CONSENT .google.com Состояние согласия на использование файлов cookie
AEC .google.com Зашифрованный рекламный файл cookie
SOCS .google.com Настройки согласия на использование файлов cookie

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)
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)

Сохраняйте файлы cookie для всех запросов, чтобы повысить доверие к сеансу:

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://https://staging.example.com/qa-login")  # Build cookies
print(cm.get_recaptcha_cookies())
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
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://https://staging.example.com/qa-login");

    // ... solve CAPTCHA ...

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

Требования к сеансу для решения на основе API

При использовании CaptchaAI решатель генерирует токены в своей собственной среде. Целевой веб-сайт проверяет токен без проверки файлов cookie вашего браузера. Однако некоторые реализации добавляют дополнительную проверку:

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

Пересылка файлов cookie не требуется. 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://https://staging.example.com/qa-login",
    "json": 1,
})

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

  1. Загрузите страницу в реальном браузере, чтобы установить файлы cookie.
  2. Извлеките ключ сайта из загруженной страницы
  3. Отправьте заявку на CaptchaAI, указав sitekey и pageurl.
  4. Внедрить возвращенный токен в тот же сеанс браузера.
  5. Отправьте форму из браузера (поддерживая цепочку файлов cookie)
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()

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

Ответ Google:

  • reCAPTCHA v3 и Enterprise используют собственное исполнение JavaScript.
  • Файлы cookie переходят в хранилище Partitioned (CHIPS).
  • Файлы cookie rc:: уже являются основными (установлены в домене целевого сайта).

Влияние на автоматизацию:

  • Минимальный. Решение на основе API не затрагивается, поскольку CaptchaAI генерирует токены на стороне сервера.
  • При автоматизации на основе браузера могут наблюдаться незначительные изменения в оценках, поскольку Google корректирует свою стратегию использования файлов cookie.

Проблема Причина Решение
reCAPTCHA v2 всегда демонстрирует проблемы с имиджем Нет сеансовых файлов cookie, низкое доверие Сохранять файлы cookie во всех запросах
Оценка reCAPTCHA v3 всегда < 0,3 Свежая сессия каждый раз Поддерживать банку с печеньем
Токен работает один раз, затем не работает при повторной попытке Несоответствие файлов cookie сеанса Используйте тот же сеанс для загрузки страницы и отправки
«Проверка Cookie/session не удалась» Сайт проверяет цепочку файлов cookie Используйте передача токена во внутренний QA endpoint на основе браузера
Виджет reCAPTCHA не загружается Сторонние файлы cookie заблокированы Разрешить файлы cookie google.com

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

Нет. CaptchaAI генерирует токены в собственной оптимизированной среде и не нуждается в файлах cookie вашего браузера. Вам нужно предоставить только sitekey и pageurl. Сгенерированный токен действителен для отправки от любого клиента.

Да. Срок действия _GRECAPTCHA составляет 6 месяцев, но срок действия файлов cookie сеанса rc:: истекает при закрытии браузера. Файлы cookie учетной записи Google (SID, HSID) хранятся 2 года, но могут быть признаны Google недействительными. Для автоматизации сохраняйте файлы cookie на диске и периодически обновляйте их при посещении целевого сайта.

Да, с ограничениями. Файлы cookie можно экспортировать (в формате JSON или Netscape) и импортировать в запросы, сеансы Selenium или Puppeteer. Однако Браузерные сигналы будет отличаться, что может обнаружить reCAPTCHA. Файлы cookie обеспечивают бонус доверия, но новая среда браузера может его компенсировать.

При очистке файлов cookie удаляются файлы cookie доверия _GRECAPTCHA и файлы cookie истории поведения rc::. reCAPTCHA рассматривает вас как совершенно нового посетителя без истории, начиная оценку риска с более низкого базового уровня. Вот почему просмотр в режиме инкогнито/private часто вызывает больше проблем с CAPTCHA.


Краткое содержание

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

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

  • Как решить обратный вызов Recaptcha V2 с помощью API
  • Cloudflare Turnstile Recaptcha V2. Обработка на той же площадке.
  • Механизм обратного вызова Recaptcha V2
Комментарии для этой статьи отключены.