Como Contornar o Cloudflare em 2026 (Sem Queimar IPs de Datacenter)

Publicado em 27 de maio de 2026 · ≈12 min de leitura

A maioria dos tutoriais de "como contornar o Cloudflare" disponíveis na internet deixou de funcionar no fim de 2024. O motivo não é que o Cloudflare adicionou novas defesas. É que as defesas antigas, fingerprinting JA3 e verificações básicas de cabeçalhos, foram substituídas por uma nova geração que quebra todos os atalhos. Este guia explica o que o Cloudflare realmente verifica em 2026, por que o cloudscraper, o undetected-chromedriver e a maioria dos plugins "stealth" falham, e a receita de quatro camadas que ainda funciona em produção.

O resumo honesto, logo de cara: não existe um truque único. Contornar o Cloudflare de forma confiável exige o IP certo, o fingerprint TLS certo, a ordenação correta dos frames HTTP/2 e (para o nível Bot Management) um navegador real. Erre qualquer um desses e você falha no filtro de borda antes mesmo de sua requisição chegar ao servidor de origem.

O Que o Cloudflare Realmente Verifica em 2026

A detecção de bots do Cloudflare funciona como um pipeline de filtros na borda. Cada requisição passa por eles em ordem. O primeiro filtro a rejeitar é o que vence, o que significa que uma requisição pode falhar apenas pela reputação do IP, antes que qualquer fingerprint ou cabeçalho seja examinado.

1. Reputação de IP (ASN + Histórico de Abuso)

Esta é a primeira e mais barata verificação. O Cloudflare mantém um banco de dados indexado por ASN (Autonomous System Number). ASNs pertencentes a provedores de nuvem conhecidos (AWS AS16509, GCP AS15169, Azure AS8075, OVH AS16276, DigitalOcean AS14061, Hetzner AS24940, Vultr AS20473) recebem o maior escrutínio. Mesmo com um fingerprint perfeito, de nível de navegador, uma requisição originada desses ASNs é tratada como culpada até que se prove o contrário.

ASNs residenciais (Comcast AS7922, Verizon AS701, China Telecom AS4134, BT AS2856) são presumidos legítimos. Uma requisição de um IP residencial com um fingerprint Python desajeitado ainda pode passar, enquanto uma requisição de um IP de datacenter com um fingerprint Chrome perfeito será desafiada ou bloqueada.

2. Fingerprint TLS JA4

O JA4 é o sucessor de 2023 do JA3, lançado pela FoxIO. Ele faz o hash de campos específicos do ClientHello do TLS: versão do TLS, suítes de cifras (em ordem), extensões (em ordem), protocolos ALPN, algoritmos de assinatura e grupos suportados. A saída é um fingerprint determinístico como t13d1516h2_8daaf6152771_b1ff8ab2d16f.

O Chrome 124 real produz um JA4 específico. O Firefox 124 real produz um diferente. A biblioteca requests do Python (que usa urllib3 e OpenSSL) produz um JA4 que nenhum navegador real jamais emite, porque a ordem das cifras e a lista de extensões não correspondem nem ao Chrome nem ao Firefox. O Cloudflare sinaliza esse padrão antes de analisar qualquer cabeçalho HTTP.

A implicação: toda biblioteca que usa o OpenSSL do sistema ou o TLS padrão do Python é detectável. Isso inclui requests, aiohttp, httpx (configuração padrão), e qualquer wrapper de "bypass" construído em cima deles.

Free tool · no signup

Veja o fingerprint TLS exato que o Cloudflare lê de você

Atinja-o com seu scraper (curl, requests, seu navegador headless) e ele retorna o hash JA3/JA4, com qual biblioteca ele se parece e se seria sinalizado — a mesma verificação descrita acima.

Verificar meu fingerprint →

Fingerprint limpo mas ainda sendo bloqueado? É a reputação do seu IP. Ganhe 500MB de tráfego grátis e suba um proxy residencial em 30s →

3. Ordenação de Frames HTTP/2 e Sequência de Pseudo-Cabeçalhos

Conexões HTTP/2 carregam frames de settings, window updates, frames de prioridade e frames de cabeçalhos. Navegadores os enviam em uma ordem específica com valores específicos. O Chrome 124 envia um frame SETTINGS inicial com esses valores exatos, depois um WINDOW_UPDATE, depois HEADERS. O httpx do Python com HTTP/2 habilitado envia um payload de settings diferente e pula os frames de prioridade que o Chrome inclui.

