Voltar ao blogue
Guias
Mihnea-Octavian ManolacheLast updated on Apr 30, 202620 min read

Contornar o Cloudflare com Selenium: 5 métodos Python (2026)

Contornar o Cloudflare com Selenium: 5 métodos Python (2026)
Resumo: A Cloudflare bloqueia o Selenium padrão através da identificação do navegador, da inspeção de cabeçalhos e da análise de sinais comportamentais. Este guia apresenta cinco métodos práticos de contorno (ChromeDriver indetetável, Selenium Stealth, modo SeleniumBase UC, integração de solucionador de CAPTCHA e APIs de scraping), acompanhados de código Python, uma tabela comparativa e um manual de resolução de problemas para que possa escolher a abordagem certa para a sua escala e orçamento.

Se já tentou fazer scraping ou automatizar um site protegido pelo Cloudflare com o Selenium, provavelmente deparou-se com a página intermédia «A verificar o seu navegador», um erro 403 ou um ciclo infinito de desafios. A Cloudflare é uma rede de entrega de conteúdos e uma camada de segurança que se situa entre o servidor de origem e cada visitante, filtrando ativamente o tráfego automatizado. Para contornar a Cloudflare com o Selenium, é necessário compreender o que a Cloudflare inspeciona e, em seguida, escolher uma ferramenta ou técnica que contorne esses vetores de deteção.

Neste guia, detalhamos as principais formas como a Cloudflare identifica bots e, em seguida, apresentamos cinco estratégias distintas de contorno em Python, cada uma com código funcional. Incluímos também uma tabela de comparação de métodos, dicas de reforço transversais (proxies, cabeçalhos, perfis de navegador) e uma secção de resolução de problemas para os modos de falha mais comuns. Quer esteja a realizar algumas verificações de controlo de qualidade ou a extrair dados de milhares de páginas, encontrará aqui um método que se adapta à sua situação e orçamento.

Por que razão a Cloudflare bloqueia o Selenium (e o que verifica)

A Cloudflare funciona tanto como CDN como como gateway de segurança. Ela redireciona o tráfego para o servidor de origem, submetendo cada pedido a um pipeline de deteção em várias camadas antes mesmo de a página ser carregada. Quando o seu script Selenium aciona esse pipeline, obtém uma página de desafio, um CAPTCHA ou um bloqueio total. Compreender o que a Cloudflare inspeciona é o primeiro passo para escolher a abordagem de contorno correta.

Inspeção de cabeçalhos e User-Agent

Todas as solicitações HTTP contêm cabeçalhos. A Cloudflare os examina em busca de incompatibilidades: um Accept-Language, uma string de user-agent desatualizada ou genérica, ou uma ordem de cabeçalhos que não corresponde a nenhuma versão real do navegador. O Selenium padrão envia frequentemente cabeçalhos numa ordem ligeiramente diferente da de uma sessão manual do Chrome, e essa discrepância por si só pode desencadear um desafio. A identificação do navegador nesta camada examina não apenas a string do user-agent, mas todo o conjunto de cabeçalhos como uma assinatura coesa.

Reputação de IP e análise de taxa

A Cloudflare mantém uma base de dados de reputação para endereços IP. Intervalos de centros de dados conhecidos, endereços associados a abusos anteriores e IPs que geram volumes de pedidos anormais recebem todos uma pontuação baixa. Se o seu script Selenium for executado a partir de uma VM na nuvem sem uma camada de proxy residencial, pode ser sinalizado antes mesmo de o navegador renderizar a página. É por isso que a rotação de proxies e a higiene de IP são fundamentais para quem tenta contornar a Cloudflare com o Selenium em qualquer volume significativo.

Identificação de TLS e HTTP/2

