Geonode logo
Geonode Team

Geonode Team

Atualizado: 7 de outubro de 2026

Publicado: 2 de setembro de 2026

Cloudscraper em Python: Um guia completo

O Cloudscraper é uma biblioteca em Python destinada a contornar a página de desafio intersticial da Cloudflare. Era verdadeiramente eficaz, é amplamente recomendado e não tem uma versão funcional desde 2023. Essa lacuna é mais importante do que qualquer guia de utilização, porque a deteção da Cloudflare mudou substancialmente nos anos que se seguiram e o próprio ficheiro README da biblioteca descreve um modelo de ameaça que já não existe. Este artigo aborda o que a biblioteca faz, por que razão a abordagem deixou de funcionar e o que fazer em vez disso.

Somos a Geonode e comercializamos proxies, que é o produto normalmente recomendado em conjunto com uma biblioteca como esta. A verdade é que não vamos escrever um guia para contornar a restrição e que, neste caso específico, a ferramenta já está desatualizada de qualquer forma. Verificámos o pacote em setembro de 2026: versão 1.2.71 no PyPI, carregada em abril de 2023, com o repositório de código-fonte atualizado pela última vez em junho de 2025 e cujas alterações eram de natureza administrativa e não funcional. Entretanto, a deteção de bots da Cloudflare passou a utilizar aprendizagem automática com base em milhares de milhões de pedidos, deteção «headless» baseada em JavaScript e análise da ordem dos cabeçalhos. Uma biblioteca baseada em «requests» que resolve um desafio de JavaScript não aborda nada disso. A parte útil deste artigo são as últimas três secções.

Para que foi criado o Cloudscraper

A própria descrição da biblioteca é clara quanto ao seu objetivo, e lê-la agora é esclarecedor.

O Cloudscraper descreve-se como «um módulo Python simples para contornar a página anti-bot da Cloudflare (também conhecida como “I’m Under Attack Mode”, ou IUAM), implementado com o Requests». Salienta que «atualmente, a página anti-bot da Cloudflare limita-se a verificar se o cliente suporta JavaScript, embora possam vir a adicionar técnicas adicionais no futuro».

O mecanismo que resolvia era o clássico intersticial:

Checking your browser before accessing website.com.
This process is automatic. Your browser will redirect to your requested content shortly.
Please allow up to 5 seconds...

A abordagem da biblioteca consistia em utilizar «um motor/interpretador de JavaScript para resolver os desafios de JavaScript», o que «permite que o script se faça passar facilmente por um navegador web normal sem ter de desofuscar e analisar explicitamente o JavaScript da Cloudflare». A sua documentação refere que um script ficaria «em espera durante cerca de 5 segundos na primeira visita a qualquer site com o anti-bots da Cloudflare ativado», sem qualquer atraso posteriormente.

Para o problema tal como se apresentava, este era um design razoável. O desafio consistia num quebra-cabeças de JavaScript; a biblioteca executava um motor de JavaScript e resolvia-o.

O ficheiro README contém também um compromisso que data o projeto com precisão: «A Cloudflare altera as suas técnicas periodicamente, pelo que irei atualizar este repositório com frequência.»

O estado da manutenção, verificado

Factos em vez de impressões, verificados em setembro de 2026.

A versão mais recente no PyPI é a 1.2.71, publicada a 25 de abril de 2023. Trata-se de um intervalo de mais de três anos em relação a um objetivo que o autor descreveu como estando sujeito a alterações periódicas.

O repositório do GitHub foi atualizado pela última vez em junho de 2025, e os commits mais recentes têm os títulos «Corrigir proprietário», «Readicionar gitignore» e «Corrigir os detalhes do proprietário» — tarefas de manutenção, em vez de atualizações de deteção.

Não está arquivado e tem cerca de 36 issues em aberto.

Nada disto constitui uma crítica ao autor, que criou uma ferramenta útil e a disponibilizou sob uma licença MIT. Trata-se simplesmente do estado do pacote, e é o facto mais relevante para quem estiver prestes a depender dele. Uma biblioteca cuja proposta de valor consiste inteiramente em acompanhar o ritmo de um adversário é uma biblioteca em que a data de lançamento é a especificação.

Se encontrar o cloudscraper recomendado num artigo, verifique a data do artigo. Grande parte dos conselhos que circulam era precisa na altura em que foram escritos e não foi revista.

Como funciona atualmente a deteção da Cloudflare

A razão pela qual esta abordagem já não funciona, segundo a própria documentação da Cloudflare.