A ordem dos pseudo-cabeçalhos do HTTP/2 também vaza identidade. O Chrome envia :method, :authority, :scheme, :path nessa ordem. O Firefox envia :method, :path, :authority, :scheme. A maioria das bibliotecas Python e Go os serializa em ordem alfabética. O Cloudflare compara a ordem com o padrão esperado para o User-Agent declarado e sinaliza incompatibilidades.

4. Ordem e Capitalização dos Cabeçalhos

Cabeçalhos HTTP/1.1 preservam a ordem de inserção. O Chrome real envia os cabeçalhos em uma ordem fixa: Host, Connection, Cache-Control, sec-ch-ua, sec-ch-ua-mobile, sec-ch-ua-platform, Upgrade-Insecure-Requests, User-Agent, Accept, Sec-Fetch-Site, Sec-Fetch-Mode, Sec-Fetch-User, Sec-Fetch-Dest, Accept-Encoding, Accept-Language. A biblioteca requests do Python os reordena e às vezes os capitaliza de forma diferente. Mesmo definir os cabeçalhos manualmente na ordem certa não ajuda, porque a biblioteca subjacente os reordena novamente.

5. Desafio JavaScript (Managed Challenge)

Se os filtros anteriores passam mas a pontuação ainda é suspeita, o Cloudflare serve um desafio JavaScript. O script calcula um token a partir de valores do ambiente do navegador (hash de canvas, renderizador WebGL, contexto de áudio, propriedades do navigator, medições de tempo) e o submete via XHR. Nenhum cliente HTTP consegue resolver isso. Você precisa de um navegador real, e o navegador precisa parecer real (sem navigator.webdriver = true, sem propriedades faltando).

6. Sinais Comportamentais (apenas Bot Management Enterprise)

No nível Bot Management, o Cloudflare coleta movimento do mouse, velocidade de rolagem, tempo de cliques e dinâmica de digitação por meio de um script em execução contínua. Um navegador headless que carrega a página e imediatamente faz scraping sem nunca mover o mouse é detectado em segundos. Usuários reais se movem de forma errática, pausam e releem. Bots rolam linearmente e clicam com precisão de pixel.

Por Que a Maioria das Ferramentas de Bypass da Era 2024 Está Morta

As ferramentas de atalho que impulsionaram o scraping de 2021-2024 compartilham todas um mesmo modo de falha: elas remendam a superfície visível, mas não a pilha TLS subjacente.

FerramentaO que ela remendaPor que falha em 2026
cloudscraperSolucionador de desafio JS (legado)O Cloudflare migrou para o Turnstile em 2023; desafios legados foram descontinuados
undetected-chromedriverRemenda flags de vazamento do SeleniumO JA4 ainda vaza do TLS subjacente do chromedriver; navigator.webdriver é apenas um de mais de 40 sinais
selenium-stealthInjeta propriedades JS falsificadasO Cloudflare lê da camada C++, não do JS; a falsificação é detectável como inconsistente
FlareSolverrEnvolve o Chromium para resolver um desafio pontualO cf_clearance fica vinculado ao IP do solucionador; um proxy novo invalida o token imediatamente
puppeteer-extra-plugin-stealth padrãoRemenda ~17 pontos de detecçãoO Cloudflare adicionou ~12 novas verificações em 2024-2025 não cobertas pelo plugin

O padrão é claro: ferramentas que envolvem um navegador real e remendam vazamentos conhecidos perdem a corrida armamentista em questão de meses. Ferramentas que simulam a pilha TLS de um navegador (curl_cffi, tls-client) sobreviveram porque estão mais próximas do fio.

A Receita de Quatro Camadas Que Ainda Funciona

Um bypass que funciona em 2026 precisa de todas as quatro camadas. Pular qualquer uma derruba a taxa de sucesso para um único dígito.

Camada 1: IP Residencial ou Móvel

Isso é inegociável para qualquer site que rode Cloudflare Pro ou superior. O filtro de reputação de IP rejeita ASNs de datacenter antes que o handshake TLS seja concluído. Use um proxy residencial com sessão sticky por pelo menos 10 minutos para que o cookie cf_clearance sobreviva.

Realidade de custo: Residencial a US$6,8/GB parece caro ao lado de datacenter a US$0.8/GB. Mas em um alvo protegido por Cloudflare, a taxa de sucesso do datacenter fica abaixo de 1% enquanto a residencial fica em 88-94%. Custo efetivo por página bem-sucedida: residencial US$0,0036, datacenter US$0,10. O residencial é 27-28x mais barato para alvos protegidos e só perde nos não protegidos.

Camada 2: Fingerprint TLS de Navegador Real