Quando o navegador abre uma ligação HTTPS, o handshake TLS anuncia conjuntos de encriptação e extensões numa ordem específica. A Cloudflare compara essa impressão digital com uma base de dados de compilações de navegador conhecidas. Uma compilação padrão do ChromeDriver pode expor uma impressão digital TLS que diverge daquela produzida por uma instalação normal do Chrome. Este é um sinal passivo, ao nível da rede, que nenhuma quantidade de correções de JavaScript consegue resolver por si só. Mitigá-lo requer a utilização de um driver que corresponda de perto à pilha TLS de um navegador real, ou transferir a camada de ligação para um serviço que a trate por si.

Desafios do JavaScript, impressão digital do Canvas e sinais comportamentais

A Cloudflare injeta JavaScript que sonda o ambiente do navegador. A verificação mais conhecida tem como alvo a navigator.webdriver , que o Selenium define como true por predefinição. Mas os scripts vão mais longe: avaliam propriedades DOM específicas da automação (document.$cdc_), artefactos de protocolo do Chrome DevTools e inconsistências em window.chrome. A impressão digital do Canvas solicita ao navegador que renderize uma imagem oculta e cria um hash da saída de pixels, que difere entre sessões sem interface gráfica e sessões de utilizadores reais. Além de tudo isto, a Cloudflare monitoriza movimentos do rato, eventos de deslocamento e padrões de tempo para construir um perfil comportamental. Aproximadamente seis categorias de deteção distintas funcionam em conjunto, embora a Cloudflare evolua continuamente estas verificações, pelo que a contagem exata pode variar ao longo do tempo.

Introdução rápida: Testar o seu estado de deteção

Antes de tentar qualquer técnica de contorno, confirme se a sua configuração do Selenium está realmente a ser detetada. Existem várias páginas públicas de verificação de bots para este fim. Duas opções amplamente utilizadas são o CreepJS e o teste de deteção de bots da Incolumitas. Abra estas páginas com o seu script Selenium e examine o resultado.

from selenium import webdriver

options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)
driver.get("https://abrahamjuliot.github.io/creepjs/")
# Inspect the trust score and fingerprint details in the rendered page
input("Check the results, then press Enter to close...")
driver.quit()

Se o CreepJS reportar uma pontuação de confiança baixa ou sinalizar webdriver: true, a sua configuração está a vazar sinais de automação. Anote a sua pontuação de referência e, em seguida, execute novamente o mesmo teste após aplicar cada método abaixo. Isto dá-lhe uma comparação mensurável do antes e depois, para que não tenha de adivinhar se um patch realmente ajudou.

Deve também verificar a reputação do seu IP de forma independente, comparando-a com um serviço como o IPQualityScore. Se o seu IP for sinalizado como um endereço de centro de dados, mesmo os melhores patches de navegador não irão compensar totalmente. Este fluxo de trabalho de testes de deteção é algo que deve repetir sempre que alterar o seu fornecedor de proxy, a versão do driver ou a configuração de camuflagem. Demora dois minutos e irá poupar-lhe horas de depuração às cegas mais tarde.

Método 1: ChromeDriver não detetado

O ChromeDriver indetetável é um substituto direto para o chromedriver . Ele corrige o executável do ChromeDriver em tempo de execução para remover marcadores de automação conhecidos (a $cdc_ variável, navigator.webdriver flag e os artefactos de protocolo do DevTools), tornando-o uma das ferramentas mais populares para contornar o Cloudflare com o Selenium em Python.

Instalação e utilização básica

pip install undetected-chromedriver
import undetected_chromedriver as uc

options = uc.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
driver = uc.Chrome(options=options)

driver.get("https://target-cloudflare-site.com")
print(driver.title)
driver.quit()

A biblioteca descarrega e corrige uma versão compatível do ChromeDriver na primeira execução. Não precisa de gerir os binários do driver por conta própria.

Adicionar suporte a proxy e rotação de User-Agent

Para evitar bloqueios baseados em IP ao tentar contornar o Cloudflare, introduza um proxy residencial através do sinalizador de inicialização do Chrome ou utilize uma extensão de autenticação:

options.add_argument("--proxy-server=http://user:pass@proxy-host:port")

