Comparisons

Cloudflare Bot Management vs Cloudflare Turnstile: entendendo a diferença

Se uma automação começou a receber 403 ou travar numa página "Verificando seu navegador" atrás da Cloudflare, a pergunta é qual proteção apareceu: Bot Management ou Turnstile. São produtos diferentes, com integração e resolução diferentes — confundi-los é a causa mais comum de scripts de QA travarem sem erro claro.

Turnstile é um widget de CAPTCHA gratuito que qualquer site pode embutir. Bot Management é uma camada de rede do plano Enterprise que avalia toda requisição antes de chegar à origem. Este guia mostra como diferenciar os dois e resolver ambos com a CaptchaAI.


Como saber rapidinho qual proteção você está vendo

  • Widget num formulário, classe cf-turnstile → Turnstile, isolado.
  • Página "Verificando seu navegador" antes do formulário aparecer → Bot Management avaliando a requisição.
  • 403 com página de erro da Cloudflare, sem widget → bloqueio direto do Bot Management.
  • Nenhum desafio visível, navegação segue normal → a requisição passou pela pontuação de bot.

A seção de identificação, mais adiante, traz um script pronto para automatizar essa checagem.


Comparação lado a lado

O que cada um é e quanto custa

Recurso Bot Management Turnstile
O que é Plataforma empresarial de defesa contra bots Widget de CAPTCHA gratuito
Preço Plano Enterprise ($$$) Gratuito em qualquer plano
Onde roda Nível de rede (proxy da Cloudflare) Widget JavaScript na página
Exige DNS na Cloudflare Sim Não — funciona em qualquer site

Como se comporta na automação

Recurso Bot Management Turnstile
Desafio visível Às vezes (desafio gerenciado) Raramente — quase sempre invisível
O que avalia Todas as requisições do domínio Uma ação específica da página (ex.: envio de formulário)
Pontuação 1–99 por requisição Aprovado/reprovado por desafio
Integra com o WAF Sim, por faixa de pontuação Não
Desafio JavaScript Sim (página de espera de 5 s) Sim (prova de trabalho)
Limitação de taxa Sim Não
Suporte da CaptchaAI Pelos métodos de Turnstile e de verificação em staging Sim — alta taxa de sucesso

O que é o Cloudflare Bot Management

O Bot Management faz parte do plano Enterprise da Cloudflare. Ele opera no nível da rede: toda requisição para o domínio é avaliada antes de chegar ao servidor de origem, por isso nunca aparece isolado — está sempre por trás do que o site serve.

Como o mecanismo pontua cada requisição

Request arrives at Cloudflare edge
    ↓
Bot Management engine evaluates:
  ├─ Machine learning model (behavioral sinal de navegador)
  ├─ Heuristics (known bot patterns)
  ├─ JavaScript sinal de navegadoring (if JS challenge triggered)
  ├─ JA3/JA4 TLS sinal de navegador
  ├─ HTTP header analysis
  └─ IP reputation (Cloudflare sees ~20% of internet traffic)
    ↓
Bot score assigned: 1 (definitely bot) to 99 (definitely human)
    ↓
WAF rules act on the score:

  - Score > 50 → Allow
  - Score 30-50 → Managed challenge
  - Score < 30 → Block or JavaScript challenge

Principais peças do Bot Management

  • Pontuação do bot — nota de 1 a 99 baseada em ML, calculada por requisição.
  • Desafio gerenciado — mostra, de forma adaptativa, um desafio JS ou o Turnstile.
  • Super Bot Fight Mode — versão simplificada para os planos Pro/Business.
  • Análise de bots — painel com o tráfego de bot separado do tráfego humano.
  • Regras personalizadas do WAF — regras acionadas pelos limites de pontuação do bot.
  • Limitação de taxa — limites de requisições por IP ou sessão.
  • Detecção via JavaScript — identifica navegador headless e ferramentas de automação.