Use curl_cffi (Python) ou tls-client (Go/Python). Ambos se vinculam a um BoringSSL modificado que vem com a ordem exata de cifras, lista de extensões e valores ALPN do Chrome.

from curl_cffi import requests

response = requests.get(
    "https://target.com/api/products",
    impersonate="chrome124",
    proxies={"https": "http://user-session-abc123:[email protected]:10001"},
    timeout=30,
)
print(response.status_code, len(response.text))

O parâmetro impersonate="chrome124" troca a pilha TLS para que o ClientHello corresponda byte a byte ao Chrome 124. O hash JA4 será idêntico ao de uma instalação real do Chrome 124. Combine-o com um proxy residencial e você passa pelos dois primeiros filtros.

Camada 3: Ordem de Cabeçalhos Correspondendo ao Navegador Imitado

O curl_cffi define os cabeçalhos na ordem do Chrome automaticamente quando você usa impersonate. Se adicionar cabeçalhos personalizados, anexe-os ao final em vez de inserir no meio. Evite definir cabeçalhos que o Chrome real não enviaria (por exemplo, X-Requested-With em uma navegação normal).

Para o Accept-Language, faça-o corresponder à localização geográfica do proxy. Um IP residencial dos EUA enviando Accept-Language: zh-CN,zh;q=0.9 é um sinal pequeno, mas real. Use en-US,en;q=0.9 para IPs dos EUA, de-DE,de;q=0.9 para IPs alemães, e assim por diante. Esse é um dos poucos sinais que você pode corrigir de graça.

Camada 4: Navegador Real para Desafios JS (Quando Necessário)

Se o alvo dispara um Managed Challenge (você vê uma página de desafio do CF no corpo da resposta), o curl_cffi sozinho não consegue resolvê-lo. Mude para o Playwright com Chromium remendado.

from playwright.sync_api import sync_playwright
from rebrowser_playwright.sync_api import sync_playwright as rebrowser_sync

with rebrowser_sync() as p:
    browser = p.chromium.launch(
        headless=True,
        proxy={
            "server": "http://gate.jibaoproxy.com:10001",
            "username": "user-session-abc123",
            "password": "pass",
        },
    )
    context = browser.new_context(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
        viewport={"width": 1920, "height": 1080},
        locale="en-US",
        timezone_id="America/New_York",
    )
    page = context.new_page()
    page.goto("https://target.com/", wait_until="networkidle")
    # cf_clearance is now in context.cookies()
    cookies = context.cookies()
    cf_clearance = next((c for c in cookies if c["name"] == "cf_clearance"), None)
    browser.close()

Use rebrowser-playwright em vez do playwright padrão. Ele remenda os vazamentos de runtime do CDP (Runtime.enable, exposição de comandos CDP à página) que o Cloudflare lê para detectar automação headless. Depois que o desafio passa, extraia o cf_clearance dos cookies e devolva-o ao curl_cffi para o loop real de scraping. O navegador é necessário uma vez por sessão, não por requisição.

Matemática de Custo: Por Que o Residencial Vence em Alvos Protegidos

O instinto de usar o proxy mais barato está quase sempre errado em sites protegidos por Cloudflare. Acompanhe a conta com números reais.

Premissas: página HTML média de 500KB, scraping de 100.000 páginas no total, o alvo usa Cloudflare Pro com Bot Fight Mode habilitado.

ConfiguraçãoCusto de bandaTaxa de sucessoRequisições por sucessoCusto totalCusto por página
Datacenter US$0.8/GB + requests US$0,0005 / req 0,5% 200 US$10.000 US$0,10
Datacenter US$0.8/GB + curl_cffi US$0,0005 / req 3% 33 US$1.650 US$0,0165
Residencial US$6,8/GB + requests US$0,0033 / req 40% 2,5 US$825 US$0,0083
Residencial US$6,8/GB + curl_cffi US$0,0033 / req 92% 1,09 US$360 US$0,0036
Residencial US$6,8/GB + Playwright (rebrowser) US$0,017 / req (assets + JS) 96% 1,04 US$1.700 US$0,017

Dois achados que vale a pena notar:

  1. Residencial + curl_cffi é o vencedor em custo por sucesso por um fator de 3-18x sobre qualquer outra combinação. A intuição de que residencial é "caro" está correta em US$/GB, mas errada em US$/página-bem-sucedida.
  2. O Playwright é mais caro por requisição porque baixa o pacote completo de assets (CSS, JS, imagens). Use-o apenas para a única requisição que resolve o desafio, depois entregue o cf_clearance ao curl_cffi.