Para a rotação do user-agent, escolha a partir de um conjunto de strings de UA do Chrome atuais e defina-as por sessão:

options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) ...")

Alterne as cadeias de user-agent entre valores modernos e legítimos e certifique-se de que o seu Accept, Accept-Language, e Referer sejam consistentes com o UA escolhido. Um user-agent do Chrome 120 emparelhado com cabeçalhos ao estilo do Firefox é uma pista imediata.

Limitações

O Undetected ChromeDriver é mantido pela comunidade e pode ficar atrasado em relação às atualizações da Cloudflare por dias ou semanas. Em sites altamente protegidos ou após pedidos repetidos a partir do mesmo IP, os ciclos de desafio podem reaparecer. Também não resolve CAPTCHAs por si só, por isso, se o site de destino apresentar um desafio Turnstile, vai precisar de uma ferramenta complementar. Pense nele como uma primeira camada robusta que cobre os vetores de deteção ao nível do binário do navegador e do JS, mas não como uma solução completa para todas as configurações do Cloudflare que possa encontrar. Para sites com gestão agressiva de bots, considere combiná-lo com proxies residenciais e um dos métodos adicionais abaixo.

Método 2: Selenium Stealth

Enquanto o Undetected ChromeDriver corrige o binário, o selenium-stealth funciona exclusivamente ao nível do JavaScript. Injeta scripts em cada carregamento de página que substituem navigator.webdriver, falsificam o window.chrome , corrigem entradas em falta navigator.plugins entradas em falta e normalizam navigator.languages. O resultado é uma sessão padrão do Selenium WebDriver que apresenta uma impressão digital do navegador muito mais convincente aos scripts de deteção da Cloudflare.

Configuração

pip install selenium-stealth
from selenium import webdriver
from selenium_stealth import stealth

options = webdriver.ChromeOptions()
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_experimental_option("excludeSwitches", ["enable-automation"])

driver = webdriver.Chrome(options=options)

stealth(driver,
        languages=["en-US", "en"],
        vendor="Google Inc.",
        platform="Win32",
        webgl_vendor="Intel Inc.",
        renderer="Intel Iris OpenGL Engine",
        fix_hairline=True)

driver.get("target-cloudflare-site.com")
print(driver.page_source[:500])
driver.quit()

O que corrige (e o que não corrige)

O Selenium-stealth lida com a impressão digital da camada JavaScript: navigator propriedades, matrizes de plugins, strings WebGL e o chrome.runtime objeto. No entanto, não modifica a impressão digital TLS, o binário do ChromeDriver ou os cabeçalhos HTTP ao nível da rede. Os sites que utilizam impressão digital TLS profunda ou deteção ao nível do binário podem continuar a sinalizar as suas sessões, mesmo com o stealth aplicado.

Combinar o selenium-stealth com uma camada de proxy residencial e cabeçalhos consistentes (Accept, Accept-Encoding, Accept-Language que correspondam ao seu user-agent) amplia significativamente a sua cobertura contra a superfície de deteção da Cloudflare. Também pode sobrepor-lhe o Undetected ChromeDriver para uma abordagem de segurança dupla, corrigindo simultaneamente tanto o binário como a camada JS. Ainda assim, para sites que realizam fingerprinting agressivo para além do JavaScript (particularmente nos níveis TLS e de rede), o selenium-stealth por si só pode não ser suficiente para contornar de forma fiável o Cloudflare com o Selenium em todas as sessões. É uma ferramenta leve e fácil de adicionar, mas aborda apenas uma parte da pilha de deteção.

Método 3: Modo UC do SeleniumBase

O SeleniumBase é uma estrutura de automatização de testes em Python que inclui a sua própria integração com o Undetected ChromeDriver, denominada modo UC. De acordo com a sua documentação, o modo UC sobrepõe patches adicionais do navegador à biblioteca base do Undetected ChromeDriver, abordando mais vetores de deteção numa única chamada de API. Os responsáveis pela manutenção do projeto descrevem estes patches como sendo mantidos em sincronia com as versões do Chrome de forma mais ativa do que o pacote autónomo undetected-chromedriver . Os benchmarks independentes são escassos, pelo que se deve tratar as alegações de eficiência comparativa com a devida cautela.

