Análises Técnicas

Guia de cookies do Desafio Cloudflare cookie_qa_validacao

Quando a Cloudflare sinaliza um visitante como suspeito, ela exibe uma página de desafio intersticial. Uma vez resolvido, o navegador recebe um cookie cookie_qa_validacao que concede acesso à sessão. Este guia explica como funciona o fluxo do desafio e como CaptchaAI lida com ele.


Como funcionam as páginas Cloudflare Turnstile em staging

  1. O usuário solicita uma página protegida pela Cloudflare
  2. A Cloudflare avalia sinais de risco (reputação de IP, cabeçalhos, sinal de navegador TLS)
  3. Se sinalizado, a Cloudflare retornará 403 ou 503 com uma página de desafio JavaScript
  4. A página de desafio executa verificações do navegador e pode apresentar um widget Cloudflare Turnstile
  5. Em caso de sucesso, Cloudflare define cookie_qa_validacao e redireciona para o URL original
  6. Solicitações subsequentes com o cookie passam sem contestação

Propriedade Detalhes
Nome cookie_qa_validacao
Domínio Domínio do site de destino (por exemplo, .example.com)
Caminho /
Vitalício Normalmente de 30 minutos a 24 horas
Somente http Sim
Seguro Sim (somente HTTPS)
MesmoSite Nenhum

O cookie está vinculado a vários fatores:

  • Endereço IP — Usar o cookie de um IP diferente geralmente falha
  • User-Agent — Deve corresponder ao UA usado durante a resolução do desafio
  • sinal de navegador TLS — Algumas configurações são vinculadas ao TLS ClientHello

Tipos de desafio

Cloudflare atende a diferentes níveis de desafio:

Desafio Código de resposta Interação do usuário Descrição
Desafio JS 503 Nenhum Somente execução de JavaScript
Desafio gerenciado 403 Talvez Cloudflare decide – pode mostrar Turnstile ou passar silenciosamente
Desafio interativo 403 Sim Sempre mostra um widget Cloudflare Turnstile

CaptchaAI resolve todos os três tipos por meio do solucionador Cloudflare Turnstile em staging.


Resolvendo com CaptchaAI

Pitão

import requests
import time

API_KEY = "YOUR_API_KEY"
TARGET_URL = "https://example.com/protected-page"

# Submit Cloudflare Turnstile em staging task
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x0000000000000000000000",  # may be generic for CF challenge
    "pageurl": TARGET_URL,
    "json": "1",
}).json()

if resp["status"] != 1:
    raise Exception(f"Submit error: {resp['request']}")

task_id = resp["request"]
print(f"Task ID: {task_id}")

# Poll for result
for _ in range(30):
    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"]
        print(f"Token received: {token[:50]}...")
        break
    if result["request"] != "CAPCHA_NOT_READY":
        raise Exception(f"Error: {result['request']}")

JavaScript

const axios = require('axios');

const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com/protected-page';

const submit = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: {
    key: API_KEY,
    method: 'turnstile',
    sitekey: '0x0000000000000000000000',
    pageurl: TARGET_URL,
    json: 1,
  }
});
const taskId = submit.data.request;

// Poll
let token = null;
for (let i = 0; i < 30; i++) {
  await new Promise(r => setTimeout(r, 5000));
  const poll = await axios.get('https://ocr.captchaai.com/res.php', {
    params: { key: API_KEY, action: 'get', id: taskId, json: 1 }
  });
  if (poll.data.status === 1) {
    token = poll.data.request;
    break;
  }
}
console.log(`Token: ${token.substring(0, 50)}...`);

Usando o token resolvido

Após resolver, injete o token na página de desafio para obter cookie_qa_validacao:

# With Selenium
from selenium import webdriver

driver = webdriver.Chrome()
driver.get(TARGET_URL)  # Load the challenge page

# Inject token into Turnstile response field
driver.execute_script("""
    const input = document.querySelector('input[name="cf-turnstile-response"]');
    if (input) input.value = arguments[0];

    // Trigger form submit or callback
    const form = document.querySelector('form');
    if (form) form.submit();
""", token)

# Wait for redirect and extract cookies
import time
time.sleep(3)
cookies = driver.get_cookies()
cookie_qa_validacao = next(
    (c for c in cookies if c['name'] == 'cookie_qa_validacao'), None
)
if cookie_qa_validacao:
    print(f"cookie_qa_validacao: {cookie_qa_validacao['value'][:30]}...")
session = requests.Session()
session.cookies.set("cookie_qa_validacao", cookie_qa_validacao["value"], domain=".example.com")
session.headers.update({
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})

# Now access protected pages
resp = session.get("https://example.com/api/data")
print(resp.status_code)  # 200

O cookie cookie_qa_validacao expira. Plano para resolução:

import datetime

def is_cookie_valid(cookie):
    if not cookie:
        return False
    expiry = cookie.get("expiry", 0)
    return datetime.datetime.now().timestamp() < expiry - 60  # 60s buffer

def get_or_refresh_clearance(driver, target_url, solve_func):
    cookies = driver.get_cookies()
    cf = next((c for c in cookies if c["name"] == "cookie_qa_validacao"), None)
    if is_cookie_valid(cf):
        return cf["value"]

    # Re-solve
    token = solve_func(target_url)
    # ... inject and extract new cookie

Solução de problemas

Problema Causa Correção
Cookie rejeitado após resolução Incompatibilidade de IP Use o mesmo proxy para resolução e solicitações
O cookie expira rapidamente TTL curto definido por site Resolva antes de expirar; verifique o campo expiry
403 apesar do cookie válido Incompatibilidade entre usuário e agente Corresponder UA entre sessões de resolução e solicitação
A página do desafio não carrega JavaScript desativado Use um navegador completo (Selenium, Puppeteer)

Perguntas frequentes

Somente se eles compartilharem o mesmo IP e você corresponder à string User-Agent. A Cloudflare geralmente vincula o cookie ao IP de origem.

Normalmente de 30 minutos a 24 horas, dependendo da configuração do Cloudflare do proprietário do site.


Resolva páginas Cloudflare Turnstile em staging com CaptchaAI

Obtenha sua chave API emcaptchaai.com.


Guias relacionados

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