O que a automação costuma ver

  • Bloqueio direto (403) — pontuação do bot muito baixa; a regra do WAF já barrou a requisição.
  • Página de desafio JavaScript — espera de 5 segundos com a mensagem "Verificando seu navegador".
  • Desafio gerenciado — widget Turnstile ou desafio JS renderizado na hora.
  • Passagem invisível — requisição liberada, pontuação do bot alta o suficiente.

O que é o Cloudflare Turnstile

Turnstile é um widget de CAPTCHA independente que substitui os captchas tradicionais. Funciona sem depender do Bot Management e pode ser embutido em qualquer site, inclusive um que não usa a Cloudflare como proxy.

Como o Turnstile verifica o visitante

Page loads Turnstile widget
    ↓
Widget runs background checks:
  ├─ Browser proof-of-work challenge (cryptographic puzzle)
  ├─ Private Access Token (Apple devices)
  ├─ Browser environment validation
  └─ Cloudflare threat intelligence
    ↓
Result: cf-turnstile-response token generated
    ↓
Token submitted with form data
    ↓
Server validates token via Cloudflare API (siteverify)

Modos do widget

  • Gerenciado — a Cloudflare decide entre invisível e interativo; padrão, recomendado na maioria dos casos.
  • Não interativo — sempre invisível, roda só a prova de trabalho; indicado para formulários que não podem ter atrito.
  • Invisível — nenhum widget aparece, roda ao carregar a página; útil para verificação em segundo plano.

Como embutir o widget

<!-- Simple Turnstile integration -->
<div class="cf-turnstile" data-sitekey="0x4AAAAAAAC3DHQhMMQ_Rxrg"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

Como resolver Turnstile e os desafios do Bot Management com a CaptchaAI

Resolver o Turnstile é direto

O Turnstile é resolvido pelo método turnstile da CaptchaAI. É o cenário mais comum em automação e normalmente fecha em menos de 10 segundos, com alta taxa de sucesso:

import requests
import time

API_KEY = "YOUR_API_KEY"

submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile",
    "sitekey": "0x4AAAAAAAC3DHQhMMQ_Rxrg",
    "pageurl": "https://example.com/signup",
    "json": 1,
})

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

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:
        token = result["request"]
        print(f"Turnstile token: {token[:50]}...")
        break

Resolver desafios do Bot Management exige mais contexto

  • O Bot Management combina várias camadas de defesa.
  • Quando existe um componente CAPTCHA, ele costuma vir como um desafio gerenciado renderizado como Turnstile:
# Bot Management flow for automation:

# 1. Make initial request
response = requests.get("https://protected-site.com/api/data")

# 2. Check if challenged
if response.status_code == 403:
    # Hard block — need to adjust headers, proxy, or approach
    pass
elif "challenge" in response.text.lower() or response.status_code == 503:
    # JavaScript challenge or managed challenge
    # If it contains a Turnstile widget, solve it:
    if "cf-turnstile" in response.text or "challenges.cloudflare.com" in response.text:
        # Extract sitekey and solve via CaptchaAI
        sitekey = extract_turnstile_sitekey(response.text)
        token = solve_turnstile(sitekey, "https://protected-site.com/api/data")

Página de verificação em staging (sem widget Turnstile)

  • A página "Verificando seu navegador" NÃO é um widget Turnstile — é o desafio JavaScript do Bot Management.
  • A CaptchaAI trata esse caso pelo método turnstile_staging:
submit = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "turnstile_staging",
    "sitekey": "managed",
    "pageurl": "https://protected-site.com/login",
    "json": 1,
})