Introdução

pip install seleniumbase
from seleniumbase import SB

with SB(uc=True) as sb:
    sb.open("target-cloudflare-site.com")
    sb.sleep(3)  # allow challenge to resolve
    print(sb.get_page_source()[:500])

O uc=True sinalizador ativa o modo Undetected ChromeDriver. O SeleniumBase lida com downloads de drivers, aplicação de patches e limpeza automaticamente, reduzindo o código repetitivo que, de outra forma, teria de gerir manualmente.

Modo Headed e requisitos de exibição

Por predefinição, o modo UC é executado no modo com interface gráfica (janela visível). Alguns fluxos de desafio da Cloudflare, particularmente os widgets Turnstile, dependem da renderização de uma caixa de seleção visível que o script de desafio monitoriza. A partir das versões mais recentes, o SeleniumBase oferece uma uc_cdp variante sem interface gráfica, mas a sua fiabilidade contra os desafios da Cloudflare varia de site para site. Se o seu ambiente suportar um monitor (ou um framebuffer virtual como Xvfb no Linux), o modo com interface gráfica continua a ser a aposta mais segura para resultados consistentes ao tentar contornar o Cloudflare com o Selenium através do SeleniumBase.

Quando escolher o SeleniumBase em vez do ChromeDriver autônomo não detectado

O SeleniumBase é uma boa opção quando já o utiliza para automação de testes ou quando pretende uma única dependência que agrupe a gestão do driver, patches de camuflagem e uma API de nível superior com esperas integradas, ações de elementos e auxiliares de captura de ecrã. A estrutura também inclui integração pytest incorporada, o que é útil se os seus pipelines de scraping já coexistirem com um conjunto de testes.

A desvantagem é uma pegada de dependências maior e um controlo menos granular sobre patches individuais, em comparação com a configuração undetected-chromedriver diretamente. Se precisar de fixar uma versão específica do ChromeDriver ou personalizar exatamente quais os patches a aplicar, a biblioteca autónoma oferece-lhe essa flexibilidade.

Método 4: Resolver o Cloudflare Turnstile com um serviço CAPTCHA

Quando o Cloudflare passa de um desafio JavaScript para um CAPTCHA completo, os patches do navegador por si só não ajudam. O Cloudflare Turnstile é o atual produto CAPTCHA da Cloudflare. Ao contrário de uma simples caixa de seleção, o Turnstile analisa vários sinais de bot nos bastidores e requer um token de solução válido antes de conceder acesso à página protegida.

O fluxo de trabalho geral

  1. Extraia a chave do site. Inspecione o código-fonte da página para encontrar o data-sitekey no widget do Turnstile ou intercepte-o numa solicitação de rede para o ponto de extremidade de desafio da Cloudflare.
  2. Envie para um serviço de resolução de CAPTCHA. Envie a chave do site, o URL da página e o tipo de desafio para uma API de resolução (como 2Captcha ou CapSolver). O serviço utiliza trabalhadores humanos ou modelos de ML para produzir um token válido.
  3. Injete o token. Assim que receber o token, injete-o no callback da página ou num campo de formulário oculto:
token = "RECEIVED_TOKEN_FROM_SOLVER"
driver.execute_script(
    f'document.querySelector("[name=cf-turnstile-response]").value = "{token}";'
)
# Trigger the callback if one exists
driver.execute_script(
    "window.__cfTurnstileCallback && window.__cfTurnstileCallback(arguments[0]);",
    token
)

Considerações sobre custo, latência e escala

Os serviços de resolução de CAPTCHA cobram por solução, normalmente entre 2 e 5 dólares por mil resoluções. As soluções Turnstile também introduzem uma latência de 5 a 30 segundos por desafio, dependendo da carga do serviço e da profundidade da fila. Em grande escala, estes custos acumulam-se rapidamente. Este método funciona melhor como um recurso alternativo específico para páginas onde outras abordagens falham, e não como a sua principal estratégia de contorno para cada pedido.