Receita Prática: Um Scraper de Nível de Produção

Este é o padrão que recomendamos a clientes que fazem scraping de alvos protegidos por Cloudflare em escala. Ele minimiza o uso do Playwright (que é lento e caro) e maximiza o uso do curl_cffi (que é rápido e barato).

from curl_cffi import requests as cf_requests
from rebrowser_playwright.sync_api import sync_playwright

PROXY_USER_FMT = "user-session-{sid}"
PROXY_HOST = "http://gate.jibaoproxy.com:10001"
PROXY_PASS = "your_password"

def get_cf_clearance(target_url, session_id):
    """One-shot Playwright call to solve the challenge and extract cf_clearance."""
    with sync_playwright() as p:
        browser = p.chromium.launch(
            headless=True,
            proxy={"server": PROXY_HOST,
                   "username": PROXY_USER_FMT.format(sid=session_id),
                   "password": PROXY_PASS},
        )
        ctx = browser.new_context(user_agent="Mozilla/5.0 ... Chrome/124.0.0.0 Safari/537.36")
        page = ctx.new_page()
        page.goto(target_url, wait_until="networkidle", timeout=45000)
        cookies = ctx.cookies()
        browser.close()
    return {c["name"]: c["value"] for c in cookies}

def scrape_with_clearance(urls, session_id, cookies):
    """Reuse the same session_id (sticky IP) for all requests."""
    proxy = f"http://{PROXY_USER_FMT.format(sid=session_id)}:{PROXY_PASS}@gate.jibaoproxy.com:10001"
    out = []
    for url in urls:
        r = cf_requests.get(
            url,
            impersonate="chrome124",
            proxies={"https": proxy},
            cookies=cookies,
            timeout=30,
        )
        if r.status_code == 200:
            out.append((url, r.text))
        elif r.status_code in (403, 503) and "challenge" in r.text.lower():
            # cf_clearance expired; re-solve
            cookies = get_cf_clearance(url, session_id)
            r = cf_requests.get(url, impersonate="chrome124",
                                proxies={"https": proxy}, cookies=cookies)
            out.append((url, r.text))
    return out, cookies

# Usage
session_id = "scrape-job-2026-05-27"
cookies = get_cf_clearance("https://target.com/", session_id)
results, cookies = scrape_with_clearance(target_urls, session_id, cookies)

Pontos-chave desta receita:

Quando Desistir

Algumas implantações do Cloudflare não podem ser contornadas a nenhum custo razoável. Se você ver estes sinais, mude de estratégia (use uma API, faça parceria com o dono do site ou compre os dados) em vez de queimar orçamento em um bypass que nunca vai estabilizar.

Referência Rápida

Nível do alvoReceitaTaxa de sucesso esperada
CF Free / Pro (sem Bot Fight)Datacenter + curl_cffi60-75%
CF Free / Pro + Bot Fight ModeResidencial + curl_cffi85-93%
CF BusinessResidencial + curl_cffi + Playwright ocasional80-90%
CF Business + TurnstileResidencial + rebrowser-playwright (toda requisição)70-85%
CF Enterprise + Bot ManagementResidencial móvel + rebrowser + simulação de comportamento30-60%
CF Enterprise + Bot Management + WAF personalizadoNão faça scraping; busque API ou parceria<10%

A JIBAO Proxy oferece proxies residenciais dinâmicos com mais de 90M de IPs em mais de 240 países, sessões sticky de até 60 minutos e segmentação em nível de país a partir de US$6,8/GB. Para IPs móveis, veja proxies móveis dinâmicos. Ambos funcionam de imediato com curl_cffi, tls-client, Playwright, Puppeteer, Selenium e qualquer cliente HTTP que suporte proxies HTTP/SOCKS5.

Leitura relacionada: Sessões de Proxy Sticky vs Rotativas aborda a configuração de sessões em profundidade. Proxies para Agentes de IA explica o caso de uso de agentes de IA, que se sobrepõe fortemente ao fluxo de trabalho de bypass do Cloudflare.

Teste a Receita com IPs Residenciais Reais

Ganhe 500MB de tráfego grátis. Rode a combinação curl_cffi + residencial sticky contra seu alvo antes de se comprometer.

Iniciar Teste Gratuito

Para todos os produtos de IP · um enorme pool de nós disponíveis a qualquer momento

Cadastre-se agora e ganhe até 100% de reembolso na sua recarga

Novos usuários recebem 500MB ao se cadastrar, mais um bônus na primeira recarga. Oferta por tempo limitado.