A pontuação de bot da Cloudflare varia entre 1 e 99, em que 1 significa «a Cloudflare tem quase a certeza de que o pedido foi automatizado» e 99 indica que provavelmente se trata de um utilizador humano. É calculada por vários motores que funcionam em conjunto.

O aprendizado automático é responsável pela maioria das deteções. A Cloudflare descreve uma «metodologia de aprendizado automático supervisionado» que analisa milhares de milhões de pedidos diários, examinando «características dos pedidos, como cabeçalhos e sinais do navegador», para prever a probabilidade de um cliente ser humano.

A heurística compara com assinaturas conhecidas, atribuindo uma pontuação de 1 a deteções de elevada confiança.

As deteções por JavaScript identificam navegadores «headless» através de uma «injeção leve e invisível de JavaScript do lado do cliente» que, segundo a Cloudflare, «não recolhe quaisquer informações de identificação pessoal».

Os IDs de deteção são regras estáticas que identificam comportamentos previsíveis. O exemplo da Cloudflare é revelador: conseguem identificar quando «um cliente envia cabeçalhos numa ordem diferente daquela que o navegador que alega utilizar utilizaria».

Este último ponto é o cerne da questão. A ordem dos cabeçalhos não é algo que uma biblioteca baseada em requestscontrole, e não se altera quando se resolve um desafio de JavaScript. O mesmo se aplica à assinatura do handshake TLS, que é uma propriedade da sua pilha HTTP em Python e não de qualquer coisa que envie.

Assim, o modelo inverteu-se. Em 2019, a questão era «este cliente consegue executar JavaScript?», e uma biblioteca com um motor de JavaScript respondia que sim. Agora, a questão é «tudo neste cliente corresponde ao que afirma ser?», e um processo Python que afirma ser o Chrome falha em vários sinais independentes ao mesmo tempo — nenhum dos quais é afetado por quem resolve o desafio.

A Cloudflare também adicionou respostas deliberadamente adversárias. O seu AI Labyrinth fornece aos rastreadores conteúdo gerado de forma coerente indefinidamente, em vez de os bloquear, o que significa que um scraper pode parecer ter sucesso, embora não recolha nada de valor. Abordámos esse padrão em armadilhas honeypot.

Por que razão os proxies não resolvem este problema

A parte em que argumentamos contra o nosso próprio produto, porque é verdade.

Observe a lista de deteção acima e repare no que nela consta: composição e ordenação dos cabeçalhos, sinais do navegador, características das solicitações aprendidas por aprendizagem automática, características de execução de JavaScript. O endereço IP não aparece em parte alguma na própria descrição da Cloudflare sobre como a pontuação de bot é calculada.

A reputação do endereço é certamente um dos fatores que influenciam a decisão global da Cloudflare, e um endereço com má reputação não o ajudará. Mas é apenas um fator entre muitos, e não é esse que identifica um cliente Python como automatizado. Um proxy residencial à frente de uma sessão requests proporciona-lhe um endereço limpo associado a um cliente que continua a parecer exatamente o que é.

O resumo sincero: se estiver a ser sinalizado porque o seu endereço está num intervalo partilhado de um centro de dados com um histórico negativo, endereços melhores ajudam. Se estiver a ser sinalizado porque o seu pedido não se assemelha ao navegador que afirma ser, nenhuma alteração de endereço muda isso — e preferimos dizer-lhe isso a vender-lhe largura de banda para esse fim.

O que fazer em vez disso

A secção verdadeiramente útil, por ordem de resolução dos problemas mais comuns.

Verifique se existe uma API oficial. Uma grande parte dos sites que utilizam o Cloudflare também publica uma, precisamente para que os utilizadores legítimos tenham uma via autorizada. Isto é verificado com muito menos frequência do que deveria, porque o reflexo é procurar uma forma de contornar o bloqueio em vez de procurar a documentação.

Verifique se existe um feed de dados ou um programa de parceria. Setores inteiros publicam dados em massa para consumidores a jusante. Pergunte.

Verifique o que está disponível sem o caminho protegido. Mapas do site, feeds RSS, JSON-LD incorporado nas páginas, conjuntos de dados públicos, arquivos. É comum descobrir que exatamente o que procurava está publicado algures sem proteção.

Pergunte ao site. Um e-mail a explicar quem é, o que precisa e em que volume resolve isto com mais frequência do que o discurso sugere. A objeção de um operador de site é geralmente a uma carga não explicada, não a si especificamente. Esta é também a única via que proporciona um acesso que continua a funcionar.

