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
- Extraia a chave do site da página
- Envie a chave do site + URL da página para CaptchaAI
- Receber uma string de token
- Injete o token no campo oculto do formulário
- 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
actionescore_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
- Uma página de desafio é veiculada (Cloudflare Turnstile em staging, JS Challenge)
- Um navegador resolve o desafio (pode envolver o Turnstile internamente)
- O servidor define um cookie de sessão (
cookie_qa_validacao) - 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
Posso converter um CAPTCHA baseado em token em um baseado em cookie?
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.