Explicaciones Técnicas

Requisitos de las cookies reCAPTCHA: qué se establece y por qué es importante

¿Por qué el mismo script recibe una tanda interminable de imágenes un día y pasa con un solo clic al siguiente? En la mayoría de los casos la diferencia está en las cookies. reCAPTCHA lee y escribe cookies para calcular cuánto confía en cada visita: un navegador con cookies recientes de Google se enfrenta a desafíos mucho más suaves que uno que llega sin ninguna. Saber cuáles entran en juego y cuáles conservar es la palanca más barata para bajar la dificultad en tu automatización.

Cómo influyen las cookies en la dificultad del desafío

Google usa las cookies como una señal más dentro de su evaluación de riesgo. No deciden solas el resultado, pero pesan lo suficiente como para convertir un desafío imposible en un simple clic:

Estado de las cookies Dificultad del desafío Motivo
Sesión iniciada en la cuenta de Google Mínima Señal de identidad fuerte
Cookies de Google presentes (sin iniciar sesión) Baja-media Refleja un historial de navegación normal
Navegador nuevo, sin cookies de Google Media-alta No hay historial para evaluar el riesgo
Cookies bloqueadas o eliminadas Alta Sospechoso: un navegador normal tiene cookies
Modo incógnito o privado Alta Sin identidad persistente

El peso de las cookies en la puntuación de riesgo

El motor de riesgo de reCAPTCHA pondera mucho lo que encuentra en el navegador. En la práctica se ven tres escenarios:

  1. Mejor caso: el navegador tiene las cookies SID, HSID y NID de una sesión de Google iniciada. → suele pasar con solo marcar la casilla.
  2. Caso favorable: el navegador tiene NID y 1P_JAR de la navegación normal. → desafíos de imagen más sencillos o casilla directa.
  3. Peor caso: sin cookies de Google y con una sesión nueva. → desafíos de imagen de varias rondas.

La conclusión es directa: cuanto más "humano" parezca el historial de cookies, menos fricción encontrarás.

Qué cookies utiliza reCAPTCHA

En una carga de reCAPTCHA entran en juego tres familias de cookies, cada una con un peso distinto:

  • Las que pone Google en .google.com y lee el iframe.
  • Las propias de reCAPTCHA, casi todas en localStorage.
  • Las del sitio de destino, que sostienen tu sesión y el token CSRF.

Cookies del dominio de Google

Se establecen en .google.com y las lee el iframe de reCAPTCHA:

Cookie Dominio Función Duración
NID .google.com Preferencias de Google e identificador único 6 meses
SID / HSID / SSID .google.com Sesión de la cuenta de Google (si has iniciado sesión) 2 años
APISID / SAPISID .google.com Autenticación de las APIs de Google 2 años
1P_JAR .google.com Personalización de anuncios de Google 1 mes
CONSENT .google.com Preferencia de consentimiento de cookies 17 años

Cookies propias de reCAPTCHA

Cookie Dominio Función Duración
_GRECAPTCHA .google.com / .recaptcha.net Seguimiento de la sesión de reCAPTCHA Sesión
rc::a localStorage Datos de análisis de riesgo Persistente
rc::b localStorage Marca de tiempo Sesión
rc::c localStorage Datos del desafío en curso Sesión
rc::d-<id> localStorage Datos por widget Sesión

Cookies del sitio de destino

El sitio que aloja el reCAPTCHA también puede usar cookies para la sesión y para la protección CSRF:

Tipo de cookie Ejemplo Relevancia
ID de sesión PHPSESSID, session_id Vincula la resolución del CAPTCHA a la sesión del usuario
token CSRF csrf_token, _token Necesario para enviar el formulario
Seguimiento propio Específico del sitio Puede influir en cuándo se activa el CAPTCHA

Cómo manejar las cookies en la automatización

Piensa en un caso habitual en la región: un scraper que monitoriza precios en un marketplace tipo MercadoLibre o Amazon.es desde un servidor en la nube, respetando siempre los términos del servicio y la normativa de protección de datos aplicable. Ese servidor arranca sin historial, así que reCAPTCHA lo trata como sospechoso. La solución no es fuerza bruta, sino conservar el estado del navegador entre ejecuciones.

Con automatización del navegador (Playwright/Puppeteer)

La automatización del navegador gestiona las cookies de forma natural. Para conservarlas entre sesiones:

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

Con CaptchaAI (resolución solo por API)