Muitos serviços CAPTCHA exigem uma janela de navegador visível para renderizar o widget de desafio antes da extração do token. Se estiver a utilizar o modo headless, poderá ser necessário mudar para o modo headed (ou utilizar Xvfb) para a etapa de resolução do CAPTCHA. Este é um dos cenários em que a escolha entre o modo com interface gráfica e o modo sem interface gráfica determina diretamente se consegue contornar com sucesso o Cloudflare com o Selenium em páginas protegidas por CAPTCHA.

Método 5: Contornar o Cloudflare com alternativas ao Selenium: APIs de Web Scraping

Se preferir não ter de gerir patches do navegador, conjuntos de proxies e integrações de CAPTCHA, a quinta opção é transferir toda a camada anti-bot para uma API dedicada de web scraping. Estes serviços tratam da rotação de proxies, resolução de CAPTCHA, gestão de impressões digitais do navegador e lógica de repetição de tentativas por trás de um único ponto de extremidade HTTP. Envia-se um URL e o serviço devolve o HTML renderizado.

Padrão de integração

A integração típica substitui (ou complementa) a sua camada de pedidos do Selenium. Em vez de navegar diretamente no Selenium até ao URL de destino, chama a API e introduz o HTML devolvido no seu pipeline de análise:

import requests

api_url = "api.example.com/scrape"
params = {
    "url": "target-cloudflare-site.com",
    "render_js": "true"
}
headers = {"Authorization": "Bearer YOUR_API_KEY"}

response = requests.get(api_url, params=params, headers=headers)
html = response.text
# Parse with BeautifulSoup, lxml, or pass to your existing pipeline

Também pode encaminhar um serviço de proxy baseado em API através do próprio Selenium quando precisar de interação com o navegador (cliques, preenchimento de formulários, deslocamento) após ultrapassar o desafio inicial do Cloudflare.

Compromissos: Fiabilidade vs. Custo

Esta é a abordagem mais fiável em escala. Não precisa de acompanhar as atualizações de deteção do Cloudflare, não precisa de depurar incompatibilidades de impressão digital TLS e não precisa de gerir integrações de solucionadores de CAPTCHA. O fornecedor trata de tudo isso de forma centralizada e adapta-se mais rapidamente do que os projetos de código aberto normalmente conseguem.

As desvantagens são o custo por pedido e a dependência do fornecedor. Está a pagar por cada resposta bem-sucedida e está limitado às funcionalidades que o serviço disponibiliza. Para scraping de produção de grande volume, onde o tempo de atividade e a qualidade dos dados importam mais do que o custo por pedido, esta abordagem é normalmente a escolha pragmática. Também vale a pena notar que alguns serviços cobram apenas pela extração de dados bem-sucedida, pelo que os pedidos falhados não consomem o seu orçamento.

Para equipas com recursos de engenharia limitados ou requisitos rigorosos de tempo de atividade, uma abordagem via API elimina toda uma categoria de trabalho de manutenção: monitorizar a compatibilidade do ChromeDriver, atualizar patches de segurança após alterações da Cloudflare e depurar falhas intermitentes em diferentes sites de destino.

Comparando métodos de contorno: fiabilidade, escala e custo

A escolha da abordagem certa depende do seu volume, orçamento e tolerância para manutenção contínua. A tabela abaixo classifica cada método em quatro dimensões para o ajudar a decidir como contornar o Cloudflare com o Selenium para o seu caso de uso específico.

Método

Dificuldade de configuração

Fiabilidade

Escalabilidade

Custo

ChromeDriver não detetado

Baixa (pip install)

Média: funciona na maioria dos sites, pode falhar em configurações agressivas

Médio: um navegador por sessão

Gratuito (código aberto)

Selenium Stealth

Baixo (pip install)

