Короткий ответ: чтобы получить токен 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 в автоматизации
Способ 1: постоянная cookie jar
Сохраняйте 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. В этом случае:
- Загрузите страницу в реальном браузере, чтобы установились cookies.
- Извлеките sitekey со страницы.
- Отправьте запрос в CaptchaAI с sitekey и pageurl.
- Внедрите полученный токен в ту же сессию браузера.
- Отправьте форму из браузера — так сохранится цепочка 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 установил в браузере?
Быстрая проверка в три шага:
- Откройте DevTools → вкладка Application (Chrome) или Storage (Firefox).
- Перейдите в раздел Cookies и выберите нужный домен.
- Отфильтруйте по
_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, внедрить токен и отправить форму из той же сессии браузера.
Похожие статьи
- Как обрабатывать callback reCAPTCHA v2 через API
- Turnstile и reCAPTCHA v2 на одном сайте: обработка same-site
- Как устроен callback-механизм reCAPTCHA v2