Como identificar automaticamente qual proteção está ativa

  • Página "Verificando seu navegador" de 5 s → Bot Management (desafio JS); confirme por cf-chl e jschl_vc no código-fonte.
  • Widget num formulário → Turnstile (isolado); confirme pela classe cf-turnstile e pelo domínio challenges.cloudflare.com/turnstile.
  • 403 com página de erro da Cloudflare → Bot Management (bloqueio direto); confirme pelo cabeçalho cf-ray e pelo template de erro da Cloudflare.
  • Caixa de seleção interativa numa página da Cloudflare → desafio gerenciado (Bot Management); confirme pelo domínio challenges.cloudflare.com.
  • Nenhum desafio visível, mas cookies da Cloudflare presentes → Bot Management aprovado; confirme pelo cookie de validação definido pela Cloudflare.

Script para automatizar a checagem

import requests

def identify_cloudflare_protection(url):
    """Identify which Cloudflare protection a URL uses."""
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                      "AppleWebKit/537.36 Chrome/120.0.0.0",
    }

    response = requests.get(url, headers=headers, timeout=15, allow_redirects=False)
    html = response.text

    result = {
        "cloudflare_protected": "cf-ray" in response.headers.get("cf-ray", "")
                                or "cloudflare" in response.headers.get("server", "").lower(),
        "bot_management_challenge": False,
        "turnstile_widget": False,
        "hard_block": False,
        "passed": False,
    }

    if response.status_code == 403:
        result["hard_block"] = True
    elif response.status_code == 503 and "jschl" in html:
        result["bot_management_challenge"] = True
    elif "cf-turnstile" in html:
        result["turnstile_widget"] = True
    elif response.status_code == 200:
        result["passed"] = True

    return result

Exemplo: QA de checkout hospedado atrás da Cloudflare

Uma equipe de QA testando o checkout de um e-commerce atrás da Cloudflare, rodando workers na região sa-east-1 da AWS para simular a latência de um usuário no Brasil, costuma ver os dois produtos na mesma sessão: o Bot Management avalia a navegação inteira, e o Turnstile aparece isolado só no login. Vale registrar qual sinal apareceu em cada execução — útil também para documentar o processo se a coleta de dados de teste precisar respeitar a LGPD.


Perguntas frequentes

O Turnstile exige o plano Enterprise da Cloudflare?

Não. O Turnstile é gratuito em qualquer plano da Cloudflare. Só o Bot Management fica restrito ao plano Enterprise.

Um site pode usar Bot Management e Turnstile ao mesmo tempo?

  • Sim. O Bot Management atua no nível da rede para todas as requisições.
  • O Turnstile é adicionado como widget em páginas específicas — por exemplo, bloqueando bots óbvios na borda e pedindo Turnstile só no login.

Quanto tempo leva para a CaptchaAI resolver o Turnstile?

O método turnstile normalmente fecha em menos de 10 segundos, com alta taxa de sucesso. O tempo do Bot Management varia mais, porque depende de quantos sinais de rede a automação precisa satisfazer antes do desafio aparecer.

O que é mais difícil de automatizar?

  • Bot Management: avalia cada requisição com vários sinais de rede — assinatura TLS, reputação de IP, padrões de requisição — além do desafio em si.
  • Turnstile: protege só o envio de formulários específicos; resolvido o widget, a automação segue.

A CaptchaAI resolve o bloqueio 403 do Bot Management?

  • Não sozinha. A CaptchaAI resolve o componente de desafio CAPTCHA — Turnstile e a verificação em staging.
  • Um bloqueio 403 de rede exige ajustes fora desse escopo, como cabeçalhos e TLS adequados, antes que o desafio CAPTCHA apareça.

Resumo

  • Cloudflare Bot Management é uma defesa de rede do plano Enterprise, com pontuação de ML, regras de WAF e limitação de taxa.
  • Cloudflare Turnstile é um widget de CAPTCHA gratuito, disponível em qualquer plano, que verifica o visitante com prova de trabalho no navegador.
  • Na automação, o Turnstile é resolvido diretamente com a CaptchaAI — alta taxa de sucesso, resposta em segundos; os desafios do Bot Management pedem simulação de navegador adequada, além da CaptchaAI para o componente CAPTCHA.

Artigos relacionados

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