Você resolveu o Cloudflare Turnstile em staging via CaptchaAI, pegou o cookie cookie_qa_validacao, colocou-o na sua sessão – e a página do desafio aparece novamente. Este loop acontece quando o cookie não corresponde ao contexto da sessão. Aqui estão todas as causas e como corrigi-las.
Como funciona cookie_qa_validacao
Quando CaptchaAI resolve um Cloudflare Turnstile em staging, ele retorna um cookie cookie_qa_validacao. Este cookie está vinculado a:
- O IP do proxy usado durante a resolução
- O User-Agent usado durante a resolução
- O domínio do site de destino
Se algum deles diferir entre a solução e sua solicitação subsequente, a Cloudflare rejeita o cookie e mostra o desafio novamente.
Causa 1: incompatibilidade entre usuário e agente
A causa mais comum. O User-Agent que você envia para CaptchaAI deve corresponder exatamente ao User-Agent em suas solicitações.
import requests
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
# Step 1: Solve with the SAME User-Agent
solve_data = {
"key": "YOUR_API_KEY",
"method": "turnstile_staging",
"pageurl": "https://example.com",
"proxy": "host:port:user:pass",
"proxytype": "HTTP",
"userAgent": USER_AGENT, # Must match step 2
"json": 1
}
submit = requests.post("https://ocr.captchaai.com/in.php", data=solve_data).json()
# ... poll for result ...
# Step 2: Use the SAME User-Agent in subsequent requests
session = requests.Session()
session.headers["User-Agent"] = USER_AGENT # Must match step 1
session.cookies.set("cookie_qa_validacao", cookie_qa_validacao_value, domain=".example.com")
resp = session.get("https://example.com")
Causa 2: incompatibilidade de IP do proxy
O cookie cookie_qa_validacao está vinculado ao IP que resolveu o desafio. Se você solicitar o site de um IP diferente, o cookie será rejeitado.
PROXY = "host:port:user:pass"
# Solve with this proxy
solve_data = {
"key": "YOUR_API_KEY",
"method": "turnstile_staging",
"pageurl": "https://example.com",
"proxy": PROXY,
"proxytype": "HTTP",
"userAgent": USER_AGENT,
"json": 1
}
# Use the SAME proxy for subsequent requests
session.proxies = {
"http": f"http://user:pass@host:port",
"https": f"http://user:pass@host:port"
}
Importante: se você usar proxies rotativos, fixe em uma sessão fixa. O IP deve permanecer o mesmo entre a resolução e a navegação.
Causa 3: cookie não definido corretamente
O cookie cookie_qa_validacao deve ser definido no domínio correto com os atributos corretos.
# WRONG — setting on wrong domain
session.cookies.set("cookie_qa_validacao", value, domain="example.com")
# CORRECT — include the dot prefix for subdomain coverage
session.cookies.set("cookie_qa_validacao", value, domain=".example.com")
# Or set all cookies returned by CaptchaAI
for cookie_str in result.get("cookies", "").split(";"):
if "cookie_qa_validacao" in cookie_str:
name, val = cookie_str.strip().split("=", 1)
session.cookies.set(name.strip(), val.strip(), domain=".example.com")
Causa 4: cookie expirou
Os cookies cookie_qa_validacao têm vida útil limitada – normalmente de 15 a 30 minutos. Após o vencimento, a Cloudflare mostra o desafio novamente.
Correção: Rastreie a idade do cookie e resolva antes de expirar.
import time
last_solve_time = None
COOKIE_TTL = 900 # 15 minutes
def get_cookie_qa_validacao():
global last_solve_time
if last_solve_time and (time.time() - last_solve_time) < COOKIE_TTL:
return # Cookie still valid
# Solve again
cookie_qa_validacao = solve_turnstile_staging()
session.cookies.set("cookie_qa_validacao", cookie_qa_validacao, domain=".example.com")
last_solve_time = time.time()
Causa 5: incompatibilidade de sinal de navegador TLS
Cloudflare verifica impressões digitais TLS. A biblioteca requests do Python tem uma sinal de navegador TLS diferente da do Chrome. Alguns sites rejeitam solicitações mesmo com cookie_qa_validacao válido se a sinal de navegador TLS não corresponder.
Correção: Use curl_cffi ou tls-client para impressões digitais TLS semelhantes a navegador.
pip install curl_cffi
from curl_cffi import requests as curl_requests
session = curl_requests.Session(impersonate="chrome120")
session.cookies.set("cookie_qa_validacao", value, domain=".example.com")
resp = session.get("https://example.com")
Lista de verificação de depuração
Challenge keeps repeating
↓
User-Agent in solve request matches browsing request? → No → Sync User-Agent
↓ Yes
Same proxy IP for solve and browse? → No → Pin proxy IP (sticky session)
↓ Yes
Cookie set on correct domain (.example.com)? → No → Fix domain
↓ Yes
Cookie less than 15 minutes old? → No → Re-solve the challenge
↓ Yes
TLS sinal de navegador matches a browser? → No → Use curl_cffi or tls-client
↓ Yes
Site may have additional bot detection → Use headless browser instead
Perguntas frequentes
Quanto tempo dura um cookie cookie_qa_validacao?
Normalmente 15–30 minutos. Alguns sites definem durações mais curtas. Resolva proativamente antes de expirar.
Preciso de uma versão específica do Chrome no User-Agent?
Use um User-Agent atual e realista. User-Agents desatualizados acionam verificações da Cloudflare de forma mais agressiva.
Posso reutilizar um cookie cookie_qa_validacao em páginas diferentes?
Sim, desde que estejam no mesmo domínio e você use o mesmo IP e User-Agent.
Resolva Cloudflare Turnstile em stagings com CaptchaAI
Quebre o ciclo do desafio emcaptchaai.com.
Guias relacionados
- Como resolver Cloudflare Turnstile em staging usando API
- Cloudflare Turnstile em staging vs Cloudflare Turnstile: Como detectar
- Persistência de sessão do navegador para fluxos de trabalho CAPTCHA
- Práticas recomendadas de configuração de proxy