Explainers

Требования к файлам cookie reCAPTCHA: что устанавливается и почему это важно

Пустой профиль браузера — главная причина, почему reCAPTCHA внезапно показывает по три-четыре раунда картинок подряд: движок риска Google в первую очередь смотрит на cookies. Ниже — какие cookies и записи задействует reCAPTCHA, как их отсутствие поднимает сложность проверки и что сохранять между запусками для более лёгких заданий — и через браузер, и через API CaptchaAI.

Какие cookies и записи задействует reCAPTCHA

Cookies домена Google

Устанавливаются на .google.com и считываются iframe reCAPTCHA:

Cookie Домен Назначение Срок действия
NID .google.com Настройки Google и уникальный идентификатор 6 месяцев
SID / HSID / SSID .google.com Сессия аккаунта Google (если выполнен вход) 2 года
APISID / SAPISID .google.com Аутентификация API Google 2 года
1P_JAR .google.com Персонализация рекламы Google 1 месяц
CONSENT .google.com Согласие на использование cookies 17 лет

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

Ключ / cookie Домен Назначение Срок действия
_GRECAPTCHA .google.com / .recaptcha.net Отслеживание сессии reCAPTCHA Сессия
rc::a localStorage Данные анализа риска Постоянно
rc::b localStorage Временная метка последней проверки Сессия
rc::c localStorage Данные текущей проверки Сессия
rc::d-<id> localStorage Данные конкретного виджета Сессия

Cookies целевого сайта

Сайт, на котором размещён виджет reCAPTCHA, обычно добавляет свои cookies для сессии и CSRF-защиты:

  • ID сессии (PHPSESSID, session_id) — связывает решённую CAPTCHA с сессией пользователя.
  • CSRF-токен (csrf_token, _token) — требуется для отправки формы.
  • Собственное отслеживание сайта (зависит от сайта) — может влиять на то, когда именно появляется CAPTCHA.

Ограничения между доменами: SameSite, блокировка сторонних cookies, ITP

reCAPTCHA загружается iframe с google.com, а современные браузеры ужесточают политику cookies именно для сторонних доменов:

Политика браузера Эффект на reCAPTCHA
SameSite=Lax (значение по умолчанию) Cookies Google по умолчанию не отправляются в iframe reCAPTCHA
Блокировка сторонних cookies reCAPTCHA переключается на recaptcha.net или first-party-режим
ITP (Safari) Cookies Google истекают быстрее, сложные проверки выпадают чаще

Google компенсирует это доменом recaptcha.net, состоянием в localStorage и first-party-загрузкой скрипта для Enterprise.

Как состояние cookies меняет сложность проверки

Cookies — лишь один из сигналов, которые Google учитывает при оценке риска, но влияет он заметно:

Состояние cookies Сложность проверки Почему
Выполнен вход в аккаунт Google Минимальная Сильный сигнал идентичности
Cookies Google есть, входа нет Низкая–средняя Видна обычная история просмотров
Свежий браузер, cookies Google отсутствуют Средняя–высокая Нет истории для оценки риска
Cookies заблокированы или удалены Высокая Выглядит подозрительно — у обычных браузеров cookies есть
Режим инкогнито / приватный режим Высокая Нет постоянной идентичности

Три сценария, которые встречаются на практике чаще всего:

  1. Лучший случай. В браузере есть SID, HSID, NID из сессии Google с выполненным входом → часто достаточно клика по чекбоксу.
  2. Средний случай. В браузере есть NID и 1P_JAR от обычного просмотра → более простые графические проверки или чекбокс без картинок.
  3. Худший случай. Cookies Google отсутствуют, сессия новая → несколько раундов графических проверок подряд.

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

Как работать с cookies и localStorage в автоматизации и через API CaptchaAI

Браузерная автоматизация (Playwright / Puppeteer)