Baixo a Médio: os patches apenas em JS não incluem verificações da camada TLS

Médio: mesma restrição de um navegador por sessão

Gratuito (código aberto)

SeleniumBase Modo UC

Baixo (pip install)

Médio a Alto: patches mais abrangentes, manutenção ativa

Médio: dependente do navegador

Gratuito (código aberto)

Serviço de resolução de CAPTCHA

Médio (chaves API + código de injeção de token)

Alto, especificamente para páginas protegidas por CAPTCHA

Baixo a Médio: o custo e a latência variam linearmente

~2-5 $ por cada 1.000 resoluções

API de Web Scraping

Baixo (uma única chamada HTTP)

Alto: o fornecedor lida com a corrida à detecção

Alta: concebida para volume

Pagamento por pedido bem-sucedido

As ferramentas de código aberto cobrem eficazmente volumes baixos a médios. Quando se começa a fazer milhares de pedidos diários ou a visar sites fortemente protegidos, o peso da manutenção das soluções DIY aumenta e os serviços geridos começam a compensar-se pelo tempo de engenharia poupado. Muitas equipas utilizam uma abordagem híbrida: métodos de código aberto para a maioria dos alvos, com um recurso de API para os domínios mais agressivamente protegidos.

Reforçar qualquer método: proxies, cabeçalhos e perfis de navegador

Independentemente do método de contorno que escolher, algumas técnicas transversais reduzem significativamente a sua superfície de deteção.

Proxies residenciais e móveis. O sistema de reputação de IP da Cloudflare trata os IPs de centros de dados com desconfiança. Encaminhar o tráfego através de endereços IP residenciais ou móveis faz com que as solicitações pareçam tráfego normal de consumidores. Alterne os IPs entre sessões, mas mantenha a afinidade de sessão dentro de um único carregamento de página para que os cookies e os tokens de autorização da Cloudflare permaneçam consistentes.

Consistência dos cabeçalhos. Os seus Accept, Accept-Language, Accept-Encodinge Referer cabeçalhos devem corresponder ao user-agent que definiu. Um user-agent do Chrome 120 emparelhado com cabeçalhos de aceitação ao estilo do Firefox é uma pista óbvia. Crie um objeto de perfil de cabeçalho e aplique-o uniformemente em todas as solicitações de uma sessão.

Perfis de navegador persistentes e reutilização de cookies. Em vez de iniciar um novo perfil do Chrome a cada execução, crie e reutilize um diretório de perfis persistente. Isto preserva os cookies (incluindo o cf_clearance ), fontes em cache e armazenamento local. Depois de passar no desafio da Cloudflare uma vez, as visitas subsequentes a partir do mesmo perfil geralmente são aprovadas sem serem desafiadas novamente, pelo menos até que o cookie de autorização expire.

options.add_argument("--user-data-dir=/path/to/persistent-profile")

Monitorização do estado do proxy. Acompanhe os códigos de resposta e a latência por endereço de proxy. Retire IPs que comecem a devolver 403 ou taxas de desafio elevadas. Distribuir as solicitações uniformemente evita que qualquer endereço individual fique sobrecarregado.

Modo Headless vs. Modo Headed: Quando cada um funciona

A execução no modo headless é conveniente para pipelines de CI e ambientes de servidor, mas introduz um risco adicional de deteção. Historicamente, o Chrome headless vazava sinais como um window.outerHeight, uma janela de visualização de tamanho zero ou a HeadlessChrome subsequência no user-agent. Os patches modernos resolvem a maioria destes indícios, mas algumas configurações da Cloudflare e a maioria dos fluxos de CAPTCHA ainda requerem uma janela visível.

Se tiver de utilizar o modo sem interface gráfica, aplique patches de camuflagem, defina dimensões realistas para a janela de visualização e remova quaisquer indicadores de modo sem interface gráfica do user-agent. Para fluxos de trabalho com grande volume de CAPTCHA, utilize Xvfb (X Virtual Framebuffer) no Linux para simular um ecrã sem um monitor físico. Isto proporciona-lhe um comportamento de modo com interface gráfica num ambiente de servidor sem necessidade de um ambiente de trabalho.