Recorra a um fornecedor de dados licenciado. No caso de dados comuns — informações sobre empresas, catálogos de produtos, dados de mercado — há quem os venda, e o preço é frequentemente inferior ao tempo de engenharia gasto a tentar evitar a compra.

Considere se precisa de menos. Grande parte da recolha obtém muito mais do que o necessário. Um pedido mais pequeno e específico é mais fácil de satisfazer por meios legítimos e mais fácil de justificar quando o faz.

E se estiver a utilizar um cliente automatizado legítimo, a tendência emergente é a identificação, em vez do disfarce. O setor está a avançar no sentido da autenticação criptográfica de agentes, políticas de acesso por agente e, em alguns casos, acesso pago para tráfego automatizado — uma direção que descrevemos no nosso artigo sobre o DataDome. Ser um agente que um site pode identificar e optar por autorizar é a única abordagem que se torna mais fiável com o tempo, em vez de menos.

Se já tiver código a utilizá-lo

Orientações práticas para a situação em que muitas pessoas se encontram: um pipeline funcional construído com o CloudScraper que começou a apresentar falhas.

Primeiro, determine o que está realmente a acontecer. «Deixou de funcionar» abrange várias falhas distintas com respostas diferentes. Imprima o código de estado e a primeira parte do corpo da resposta, em vez de se limitar a capturar a exceção:

import cloudscraper

scraper = cloudscraper.create_scraper()
r = scraper.get(url)
print(r.status_code, r.headers.get("content-type"))
print(r.text[:300])

Um 403 com uma página de bloqueio do Cloudflare significa que foi identificado. Um 200 com uma página de desafio significa que o desafio não foi resolvido. Um 200 com conteúdo plausível, mas irrelevante, significa que pode estar num «tarpit». Um 503 com um intersticial da Cloudflare significa que o desafio à moda antiga ainda está em vigor e que algo mais na sua configuração está errado. Cada um aponta para algo diferente.

Em seguida, verifique se foi o site ou a biblioteca que mudou. Recupere o mesmo URL com o simples requests e com um navegador real. Se o navegador funcionar e ambos os caminhos do Python falharem de forma idêntica, o site reforçou a sua proteção e nenhuma configuração da biblioteca irá ajudar. Se o simples requests funcionar, o cloudscraper está a criar um problema em vez de resolver um — o que acontece, e que vale a pena verificar antes de assumir que precisa dele.

Não fixe uma versão mais antiga na esperança de recuperar o comportamento. A falha está do outro lado da ligação, não no pacote. Não existe nenhuma versão anterior que conheça um método de deteção introduzido depois de ter sido escrita.

Remova-a se já não estiver a fazer nada. Uma dependência que resolvia um desafio que já não se apresenta é um pacote sem manutenção na sua cadeia de abastecimento, sem qualquer benefício. Os sites alternam entre os modos mais agressivos do Cloudflare, e um pipeline construído durante um período agressivo pode funcionar bem sem a biblioteca agora. Teste-o.

E encare a falha como informação sobre o projeto, em vez de um bug a corrigir. Um pipeline de recolha que requer uma biblioteca de desvio sem manutenção para funcionar é um pipeline com um problema estrutural, e o tempo gasto a restaurá-lo é tempo que não é gasto a encontrar a API, o feed ou a pessoa a quem perguntar. Pela nossa experiência, a segunda pesquisa tem mais sucesso do que a primeira.

Onde os proxies realmente se encaixam

Para completar, uma vez que esta é a nossa área de atividade e existem aplicações reais.

Distribuir o volume por vários endereços quando já otimizou a sua velocidade e um único endereço constitui o limiar. Trata-se de um problema de largura de banda, e é precisamente isso que os proxies resolvem.

Aceder a conteúdos específicos de uma região, em que parecer estar noutro local é o objetivo principal.

Contornar uma rede que filtra um site, o que é um problema do seu lado e não do site.

Verificação de anúncios e monitorização da marca, verificando os seus próprios gastos nas regiões pelas quais pagou.

Nenhum destes casos constitui um desvio. Todos eles são situações em que o endereço é genuinamente a variável e, em cada um deles, o ponto de partida sensato é a largura de banda do centro de dados — a nossa a partir de 0,14 $/GB —, passando para a largura de banda residencial a 0,79 $/GB apenas quando for comprovadamente necessário. Dados retirados da nossa página de preços, verificados em setembro de 2026.

O que não faremos é vender um plano com a sugestão de que este contorna um modelo de aprendizagem automática que analisa a ordem dos cabeçalhos. Não é essa a função de um endereço IP.

Perguntas frequentes