Cuando resuelves con CaptchaAI sin un navegador propio, las cookies no intervienen directamente en la resolución: CaptchaAI gestiona su propio entorno. Aun así, puede que quieras enviar cookies si el sitio de destino las necesita para mantener la continuidad de la sesión:

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

El parámetro cookies es opcional y transmite el contexto de cookies a CaptchaAI durante la resolución.

localStorage: el estado que no vive en las cookies

reCAPTCHA guarda datos de evaluación de riesgo en localStorage bajo claves con el prefijo rc:::

Clave Datos
rc::a Carga útil de análisis de riesgo codificada
rc::b Marca de tiempo del último desafío
rc::c Datos de la sesión de desafío actual
rc::d-<hash> Datos de instancia por widget

Estas entradas permiten a reCAPTCHA mantener el estado entre cargas de página sin depender de cookies de terceros. En la automatización, conservar el localStorage puede reducir la dificultad del desafío:

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

Restricciones de cookies entre dominios

reCAPTCHA se carga en un iframe desde google.com, y los navegadores modernos aplican políticas de cookies cada vez más estrictas:

Política del navegador Efecto sobre reCAPTCHA
SameSite=Lax (predeterminada) Las cookies de Google no se envían en el iframe de reCAPTCHA por defecto
Bloqueo de cookies de terceros reCAPTCHA recurre a recaptcha.net o al modo propio (first-party)
ITP (Safari) Las cookies de Google caducan antes; los desafíos difíciles aparecen con más frecuencia

Cómo lo compensa Google

Google mitiga las restricciones de cookies de terceros de varias formas:

  • Usa recaptcha.net como dominio alternativo.
  • Emplea localStorage (entradas rc::*) para el estado del lado del cliente.
  • Ofrece opciones de carga de scripts propios (first-party) para clientes Enterprise.

Buenas prácticas de manejo de cookies

Práctica Beneficio
Reutiliza los perfiles del navegador entre ejecuciones Acumula historial → desafíos más fáciles
No borres las cookies entre tareas Mantiene la continuidad de la evaluación de riesgo de Google
Usa recaptcha.net cuando google.com esté bloqueado Mismo servicio, otro dominio
Conserva las entradas rc:: de localStorage Mantiene el estado de la sesión de reCAPTCHA
Visita servicios de Google de vez en cuando Renueva la validez de las cookies

Solución de problemas

Problema Causa Solución
Siempre te salen desafíos de imagen difíciles Sin cookies / perfil nuevo Construye un perfil de navegador con cookies de Google
reCAPTCHA muestra el error "cookies required" Cookies de terceros bloqueadas Habilita las cookies para google.com o usa recaptcha.net
Token válido pero la sesión no coincide No se conserva la cookie del sitio (PHPSESSID) Guarda y restaura todas las cookies, no solo las de Google
Bucle de desafíos: pide imágenes sin parar localStorage borrado entre intentos Conserva las entradas rc::* de localStorage

Preguntas frecuentes

Ninguna aislada, pero las cookies de sesión de Google (SID, HSID) marcan la mayor diferencia porque indican una cuenta con sesión iniciada. Sin esas, NID más un historial de navegación normal ya te acercan a la casilla directa.

¿Puedo compartir el mismo perfil de cookies entre varios workers?

Es mejor no hacerlo. Si muchos procesos usan las mismas cookies desde distintas IP a la vez, Google detecta la incoherencia y sube la dificultad. Mantén un perfil persistente por worker y consérvalo entre ejecuciones.

¿Sirve de algo enviar cookies a la API de CaptchaAI?

Solo cuando el sitio de destino las exige para la continuidad de la sesión. Para la resolución en sí no son necesarias: CaptchaAI resuelve con su propia infraestructura y el parámetro cookies es opcional.

¿El bloqueo de cookies de terceros rompe reCAPTCHA por completo?

No. reCAPTCHA recurre a recaptcha.net y a localStorage para mantener el estado, así que sigue funcionando; lo que suele ocurrir es que los desafíos se vuelven más difíciles y frecuentes.

¿Conservar el localStorage importa tanto como las cookies?

Cada vez más. Con el bloqueo de cookies de terceros, las entradas rc::* de localStorage cargan buena parte del estado de riesgo, así que borrarlas entre intentos reinicia esa señal y endurece los desafíos.

Artículos relacionados

Próximos pasos

Mejora tus tasas de resolución de reCAPTCHA: consigue tu API key de CaptchaAI y gestiona las cookies con cabeza en tus flujos de automatización.

Los comentarios están deshabilitados para este artículo.