Resolução de falhas comuns

Mesmo com as ferramentas certas, as coisas podem falhar. Aqui está uma lista de verificação de diagnóstico para as falhas de contorno da Cloudflare mais comuns.

Loops infinitos de desafio. A página continua a recarregar o ecrã «A verificar o seu navegador». Isto significa normalmente que o seu cookie de autorização não está a ser armazenado ou que o seu IP mudou a meio da sessão. Certifique-se de que está a utilizar esperas explícitas (em vez de chamadas fixas time.sleep ) e que o seu proxy mantém a afinidade de sessão ao longo de todo o fluxo do desafio.

403 após aprovação inicial. Passou no desafio na primeira página, mas páginas mais profundas devolvem 403. O Cloudflare por vezes revalida durante a navegação. Mantenha o cf_clearance cookie em todas as solicitações na mesma sessão e evite trocar de IP entre carregamentos de página.

CAPTCHAs repetidos em todas as páginas. Se todas as páginas apresentarem um widget Turnstile, é provável que a impressão digital do seu navegador esteja a ser sinalizada a um nível mais profundo. Volte a testar numa página de verificação de bots para identificar qual o sinal que está a vazar. As causas mais comuns incluem uma matriz de plugins em falta, um renderizador WebGL incompatível ou um IP de centro de dados que a Cloudflare já tenha colocado na lista negra.

Erros de tempo limite. A página de desafio carrega, mas nunca é resolvida. Aumente o seu tempo limite de espera explícito e verifique se o JavaScript de desafio da Cloudflare está a ser executado corretamente. Alguns sinalizadores do Chrome (--disable-gpu, substituições agressivas da política de segurança de conteúdo) podem impedir que os scripts de desafio sejam concluídos.

Configuração incorreta do proxy. Teste sempre o seu proxy com uma chamada requests.get("httpbin.org/ip") antes de o integrar no Selenium. Confirme se o IP de saída corresponde ao esperado, se a autenticação está a funcionar e se o proxy suporta tunelamento HTTPS CONNECT.

Limites éticos e legais

Contornar as proteções da Cloudflare levanta questões legais e éticas reais que merecem uma consideração honesta. Antes de implementar qualquer método deste guia, verifique os robots.txt e os termos de serviço do site de destino. Muitos sites proíbem explicitamente o acesso automatizado.

Limite a frequência das suas solicitações. Sobrecarregar um site com sessões paralelas do Selenium não só arrisca o bloqueio, como também degrada o desempenho para os utilizadores reais. Trate estas técnicas de contorno como ferramentas para testes autorizados, investigação e recolha de dados que respeitem a infraestrutura do site. Quando dados estruturados estiverem disponíveis através de uma API oficial, opte por essa via. É mais rápida, mais fiável e elimina totalmente a ambiguidade legal.

Pontos-chave

  • A Cloudflare utiliza deteção em camadas (reputação de IP, impressões digitais TLS, desafios JS, análise comportamental), pelo que um único patch raramente cobre todos os vetores. Estratifique as suas defesas em conformidade.
  • O ChromeDriver não detetado e o modo UC do SeleniumBase são as opções gratuitas mais fortes para trabalhos de volume baixo a médio. O Selenium Stealth cobre apenas a camada JavaScript e pode não ser suficiente por si só.
  • Os serviços de resolução de CAPTCHA lidam com os desafios do Turnstile, mas acrescentam custos e latência, tornando-os mais adequados como um recurso alternativo específico do que como uma estratégia generalizada.
  • Teste sempre a sua configuração numa página pública de verificação de bots (como o CreepJS) antes de a implementar em alvos reais. Isto poupa horas de depuração às cegas.
  • À escala de produção, os serviços baseados em API trocam o custo por pedido pela fiabilidade de engenharia, eliminando a necessidade de acompanhar as atualizações de deteção em constante evolução da Cloudflare.