Браузерная автоматизация обрабатывает cookies сама по себе — нужно лишь сохранять и восстанавливать их между запусками. Пример: при парсинге карточек Wildberries или Ozon через Playwright в Docker один и тот же профиль с cookies Google за пару дней просмотра держит reCAPTCHA v2 на уровне «клик по чекбоксу».

# Save cookies after session
cookies = page.context.cookies()
import json
with open("cookies.json", "w") as f:
    json.dump(cookies, f)

# Restore cookies in next session
with open("cookies.json") as f:
    cookies = json.load(f)
page.context.add_cookies(cookies)

Решение только через API CaptchaAI (без браузера)

Без браузера cookies не влияют на сам процесс решения — CaptchaAI работает в собственной среде. Если сайту после решения нужна непрерывность сессии, cookies передаются отдельным параметром:

POST https://ocr.captchaai.com/in.php

key=YOUR_API_KEY
&method=userrecaptcha
&googlekey=SITE_KEY
&pageurl=https://staging.example.com/qa-login
&cookies=NID=12345;1P_JAR=2026-04-04-12

Параметр необязательный и не влияет на получение токена.

Сохранение записей localStorage (rc::*)

Записи rc::arc::d из таблицы выше reCAPTCHA читает сама. Но их стоит сохранять между запусками вместе с cookies — эффект сопоставим:

# Save localStorage
storage = page.evaluate("() => JSON.stringify(localStorage)")
with open("localstorage.json", "w") as f:
    f.write(storage)

# Restore localStorage
with open("localstorage.json") as f:
    storage = f.read()
page.evaluate(f"Object.entries(JSON.parse('{storage}')).forEach(([k,v]) => localStorage.setItem(k,v))")

Рекомендуемые практики

  • Сохранять профиль браузера между запусками — история просмотров → более лёгкие проверки.
  • Не очищать cookies между задачами — сохраняет непрерывность оценки риска.
  • Переключаться на recaptcha.net, если google.com заблокирован.
  • Сохранять localStorage rc::* вместе с cookies.
  • Периодически открывать сервисы Google в том же профиле.

Частые вопросы

Что делать, если reCAPTCHA всё равно требует картинки при полном наборе cookies?

Значит, перевешивает другой сигнал: репутация IP, скорость движений мыши, паттерн заполнения формы. Cookies снижают сложность, но не гарантируют checkbox сами по себе.

Обязательно ли передавать параметр cookies при отправке задачи через in.php?

Нет, без него решение проходит штатно — параметр нужен, только если сайту важна непрерывность сессии.

Блокировка сторонних cookies в браузере действительно усложняет reCAPTCHA?

Да. Google не видит историю аккаунта в iframe и чаще переключает reCAPTCHA на recaptcha.net, где проверки сложнее из-за нехватки сигналов.

Отличаются ли требования к cookies у reCAPTCHA v2 и v3?

Механизм похож, но v3 полагается на них сильнее: там нет чекбокса, только числовой score, и слабая идентичность сразу тянет его вниз.

Как долго держатся cookies NID и 1P_JAR и когда их обновлять?

NID живёт около 6 месяцев, 1P_JAR — около месяца. При регулярном использовании профиля оба обновляются сами; для долгоживущих сессий автоматизации стоит время от времени открывать любую страницу Google в этом же профиле.

Поиск неисправностей

Проблема Причина Решение
Постоянно выпадают сложные графические проверки Нет cookies / свежий профиль Наработать профиль с cookies Google, не очищать между запусками
reCAPTCHA показывает ошибку «cookies required» Заблокированы сторонние cookies Разрешить cookies для google.com или переключиться на recaptcha.net
Токен получен, но сессия на сайте не совпадает Не сохранён cookie сайта (PHPSESSID) Сохранять и восстанавливать все cookies, а не только Google
Проверка зацикливается и снова просит картинки localStorage очищен между попытками Сохранять записи rc::* вместе с cookies

Следующие шаги

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