O Cloudscraper ainda funciona?

Contra a proteção moderna da Cloudflare, geralmente não. A última versão no PyPI data de abril de 2023, e a biblioteca foi concebida para uma época em que o desafio consistia principalmente numa verificação de JavaScript. A deteção atual recorre à aprendizagem automática com base nas características dos pedidos, à análise da ordem dos cabeçalhos e à deteção «headless» baseada em JavaScript, nenhum dos quais é abordado por um solucionador de desafios.

O cloudscraper ainda é mantido?

O repositório não está arquivado, mas a última versão data de abril de 2023 e os commits mais recentes — de junho de 2025 — são de natureza administrativa e não funcional. Para uma biblioteca cujo valor depende inteiramente do acompanhamento de um alvo em constante mudança, a data de lançamento é, na prática, a especificação.

Por que razão o Cloudscraper devolve um erro 403?

Porque a Cloudflare identificou o cliente através de sinais que a biblioteca não controla. A ordem dos cabeçalhos, as características do handshake TLS e as características das solicitações detetadas por aprendizagem automática apontam todas para um cliente HTTP em Python, independentemente de um desafio em JavaScript ter sido resolvido.

Um proxy fará com que o cloudscraper funcione?

Não, a menos que a reputação do endereço seja especificamente a razão pela qual foi sinalizado. A própria descrição da Cloudflare sobre a sua pontuação de bot abrange a aprendizagem automática das características das solicitações, heurísticas, deteções de JavaScript e regras de ordem dos cabeçalhos — nenhuma das quais muda quando o seu endereço muda.

O que posso usar em vez do Cloudscraper?

Procure uma API oficial, um feed de dados de um parceiro ou dados publicados noutro local sem proteção. Em seguida, considere perguntar diretamente ao site, o que resolve esta situação com mais frequência do que as pessoas esperam e proporciona um acesso que continua a funcionar. Os fornecedores de dados licenciados são frequentemente mais baratos do que o tempo de engenharia gasto a contorná-los.

É legal contornar o Cloudflare?

As violações dos termos de serviço são de natureza contratual e não criminal na maioria das jurisdições, e a consequência realista é o bloqueio. A legalidade depende da jurisdição, dos dados envolvidos e da forma como são utilizados. Um site que implementou proteção assumiu uma posição, que vale a pena ponderar independentemente da análise jurídica. Isto não constitui aconselhamento jurídico.

Por que recebo uma resposta 200 sem conteúdo útil?

Pode ter chegado a um «tarpit». O AI Labyrinth da Cloudflare apresenta aos rastreadores conteúdo gerado coerente e factualmente plausível, mas simplesmente irrelevante para o site, em vez de os bloquear. Tudo é devolvido com sucesso, mas não recolhe nada, o que é intencional.

A utilização de um navegador «headless» funciona melhor?

Aborda mais sinais do que uma biblioteca baseada em «requests», uma vez que um navegador real produz características reais de TLS e de cabeçalhos. Também custa muito mais em largura de banda e recursos de computação, e as deteções de JavaScript da Cloudflare visam especificamente os navegadores «headless». Trata-se de uma troca de vantagens e desvantagens, em vez de uma solução, e a questão dos termos permanece inalterada.

Conclusão

O Cloudscraper resolveu bem um problema real, mas esse problema já não existe na forma para a qual foi concebido. A última versão funcional é anterior a várias gerações de mudanças do outro lado, e o próprio ficheiro README da biblioteca promete atualizações frequentes que não ocorrem há mais de três anos.

Compreender o porquê é mais útil do que encontrar um substituto. A antiga questão era se um cliente poderia executar JavaScript, e uma biblioteca com um motor de JavaScript conseguia responder a essa questão. A questão atual é se tudo no cliente corresponde ao que este afirma ser — ordem dos cabeçalhos, características TLS, sinais do navegador, comportamento — e uma sessão HTTP em Python que afirma ser o Chrome falha em vários desses aspetos simultaneamente, independentemente do que resolva.

É também por isso que não vos vamos vender proxies como solução. A própria explicação da Cloudflare sobre como é calculada a sua pontuação de bot não menciona de todo o endereço do cliente. Endereços melhores ajudam com problemas de endereço e com mais nada.

O que funciona é pouco glamoroso, mas duradouro: encontrar a API, encontrar o feed, encontrar os dados publicados noutro local ou perguntar. Esta última opção, em particular, tem uma taxa de sucesso muito mais elevada do que o discurso sugere, e é a única via que não precisa de ser revista sempre que alguém lança uma atualização de deteção.