Como Resolver o Cloudflare Com Python (Playwright + Scrapeless)
Expert Network Defense Engineer
Resumo:
- A Cloudflare avalia o navegador, não o visitante. Ela lê a consistência da impressão digital, sinais comportamentais e o IP de saída, e então define um cookie
cf_clearancepara um navegador que confia — portanto, resolvê-lo em Python significa ser um navegador confiável, não responder a um quebra-cabeça. - Um navegador local em Python falha nessa avaliação em três eixos: o indicativo
navigator.webdriver, uma impressão digital padrão headless e um IP de saída de datacenter. Corrigir os três manualmente é uma rotina de manutenção. - O Scrapeless Scraping Browser resolve o desafio durante a renderização — Chromium real desenvolvido internamente, uma impressão digital consistente por sessão e saída residencial em mais de 195 países, acessados por um único endpoint WebSocket.
- Seu Python permanece no padrão Playwright. Conecte-se usando
chromium.connect_over_cdp(), aguarde o conteúdo pós-desafio e leia a página — a única mudança é a URL de conexão. - Verificado ao vivo: uma sessão Python Playwright sobre o navegador em nuvem superou a página de desafio da Cloudflare, leu o marcador de sucesso
Você superou o desafio da Cloudflare! :De recebeu um cookiecf_clearance. - Gratuito para começar. Novas contas Scrapeless incluem tempo de execução gratuito do Scraping Browser — inscreva-se em app.scrapeless.com.
Introdução: resolver Cloudflare em Python é um problema de navegador
Um desafio da Cloudflare não é um CAPTCHA de imagem que você decifra. Ele roda em segundo plano e avalia o navegador que carregou a página — se a impressão digital é internamente consistente, se os sinais de interação parecem humanos e se o IP de saída tem uma boa reputação. Quando a pontuação é aprovada, a Cloudflare define um cookie cf_clearance e a página real é carregada. Quando não, você recebe uma tela intersticial em vez do conteúdo.
Isso reformula a tarefa em Python. Não há resposta a ser enviada — o trabalho é apresentar um navegador que a Cloudflare já confia. Um Chromium headless local controlado pelo Python não consegue: ele anuncia automação através da propriedade navigator.webdriver, apresenta fontes e comportamentos de canvas padrão headless, e sai de um IP que os serviços de reputação já conhecem. Você pode corrigir cada um desses e depois continuar corrigindo conforme o Chromium e os detectores mudam. Este guia toma o caminho mais curto: controlar o Scrapeless Scraping Browser a partir do Playwright padrão para Python, de modo que a impressão digital, o comportamento e o IP de saída sejam tratados no lado do servidor e o desafio seja resolvido durante uma renderização normal.
O que a Cloudflare realmente verifica
A própria documentação da Cloudflare descreve uma etapa de verificação que ocorre sem interromper o visitante. Na prática, ela avalia três coisas e concede um cookie cf_clearance — um padrão de cookie HTTP — quando passam:
| O que a Cloudflare lê | Por que um navegador local em Python falha nisso |
|---|---|
| Consistência da impressão digital | padrões headless e a flag webdriver contradizem um Chrome real |
| Sinais comportamentais | temporização automatizada sem uma superfície coerente de navegador |
| Reputação do IP de saída | IPs de datacenter têm pontuação pior do que os residenciais |
Um navegador coerente e confiável é mais importante do que qualquer evasão única — por isso, mover os três para o lado do servidor é mais durável do que acumular correções furtivas.
Por que o Scrapeless Scraping Browser
O Scrapeless Scraping Browser é um navegador em nuvem personalizável e antideteção, projetado para rastreadores da web e agentes de IA. Para a Cloudflare especificamente, ele oferece:
- Um Chromium real desenvolvido internamente que executa o JavaScript do desafio exatamente como o Chrome, resolvendo ao invés de travar.
- Uma impressão digital consistente por sessão — sem indicativo
navigator.webdriver, sem padrões headless vazando. - Saída residencial em mais de 195 países — a Cloudflare avalia o IP de saída, e uma região residencial tem uma reputação boa onde um IP de datacenter não tem.
- Persistência de sessão para que uma concessão
cf_clearancepossa ser reutilizada em solicitações na mesma sessão. - Uma superfície de conexão — cada opção é um parâmetro de consulta no mesmo endpoint WebSocket.
Obtenha sua chave da API no plano gratuito em app.scrapeless.com.
Pré-requisitos
- Python 3.10 ou mais recente
- Playwright para Python (
pip install playwright) - Uma conta Scrapeless e chave da API — inscreva-se em app.scrapeless.com
Todos os detalhes de conexão estão na documentação do Scraping Browser.
Instalação
Você se conecta a um navegador remoto, portanto não precisa instalar um Chromium local com playwright install para este fluxo.
bash
pip install playwright
export SCRAPELESS_API_KEY=seu_token_api_aqui # chave gratuita em https://app.scrapeless.com
Conectar e limpar o desafio
Construa o endpoint, conecte-se com chromium.connect_over_cdp(), navegue e aguarde o conteúdo pós-desafio ser anexado. O desafio é resolvido durante a renderização — não há chamada separada para resolução.
python
import json
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright
params = {"token": os.environ["SCRAPELESS_API_KEY"], "sessionTTL": "180", "proxyCountry": "US"}
endpoint = f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"
TARGET = "https://www.scrapingcourse.com/cloudflare-challenge"
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(endpoint)
page = browser.new_page()
page.goto(TARGET, wait_until="domcontentloaded", timeout=90000)
# O navegador na nuvem limpa o Cloudflare durante a renderização; aguarde o conteúdo real.
page.wait_for_selector("#challenge-title", timeout=90000)
print("limpo:", page.inner_text("#challenge-title"))
cookies = page.context.cookies()
print("cf_clearance:", any(c["name"] == "cf_clearance" for c in cookies))
browser.close()
Uma execução ao vivo deste script imprimiu limpo: Você superou o desafio do Cloudflare! :D e cf_clearance: True — padrão do Playwright para Python, obtido através do navegador em nuvem.
Obtenha sua chave API no plano gratuito: app.scrapeless.com
Confirme a aprovação e mantenha a autorização
O sinal confiável é o conteúdo real sendo anexado — uma vez que o elemento pós-desafio esteja presente, a página foi limpa. O Cloudflare também configura um cookie cf_clearance na sessão aprovada, que você pode ler para levar a autorização a outras solicitações na mesma sessão.
python
cookies = page.context.cookies()
clearance = next((c for c in cookies if c["name"] == "cf_clearance"), None)
print("cf_clearance presente:", clearance is not None)
if clearance:
print("domínio:", clearance["domain"])
Defina a região para uma limpeza confiável
O Cloudflare pontua o IP de saída, então defina proxyCountry para uma região residencial. Mude para qualquer código de país ISO.
python
params = {
"token": os.environ["SCRAPELESS_API_KEY"],
"sessionTTL": "180",
"proxyCountry": "US", # ou "DE", "JP", "QUALQUER"
}
Onde os navegadores Python locais param
Um scraper local baseado no Playwright ou em solicitações está bem até que o Cloudflare comece a pontuar o navegador. Então, a impressão digital headless, a flag webdriver e o IP do datacenter falham em diferentes verificações, e o intersticial substitui o conteúdo. Esses são problemas de impressão digital, comportamento e IP — os três que o navegador em nuvem resolve no servidor. Conectar-se ao Scrapeless os entrega a uma sessão gerenciada enquanto seu código Playwright permanece padrão.
O que você recebe de volta
A sessão se comporta como qualquer sessão do Playwright para Python — page.goto, page.wait_for_selector, page.content() e cookies funcionam normalmente. Algumas observações honestas sobre a superação do Cloudflare através do navegador em nuvem:
navigator.webdriverestá ausente, então a primeira verificação que o Cloudflare executa se comporta como um Chrome real.- O IP de saída corresponde a
proxyCountry— uma região residencial limpa muito mais confiavelmente do que um IP de datacenter. cf_clearanceestá presente após uma aprovação — reutilize a mesma sessão para carregar a autorização em solicitações subsequentes.- Aqueça a sessão para páginas teimosas — carregue a página inicial do site primeiro na mesma sessão antes da página protegida, para que a superfície comportamental pareça uma visita normal.
Conclusão: limpe o Cloudflare, mantenha seu Python
Resolver o Cloudflare em Python não se trata de decodificar um desafio — trata-se de apresentar um navegador que o Cloudflare confia. O Scrapeless Scraping Browser lida com as três coisas que pontua (impressão digital, comportamento, IP de saída) no lado do servidor, então seu código Playwright para Python muda apenas sua URL de conexão. Defina proxyCountry para uma região residencial, aguarde o conteúdo pós-desafio e leia cf_clearance para confirmar a aprovação. Para executar o mesmo navegador em nuvem com outra biblioteca Python, consulte o guia de produção do Scrapling-scraper e compare planos na página de preços do Scrapeless.
Pronto para Construir seu Pipeline de Bypass do Cloudflare?
Junte-se à nossa comunidade para reivindicar um plano gratuito e conectar-se com desenvolvedores que raspam sites protegidos pelo Cloudflare: Discord · Telegram.
Inscreva-se em app.scrapeless.com para obter tempo de execução gratuito do Scraping Browser e aponte o Playwright para Python para o navegador em nuvem que limpa o Cloudflare durante a renderização.
FAQ
Q: Preciso de um serviço separado para resolver CAPTCHAs?
Não em um navegador que passa. O Cloudflare geralmente pontua impressão digital, comportamento e IP em segundo plano e emite um cookie cf_clearance. O navegador em nuvem é projetado para passar nessa pontuação durante uma renderização normal, então não há uma etapa de quebra de quebra-cabeça separada a ser configurada.
Q: Preciso de um proxy?
Não. A saída residencial está integrada — defina proxyCountry para uma região ou ANY. O Cloudflare pontua o IP de saída, então uma região residencial limpa de forma mais confiável do que um endereço de data center.
Q: O desafio ainda aparece em algumas páginas — o que ajuda?
Defina proxyCountry para uma região residencial e aqueça a sessão carregando a página inicial do site primeiro na mesma sessão antes da página protegida, para que a superfície comportamental seja lida como uma visita normal.
Q: Meu código Playwright existente é compatível?
Sim. O Scraping Browser fala CDP, então chromium.connect_over_cdp() funciona sem alterações — você apenas muda a URL de conexão.
Q: Limpar o Cloudflare é legal?
Acessar dados disponíveis publicamente geralmente é permitido, mas as regras variam por jurisdição e site. Revise os termos de serviço do alvo, respeite as diretrizes de robôs e consulte um advogado para qualquer questão sensível.
Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.