Perguntas frequentes

O Selenium básico consegue contornar o Cloudflare sem bibliotecas adicionais?

Não. O Selenium padrão expõe o navigator.webdriver flag, vaza variáveis DOM específicas do ChromeDriver e envia cabeçalhos padrão que o pipeline de deteção da Cloudflare capta imediatamente. É necessário, no mínimo, um patch de camuflagem ou uma variante de driver indetetável para passar até mesmo nos desafios básicos de JavaScript.

Qual é a diferença entre o Selenium Stealth e o modo SeleniumBase UC?

O Selenium Stealth injeta substituições de JavaScript em cada página para mascarar propriedades como navigator.webdriver e window.chrome. O modo SeleniumBase UC vai mais longe: corrige o próprio binário do ChromeDriver, gere automaticamente o controlo de versões do driver e aplica correções adicionais contra a identificação de impressões digitais ao nível do navegador, em vez de apenas na camada JavaScript.

O Selenium pode ser executado no modo headless e ainda assim contornar o Cloudflare?

Às vezes. Os patches de camuflagem modernos mitigam muitas impressões digitais headless, mas algumas configurações do Cloudflare e fluxos de CAPTCHA ainda exigem uma janela de navegador visível. Em servidores headless, use um framebuffer virtual (Xvfb) para simular um ecrã, o que lhe dá um comportamento de modo com ecrã sem um monitor físico.

Com que frequência o Cloudflare atualiza a sua deteção de bots e como é que isso afeta estes métodos?

A Cloudflare lança atualizações de deteção continuamente, com alterações notáveis aproximadamente a cada poucas semanas. Ferramentas de código aberto como o Undetected ChromeDriver demoram normalmente dias ou semanas a adaptar-se após uma atualização importante, causando falhas temporárias. Os serviços de scraping geridos adaptam-se mais rapidamente porque as suas equipas atualizam a infraestrutura de forma centralizada e podem responder em poucas horas.

Conclusão

Contornar a deteção de bots da Cloudflare com o Selenium é um problema complexo que exige uma solução em camadas. Comece por compreender o que a Cloudflare verifica realmente (impressões digitais TLS, sondas JavaScript, reputação de IP, padrões comportamentais) e, em seguida, escolha o método de contorno que corresponda à sua escala e preferências de manutenção.

Para tarefas rápidas e de baixo volume, o Undetected ChromeDriver ou o modo SeleniumBase UC permitir-lhe-ão superar a maioria dos desafios com uma configuração mínima. Quando surgem CAPTCHAs do Turnstile, um serviço de resolução preenche a lacuna. E para cargas de trabalho de produção em que a fiabilidade e o tempo de atividade são mais importantes do que o custo por pedido, transferir toda a camada anti-bot para um serviço gerido é a medida pragmática.

Seja qual for o método escolhido, combine-o com proxies residenciais, cabeçalhos consistentes e um perfil de navegador persistente. Teste a sua configuração numa página de verificação de bots antes de implementar e volte a testar sempre que a sua taxa de sucesso baixar.

Se preferir evitar completamente este jogo do gato e do rato, a WebScrapingAPI gere a rotação de proxies, a resolução de CAPTCHAs e a gestão de impressões digitais através de um único ponto de acesso, para que se possa concentrar no que realmente lhe interessa: os dados.

Sobre o autor
Mihnea-Octavian Manolache, Desenvolvedor Full Stack @ WebScrapingAPI
Mihnea-Octavian ManolacheDesenvolvedor Full Stack

Mihnea-Octavian Manolache é engenheiro Full Stack e DevOps na WebScrapingAPI, onde desenvolve funcionalidades do produto e mantém a infraestrutura que garante o bom funcionamento da plataforma.

Comece a construir

Pronto para expandir a sua recolha de dados?

Junte-se a mais de 2.000 empresas que utilizam a WebScrapingAPI para extrair dados da Web à escala empresarial, sem quaisquer custos de infraestrutura.