Análises Técnicas

Como funciona o desafio Cloudflare

Quando a Cloudflare suspeita que um visitante é um bot, ela mostra um intersticial de página inteira com a mensagem "Verificando seu navegador antes de acessar..." ou "Verifique se você é humano". Isso é chamado de Cloudflare Turnstile em staging — não deve ser confundido com Turnstile, que é um widget incorporado em uma página.

O desafio bloqueia o acesso à página inteira até que o navegador passe na verificação. Depois de aprovado, o Cloudflare define um cookie cookie_qa_validacao que concede acesso às solicitações subsequentes.


Como funciona o fluxo do desafio

Request → Cloudflare proxy → Suspicious? → Challenge page
                                              ↓
                                    Browser verification
                                              ↓
                                    cookie_qa_validacao cookie set
                                              ↓
                                    Original page loads
  1. Solicitação interceptada — O proxy reverso da Cloudflare avalia a solicitação recebida
  2. Avaliação de riscos — A reputação de IP, cabeçalhos de solicitação, sinal de navegador TLS e comportamento são analisados
  3. Desafio atendido — Se houver suspeita, uma página de desafio substitui a resposta pretendida
  4. Verificação do navegador — Desafios de JavaScript executados no navegador
  5. Conjunto de cookies — Em caso de sucesso, o cookie cookie_qa_validacao é definido com um TTL configurável
  6. Acesso concedido — O navegador recarrega e recebe o conteúdo original da página

O que desencadeia um Cloudflare Turnstile em staging

Gatilho Descrição
IP do datacenter Solicitação de provedores de hospedagem conhecidos
Cabeçalhos ausentes Cabeçalhos HTTP ausentes ou incomuns
sinal de navegador TLS A sinal de navegador JA3/JA4 corresponde a assinaturas de bot conhecidas
Alta taxa de solicitação Muitas solicitações do mesmo IP
Configuração do nível de segurança O proprietário do site define o limite do desafio como alto
Regras baseadas no país Bloqueio geográfico ou regras de desafio
Pontuação do bot A pontuação do bot de ML da Cloudflare é muito baixa
Ameaça conhecida IP aparece em listas de inteligência de ameaças

Após passar no desafio, o navegador recebe:

cookie_qa_validacao=abc123...; path=/; domain=.example.com; secure; HttpOnly; SameSite=None

Principais propriedades:

  • Duração: 15 minutos a 24 horas (configurável pelo proprietário do site)
  • Escopo: Vinculado ao domínio específico
  • Vinculação: Vinculado ao agente do usuário e ao endereço IP usados durante a verificação
  • Uso: Deve ser incluído em todas as solicitações subsequentes para evitar nova contestação

Importante: O cookie cookie_qa_validacao está vinculado ao User-Agent e ao endereço IP específicos usados durante a verificação. Alterar qualquer um deles invalidará o cookie.


Desafio Cloudflare Turnstile em staging vs Cloudflare Turnstile vs JS

Recurso Desafio CF Torniquete Desafio JS
Tipo Intersticial de página inteira Widget na página Verificação silenciosa
O usuário vê Página "Verificando seu navegador" Caixa de seleção ou nada Nada
Bloqueia o acesso à página Sim Não Resumidamente
Define cookie_qa_validacao Sim Às vezes Sim
Requer proxy para resolver Sim Não N/A
O site usa Cloudflare CDN Obrigatório Opcional Obrigatório

Resolvendo Cloudflare Turnstile em staging com CaptchaAI

A resolução de Cloudflare Turnstile em staging requer um proxy porque o cookie cookie_qa_validacao está vinculado ao endereço IP.

Pitão

import requests
import time

API_KEY = "YOUR_API_KEY"

# Submit task — proxy is REQUIRED
response = requests.get("https://ocr.captchaai.com/in.php", params={
    "key": API_KEY,
    "method": "turnstile_staging",
    "pageurl": "https://example.com/protected-page",
    "proxy": "username:password@proxy.example.com:8080",
    "proxytype": "HTTP",
    "json": 1
})

task_id = response.json()["request"]

# Poll for result
for _ in range(60):
    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.get("status") == 1:
        solution = result["request"]
        # solution contains cookie_qa_validacao cookie + user_agent
        print(f"cookie_qa_validacao: {solution}")
        break

Node.js

const axios = require('axios');

async function solveCloudflareChallenge(pageurl, proxy) {
  const { data } = await axios.get('https://ocr.captchaai.com/in.php', {
    params: {
      key: 'YOUR_API_KEY',
      method: 'turnstile_staging',
      pageurl,
      proxy,
      proxytype: 'HTTP',
      json: 1
    }
  });

  const taskId = data.request;

  for (let i = 0; i < 60; i++) {
    await new Promise(r => setTimeout(r, 5000));
    const res = await axios.get('https://ocr.captchaai.com/res.php', {
      params: { key: 'YOUR_API_KEY', action: 'get', id: taskId, json: 1 }
    });
    if (res.data.status === 1) return res.data.request;
  }
  throw new Error('Timeout');
}
# After getting the solution
cookie_qa_validacao = solution["cookie_qa_validacao"]
user_agent = solution["user_agent"]

# Use the SAME proxy and user agent for subsequent requests
session = requests.Session()
session.cookies.set("cookie_qa_validacao", cookie_qa_validacao, domain=".example.com")
session.headers["User-Agent"] = user_agent
session.proxies = {"https": "http://username:password@proxy.example.com:8080"}

# Now access the protected page
page = session.get("https://example.com/protected-page")
print(f"Status: {page.status_code}")

Por que o proxy é necessário

O cookie cookie_qa_validacao está criptograficamente vinculado a:

  1. Endereço IP — A solução deve acontecer a partir do mesmo IP que você usará
  2. User-Agent — O agente do usuário resolvido deve corresponder às suas solicitações
  3. sinal de navegador TLS — Algumas configurações também verificam as características do TLS

Se algum deles diferir entre a solução e suas solicitações subsequentes, o cookie será inválido.


Perguntas frequentes

Os proprietários do site configuram a duração, normalmente de 15 minutos a 24 horas. Após o vencimento, um novo desafio deve ser resolvido.

Não. O cookie está vinculado ao IP utilizado durante a verificação. Mudar IPs requer uma nova solução.

Qual é a diferença entre Cloudflare Turnstile em staging e catraca?

Cloudflare Turnstile em staging é um intersticial de página inteira que bloqueia o acesso à página. Turnstile é um widget embutido na página, semelhante ao reCAPTCHA. O desafio exige que o site use Cloudflare como proxy; Cloudflare Turnstile pode ser usada em qualquer local.

Quanto tempo leva para resolver?

A resolução do Cloudflare Turnstile em staging leva de 20 a 60 segundos, mais do que o Turnstile ou o reCAPTCHA, devido à verificação completa do navegador.

E se a página tiver Cloudflare e reCAPTCHA?

Resolva primeiro o Cloudflare Turnstile em staging para acessar a página, depois resolva o reCAPTCHA na página carregada.


Guias relacionados

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