Comparativas

Resolución de CAPTCHA basada en tokens versus basada en cookies

Las soluciones CAPTCHA vienen en dos formas: tokens que se inyectan en los envíos de formularios y cookies que otorgan acceso a nivel de sesión. Elegir el enfoque correcto depende del CAPTCHA al que te enfrentes y de cómo lo valide el sitio de destino.


De un vistazo

Aspecto Basado en tokens Basado en cookies
Salida Un token de cadena (más de 500 caracteres) Una cookie del navegador (qa_validation_cookie, etc.)
Utilizado para reCAPTCHA v2/v3, hCaptcha, Torniquete Páginas Cloudflare Challenge
como se usa Inyectado en el campo del formulario o en el cuerpo POST Enviado con solicitudes HTTP posteriores
Toda la vida 60-120 segundos 30 minutos a 24 horas
Reutilizable No (uso único) Sí (durante la duración de la sesión)
Se requiere navegador Sólo para extracción Para resolver (se necesita un navegador completo)

Resolución basada en tokens

como funciona

  1. Extraiga la clave del sitio de la página.
  2. Envíe la clave del sitio + la URL de la página a CaptchaAI
  3. Recibir una cadena de token
  4. Inyecte el token en el campo del formulario oculto
  5. Envía el formulario

¿Qué CAPTCHA utilizan tokens?

  • reCAPTCHA v2: El token va al área de texto g-recaptcha-response
  • reCAPTCHA v3: Mismo campo, pero también necesita action (y enterprise=1 para sitekeys Enterprise)
  • hCaptcha: El token entra en h-captcha-response
  • Torniquete: La ficha entra en cf-turnstile-response

Implementación

import requests
import time

API_KEY = "YOUR_API_KEY"

# 1. Solve
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "6Le-wvkSAAAAAPBMR...",
    "pageurl": "https://staging.example.com/qa-login",
    "json": "1",
}).json()
task_id = resp["request"]

# 2. Poll
token = None
for _ in range(24):
    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["status"] == 1:
        token = result["request"]
        break

# 3. Submit form with token (no browser needed)
form_response = requests.post("https://staging.example.com/qa-login", data={
    "email": "user@example.com",
    "password": "password",
    "g-recaptcha-response": token,
})

Características clave

  • No se necesita navegador para el envío: puede inyectar el token directamente en una solicitud HTTP POST
  • De corta duración: los tokens caducan en 60-120 segundos: resuélvelos y úsalos inmediatamente.
  • Uso único: Cada token funciona una vez; resolver nuevamente para cada envío de formulario
  • Validación del lado del servidor: el sitio de destino envía el token a Google/Cloudflare/hCaptcha para su verificación.

Resolución basada en cookies

como funciona

  1. Se publica una página de desafío (Cloudflare Challenge, JS Challenge)
  2. Un navegador resuelve el desafío (puede involucrar a Turnstile internamente)
  3. El servidor establece una cookie de sesión (qa_validation_cookie)
  4. Todas las solicitudes posteriores con esa cookie omiten el desafío.

¿Qué CAPTCHA utilizan cookies?

  • Páginas Cloudflare Challenge: cookie qa_validation_cookie
  • JS Challenge: desafío exclusivo de JavaScript de Cloudflare
  • Algunos desafíos de WAF: varios firewalls de aplicaciones web

Implementación

from selenium import webdriver
import requests
import time

# 1. Solve the challenge in a browser
driver = webdriver.Chrome()
driver.get("https://example.com/protected")

# Wait for challenge to complete (manually or con CaptchaAI)
time.sleep(10)  # O valida el token con CaptchaAI en una prueba propia

# 2. Extract cookies from browser
cookies = driver.get_cookies()
qa_validation_cookie = next(
    (c for c in cookies if c["name"] == "qa_validation_cookie"), None
)
user_agent = driver.execute_script("return navigator.userAgent")
driver.quit()

# 3. Use cookies for subsequent requests (no browser needed)
session = requests.Session()
session.headers.update({"User-Agent": user_agent})

for cookie in cookies:
    session.cookies.set(cookie["name"], cookie["value"])

# All requests now pass the challenge
for page in range(1, 50):
    resp = session.get(f"https://example.com/api/data?page={page}")
    print(f"Page {page}: {resp.status_code}")

Características clave

  • Se requiere un navegador para resolverlo: el desafío necesita un entorno de navegador completo
  • De larga duración: las cookies duran entre 30 minutos y 24 horas.
  • Reutilizable: una solución otorga acceso a muchas solicitudes
  • Ligada a IP: la cookie está vinculada a la IP que resolvió el desafío.
  • Limitado a UA: El User-Agent debe coincidir con el utilizado durante la resolución

Cuando usar cual

Escenario Enfoque ¿Por qué?
Formulario de inicio de sesión con reCAPTCHA ficha Enviar token con datos del formulario
Eliminación de un sitio protegido por Cloudflare galleta Una solución, muchas solicitudes de página
Envío de formularios con Turnstile ficha Inyectar en cf-turnstile-response
Accediendo a una API detrás de Cloudflare galleta Reutilizar cookie para todas las llamadas API
Enviar varios formularios Ficha (cada vez) Cada formulario necesita un token nuevo
Eliminación masiva del mismo dominio galleta Resolver una vez, raspar hasta que caduque la galleta

Enfoque híbrido

Algunos sitios utilizan ambos: una página Cloudflare Challenge (cookie) que protege un formulario que tiene reCAPTCHA (token).

# Step 1: Get past Cloudflare (cookie)
session = get_qa_validation_cookie_session("https://example.com")

# Step 2: Load the form (using the cookie session)
html = session.get("https://example.com/submit").text
sitekey = extract_sitekey(html)

# Step 3: Solve reCAPTCHA (token)
token = solve_recaptcha(sitekey, "https://example.com/submit")

# Step 4: Submit form (cookie + token)
resp = session.post("https://example.com/submit", data={
    "data": "value",
    "g-recaptcha-response": token,
})

Resumen comparativo

Característica ficha galleta
Resolver costo Por envío de formulario Por sesión (amortizado)
resolver el tiempo 10-30 por ficha 10-30s una vez
Solicitudes por resolución 1 Muchos (hasta caducidad)
Flexibilidad de propiedad intelectual El token funciona desde cualquier IP Cookie vinculada a la resolución de IP
Navegador para usar No es necesario No es necesario (solo la galleta)
Riesgo de caducidad 60-120s 30 minutos - 24 horas

Preguntas frecuentes

¿Puedo convertir un CAPTCHA basado en token a uno basado en cookies?

No. El enfoque depende de cómo se valida el sitio. reCAPTCHA siempre usa tokens; Cloudflare Challenge siempre utiliza cookies.

¿Cuál es más barato para el raspado de gran volumen?

Las basadas en cookies son mucho más baratas cuando están disponibles. Una solución cubre miles de solicitudes. Basado en token requiere una resolución por envío de formulario.

¿CaptchaAI maneja ambos?

Sí. Los CAPTCHA basados ​​en tokens devuelven una cadena de tokens. Para las páginas Cloudflare Challenge, puede utilizar el solucionador Turnstile para obtener el token necesario para completar el desafío y luego extraer la cookie resultante.


Resolver CAPTCHA con CaptchaAI

Obtenga su clave API encaptchaai.com.


Guías relacionadas

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