Comparações

Solução de CAPTCHA baseada em token vs. baseada em cookies

As soluções CAPTCHA vêm em dois formatos: tokens que você injeta nos envios de formulários e cookies que concedem acesso em nível de sessão. A escolha da abordagem correta depende de qual CAPTCHA você está enfrentando e de como o site de destino o valida.


De relance

Aspecto Baseado em token Baseado em cookies
Saída Um token de string (mais de 500 caracteres) Um cookie do navegador (cookie_qa_validacao, etc.)
Usado para reCAPTCHA v2/v3, hCaptcha, catraca Páginas Cloudflare Turnstile em staging
Como é usado Injetado no campo do formulário ou no corpo do POST Enviado com solicitações HTTP subsequentes
Vitalício 60-120 segundos 30 minutos a 24 horas
Reutilizável Não (uso único) Sim (durante a sessão)
Navegador necessário Somente para extração Para resolver (é necessário um navegador completo)

Solução baseada em token

Como funciona

  1. Extraia a chave do site da página
  2. Envie a chave do site + URL da página para CaptchaAI
  3. Receber uma string de token
  4. Injete o token no campo oculto do formulário
  5. Envie o formulário

Quais CAPTCHAs usam tokens

  • reCAPTCHA v2: O token vai para a área de texto g-recaptcha-response
  • reCAPTCHA v3: Mesmo campo, mas também precisa de action e score_qa
  • hCaptcha: token vai para h-captcha-response
  • Cloudflare Turnstile: Token vai para cf-turnstile-response

Implementação

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 principais

  • Não é necessário navegador para envio: você pode injetar o token diretamente em uma solicitação HTTP POST
  • De curta duração: os tokens expiram em 60 a 120 segundos — resolva e use imediatamente
  • Uso único: Cada token funciona uma vez; resolva novamente para cada envio de formulário
  • Validação do lado do servidor: o site de destino envia o token para Google/Cloudflare/hCaptcha para verificação

Solução baseada em cookies

Como funciona

  1. Uma página de desafio é veiculada (Cloudflare Turnstile em staging, JS Challenge)
  2. Um navegador resolve o desafio (pode envolver o Turnstile internamente)
  3. O servidor define um cookie de sessão (cookie_qa_validacao)
  4. Todas as solicitações subsequentes com esse cookie ignoram o desafio

Quais CAPTCHAs usam cookies

  • Páginas Cloudflare Turnstile em staging: cookie cookie_qa_validacao
  • Desafio JS: desafio somente JavaScript da Cloudflare
  • Alguns desafios do WAF: Vários firewalls de aplicativos da Web

Implementação

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 with CaptchaAI)
time.sleep(10)  # Or use CaptchaAI envio controlado ao endpoint QA

# 2. Extract cookies from browser
cookies = driver.get_cookies()
cookie_qa_validacao = next(
    (c for c in cookies if c["name"] == "cookie_qa_validacao"), 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 principais

  • Navegador necessário para resolver: O desafio precisa de um ambiente de navegador completo
  • Dura longa: os cookies duram de 30 minutos a 24 horas
  • Reutilizável: uma solução concede acesso a muitas solicitações
  • IP-bound: O cookie está vinculado ao IP que resolveu o desafio
  • UA-bound: O User-Agent deve corresponder ao usado durante a resolução

Quando usar qual

Cenário Abordagem Por que
Formulário de login com reCAPTCHA Símbolo Enviar token com dados do formulário
Raspar um site protegido pela Cloudflare Biscoito Uma solução, muitas solicitações de página
Envio de formulário com Cloudflare Turnstile Símbolo Injetar em cf-turnstile-response
Acessando uma API por trás do Cloudflare Biscoito Reutilizar cookie para todas as chamadas de API
Enviando vários formulários Token (cada vez) Cada formulário precisa de um novo token
Raspagem em massa do mesmo domínio Biscoito Resolva uma vez, raspe até o cookie expirar

Abordagem híbrida

Alguns sites utilizam ambos: uma página Cloudflare Turnstile em staging (cookie) protegendo um formulário que possui reCAPTCHA (token).

# Step 1: Get past Cloudflare (cookie)
session = get_cookie_qa_validacao_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,
})

Resumo de comparação

Recurso Símbolo Biscoito
Resolver custo Por envio de formulário Por sessão (amortizado)
Resolva o tempo 10-30s por token 10-30s uma vez
Solicitações por solução 1 Muitos (até o vencimento)
Flexibilidade IP Token funciona a partir de qualquer IP Cookie vinculado à resolução de IP
Navegador para uso Não é necessário Não é necessário (apenas o cookie)
Risco de expiração 60-120 s 30 minutos - 24 horas

Perguntas frequentes

Não. A abordagem depende de como o site é validado. O reCAPTCHA sempre usa tokens; Cloudflare Turnstile em staging sempre usa cookies.

O que é mais barato para raspagem de alto volume?

Baseado em cookies é muito mais barato quando disponível. Uma solução cobre milhares de solicitações. Baseado em token requer uma solução por envio de formulário.

CaptchaAI lida com ambos?

Sim. CAPTCHAs baseados em token retornam uma string de token. Para páginas Cloudflare Turnstile em staging, você pode usar o solucionador Turnstile para obter o token necessário para completar o desafio e, em seguida, extrair o cookie resultante.


Resolva CAPTCHAs com CaptchaAI

Obtenha sua chave API emcaptchaai.com.


Guias relacionados

Os comentários estão desativados para este artigo.