Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cloudscraper — Um módulo Python para contornar a página anti-bot da Cloudflare. | Kitploit
Ferramentas/GitHubGitHub/venomous/cloudscraper
Ferramentas de ImpersonaçãoBypass de WAFRastreadorAnti-BotFalsificação de Impressão DigitalBypass de CAPTCHA
GitHubvenomous/cloudscraper

cloudscraper

Um módulo Python para contornar a página anti-bot da Cloudflare.

Ver Repositório
6.7k638há 1 anoRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

cloudscraper - Edição Aprimorada

PyPI version License: MIT image

Aprimorado por Zied Boughdir

Último Lançamento: v3.0.0 🚀 - Grande Atualização

🆕 Principais Novos Recursos na v3.0.0

  • 🛡️ Recuperação Automática de Erros 403 - Atualização inteligente da sessão quando erros 403 ocorrem após uso prolongado
  • 📊 Monitoramento de Saúde da Sessão - Gerenciamento proativo de sessão com intervalos de atualização configuráveis
  • 🔄 Atualização Inteligente de Sessão - Limpeza automática de cookies e rotação de impressões digitais (fingerprint)
  • 🎯 Modo Stealth Aprimorado - Melhor anti-detecção com simulação de comportamento humano
  • 🔧 Suporte Moderno a Python - Python 3.8+ com as versões mais recentes das dependências
  • 📦 Empacotamento Moderno - Usa pyproject.toml e ferramentas de build modernas
  • 🧪 Testes Abrangentes - Nova suíte de testes com pytest e integração CI/CD
  • 🚀 Melhorias de Performance - Código otimizado com melhor tratamento de erros

🔧 Mudanças de Quebra (Breaking Changes)

  • Versão mínima do Python: Agora requer Python 3.8+
  • Dependências atualizadas: Todas as dependências atualizadas para as versões estáveis mais recentes
  • Código legado removido: Limpeza do código de compatibilidade com Python 2

✅ Recursos Anteriores (Ainda Disponíveis)

  • Correção de Compatibilidade com Executáveis - Solução completa para conversão com PyInstaller, cx_Freeze e auto-py-to-exe
  • Suporte ao Desafio JavaScript VM do Cloudflare v3 - Lide com a proteção mais recente e sofisticada do Cloudflare
  • Suporte ao Desafio Turnstile do Cloudflare - Suporte para a alternativa CAPTCHA do Cloudflare
  • Suporte Aprimorado a Interpretadores JavaScript - Execução de desafios baseados em VM melhorada
  • Cobertura Completa de Proteção - Agora suporta todos os tipos de desafios do Cloudflare (v1, v2, v3, Turnstile)

🔧 Melhorias

  • 🎯 Corrigidos Problemas de User Agent em Executáveis - Sistema de fallback automático para browsers.json ausente
  • 🛡️ Detecção de PyInstaller - Detecta e lida automaticamente com ambientes de executáveis
  • 📦 Sistema de Fallback Abrangente - Mais de 70 user agents integrados cobrindo todas as plataformas
  • Capacidades aprimoradas de rotação de proxy e modo stealth
  • Melhor detecção e tratamento dos mecanismos modernos de proteção do Cloudflare
  • Compatibilidade melhorada com todos os interpretadores JavaScript (js2py, nodejs, nativo)
  • Documentação atualizada com exemplos abrangentes

📊 Resultados dos Testes

Todos os recursos testados com 100% de taxa de sucesso para a funcionalidade principal:

  • ✅ Requisições básicas: 100% de aprovação
  • ✅ Tratamento de user agent: 100% de aprovação
  • ✅ Desafios Cloudflare v1: 100% de aprovação
  • ✅ Desafios Cloudflare v2: 100% de aprovação
  • ✅ Desafios Cloudflare v3: 100% de aprovação
  • ✅ Modo stealth: 100% de aprovação

Um módulo Python para contornar a página anti-bot do Cloudflare (também conhecida como "I'm Under Attack Mode", ou IUAM), implementado com Requests. Esta versão aprimorada inclui suporte para desafios Cloudflare v2, rotação de proxy, modo stealth e muito mais. O Cloudflare altera suas técnicas periodicamente, então atualizarei este repositório com frequência.

Isto pode ser útil se você desejar fazer scraping ou rastrear um site protegido pelo Cloudflare. A página anti-bot do Cloudflare atualmente apenas verifica se o cliente suporta Javascript, embora eles possam adicionar técnicas adicionais no futuro.

Devido ao Cloudflare estar continuamente mudando e endurecendo sua página de proteção, o cloudscraper requer um Motor/interpretador JavaScript para resolver desafios Javascript. Isso permite que o script se passe facilmente por um navegador comum sem desofuscar e analisar explicitamente o Javascript do Cloudflare.

Para referência, esta é a mensagem padrão que o Cloudflare usa para esses tipos de página:``` 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...

root@kitploit:~
Qualquer script que use cloudscraper aguardará ~5 segundos na primeira visita a qualquer site com anti-bots do Cloudflare habilitados, embora nenhum atraso ocorra após a primeira solicitação.



# Instalação

Basta executar `pip install cloudscraper`. O pacote PyPI está em https://pypi.org/project/cloudscraper/```bash
pip install cloudscraper

Alternativamente, clone este repositório e execute python setup.py install.

Migração do cloudscraper

Se você estava usando anteriormente o pacote original cloudscraper, agora você pode usar esta versão aprimorada diretamente:```python

Enhanced import

import cloudscraper # Enhanced version

root@kitploit:~
A API permanece compatível, então você só precisa alterar as declarações de import no seu código. Todas as chamadas de função e parâmetros funcionam da mesma forma.

### Estrutura da Base de Código

A base de código foi simplificada para melhorar a manutenibilidade e reduzir a confusão:

- **Módulo Único**: Todo o código agora está no módulo `cloudscraper`
- **Redundância Removida**: Os diretórios redundantes foram removidos
- **Testes Atualizados**: Todos os arquivos de teste foram atualizados para usar o módulo `cloudscraper`

Isso torna a base de código mais limpa e fácil de manter, garantindo ao mesmo tempo compatibilidade reversa com o código existente que usa a API original.

## Principais Recursos do cloudscraper

| Recurso | Descrição | Status |
|---------|-------------|--------|
| **🆕 Compatibilidade com Executáveis** | Correção completa para conversão com PyInstaller, cx_Freeze, auto-py-to-exe | ✅ **CORRIGIDO** |
| **🆕 Desafios de VM JavaScript v3** | Suporte aos mais recentes desafios baseados em VM JavaScript da Cloudflare | ✅ **NOVO** |
| **🆕 Suporte a Turnstile** | Suporte ao novo substituto de CAPTCHA Turnstile da Cloudflare | ✅ **NOVO** |
| **Suporte a Desafios Modernos** | Suporte aprimorado para desafios Cloudflare v1, v2, v3 e Turnstile | ✅ Completo |
| **Rotação de Proxy** | Rotação inteligente de proxy integrada com múltiplas estratégias | ✅ Aprimorado |
| **Modo Furtivo** | Simulação de comportamento semelhante ao humano para evitar detecção | ✅ Aprimorado |
| **Emulação de Navegador** | Impressão digital avançada de navegador para Chrome e Firefox | ✅ Estável |
| **Manipulação de JavaScript** | Melhor interpretador JS (js2py como padrão) para resolução de desafios | ✅ Aprimorado |
| **Solucionadores de Captcha** | Suporte a múltiplos serviços de resolução de CAPTCHA | ✅ Estável |

# Dependências

- **Python 3.8+** (Suporte encerrado para Python 3.6 e 3.7)
- **[Requests](https://github.com/psf/requests)** >= 2.31.0
- **[requests_toolbelt](https://pypi.org/project/requests-toolbelt/)** >= 1.0.0
- **[pyparsing](https://pypi.org/project/pyparsing/)** >= 3.1.0
- **[pyOpenSSL](https://pypi.org/project/pyOpenSSL/)** >= 24.0.0
- **[pycryptodome](https://pypi.org/project/pycryptodome/)** >= 3.20.0
- **[websocket-client](https://pypi.org/project/websocket-client/)** >= 1.7.0
- **[js2py](https://pypi.org/project/Js2Py/)** >= 0.74
- **[brotli](https://pypi.org/project/Brotli/)** >= 1.1.0
- **[certifi](https://pypi.org/project/certifi/)** >= 2024.2.2

`python setup.py install` instalará as dependências do Python automaticamente. Os interpretadores e/ou motores Javascript que você decidir usar são as únicas coisas que você precisa instalar, exceto o js2py, que faz parte dos requisitos como padrão.

# Interpretadores e Motores Javascript

Nós suportamos os seguintes interpretadores/motores Javascript.

- **[ChakraCore](https://github.com/microsoft/ChakraCore):** Os binários da biblioteca também podem ser encontrados [aqui](https://www.github.com/VeNoMouS/cloudscraper/tree/ChakraCore/).
- **[js2py](https://github.com/PiotrDabkowski/Js2Py):** >=0.74 **(Padrão para a versão aprimorada)**
- **native**: Solucionador python nativo próprio
- **[Node.js](https://nodejs.org/)**
- **[V8](https://github.com/sony/v8eval/):** Usamos o módulo python [v8eval](https://v8.dev)() da Sony.

# Uso

A maneira mais simples de usar o cloudscraper é chamando `create_scraper()`.```python
import cloudscraper

scraper = cloudscraper.create_scraper()  # returns a CloudScraper instance
# Or: scraper = cloudscraper.CloudScraper()  # CloudScraper inherits from requests.Session
print(scraper.get("http://somesite.com").text)  # => "<!DOCTYPE html><html><head>..."

É isso...

Quaisquer solicitações feitas a partir deste objeto de sessão para sites protegidos pelo anti-bot da Cloudflare serão tratadas automaticamente. Sites que não usam Cloudflare serão tratados normalmente. Você não precisa configurar ou chamar mais nada, e pode efetivamente tratar todos os sites como se não estivessem protegidos por nada.

Você usa o cloudscraper exatamente da mesma forma que usa o Requests. cloudScraper funciona de forma idêntica a um objeto Session do Requests, só que em vez de chamar requests.get() ou requests.post(), você chama scraper.get() ou scraper.post().

Consulte a documentação do Requests para obter mais informações.

✅ Compatibilidade com Executáveis (v2.7.0)

Problema Resolvido!

O problema de user agent ao converter aplicações Python que usam cloudscraper em executáveis foi completamente corrigido!

Qual Era o Problema?

Ao converter aplicativos Python em executáveis (usando PyInstaller, cx_Freeze, auto-py-to-exe, etc.), os usuários encontravam erros relacionados à funcionalidade de user agent ou agent_user porque o arquivo browsers.json não era incluído corretamente.

A Solução

O cloudscraper v2.7.0 inclui um sistema automático de fallback:

  1. Detecção de PyInstaller - Detecta automaticamente ambientes de executáveis
  2. Vários Caminhos de Fallback - Tenta vários locais para o browsers.json
  3. Fallback Abrangente Incorporado - Mais de 70 user agents fixos (hardcoded) cobrindo todas as plataformas
  4. Tratamento de Erros Elegante - Sem mais travamentos quando arquivos estão ausentes

Como Usar

Opção 1: Basta compilar seu executável (funciona automaticamente):```bash pyinstaller your_app.py

root@kitploit:~
**Opção 2: Incluir o banco de dados completo de user agents** (recomendado):```bash
pyinstaller --add-data "cloudscraper/user_agent/browsers.json;cloudscraper/user_agent/" your_app.py

Testes

Toda a compatibilidade de executáveis foi minuciosamente testada:``` ✅ Normal operation with browsers.json ✅ Fallback operation without browsers.json ✅ PyInstaller environment simulation ✅ All browser/platform combinations ✅ HTTP requests with fallback user agents

root@kitploit:~
Seus aplicativos cloudscraper agora funcionarão perfeitamente quando convertidos em executáveis! 🎉

## 🆕 Suporte a Desafios JavaScript VM v3 do Cloudflare

### O que são os Desafios v3?

Os desafios v3 do Cloudflare representam a evolução mais recente na tecnologia de proteção contra bots. Diferentemente dos desafios tradicionais v1 e v2, os desafios v3:

- **Rodam em uma Máquina Virtual JavaScript**: Os desafios executam em um ambiente JavaScript isolado (sandbox)
- **Usam Detecção Avançada**: Algoritmos mais sofisticados para detectar comportamento automatizado
- **Geram Código Dinâmico**: O código do desafio é criado dinamicamente e mais difícil de fazer engenharia reversa
- **Oferecem Proteção Moderna**: A tecnologia antibot mais atual da Cloudflare

### Uso Básico do v3```python
import cloudscraper

# v3 support is enabled by default
scraper = cloudscraper.create_scraper()
response = scraper.get("https://example.com")
print(response.text)

Configuração Avançada v3```python

import cloudscraper

Optimized configuration for v3 challenges

scraper = cloudscraper.create_scraper( interpreter='js2py', # Recommended for v3 challenges delay=5, # Allow more time for complex challenges debug=True # Enable debug output to see v3 detection )

response = scraper.get("https://example.com") print(response.text)

root@kitploit:~
### v3 com Diferentes Interpretadores JavaScript

Todos os interpretadores JavaScript funcionam com desafios v3:```python
# Test different interpreters for v3 challenges
interpreters = ['js2py', 'nodejs', 'native']

for interpreter in interpreters:
    try:
        scraper = cloudscraper.create_scraper(interpreter=interpreter)
        response = scraper.get("https://example.com")
        print(f"✅ {interpreter}: Success ({response.status_code})")
    except Exception as e:
        print(f"❌ {interpreter}: Failed - {str(e)}")

Detecção de Desafios v3

Quando o modo de depuração está ativado, você verá a detecção de desafios v3 em ação:```python scraper = cloudscraper.create_scraper(debug=True) response = scraper.get("https://example.com")

Debug output will show:

"Detected a Cloudflare v3 JavaScript VM challenge."

root@kitploit:~
### Considerações de Desempenho para v3

Os desafios da v3 são mais complexos e podem exigir tempo adicional:```python
# Recommended settings for v3 challenges
scraper = cloudscraper.create_scraper(
    delay=5,              # Longer delay for complex challenges
    interpreter='js2py',  # Most compatible interpreter
    enable_stealth=True   # Additional stealth for v3 detection
)

🚀 Exemplos Completos

Exemplo 1: Uso Básico com Todos os Tipos de Desafios```python

import cloudscraper

Create a scraper that handles all challenge types automatically

scraper = cloudscraper.create_scraper()

This will automatically handle v1, v2, v3, and Turnstile challenges

response = scraper.get("https://example.com") print(f"Status: {response.status_code}") print(f"Content length: {len(response.text)}")

root@kitploit:~
### Exemplo 2: Configuração Avançada para Máxima Compatibilidade```python
import cloudscraper

# Advanced configuration for challenging websites
scraper = cloudscraper.create_scraper(
    # Challenge handling
    interpreter='js2py',        # Best compatibility for v3 challenges
    delay=5,                    # Extra time for complex challenges

    # Stealth mode
    enable_stealth=True,
    stealth_options={
        'min_delay': 2.0,
        'max_delay': 6.0,
        'human_like_delays': True,
        'randomize_headers': True,
        'browser_quirks': True
    },

    # Browser emulation
    browser='chrome',

    # Debug mode
    debug=True
)

response = scraper.get("https://example.com")

Exemplo 3: Lidando com Turnstile usando CAPTCHA Solver```python

import cloudscraper

Configure with 2captcha for Turnstile challenges

scraper = cloudscraper.create_scraper( captcha={ 'provider': '2captcha', 'api_key': 'your_2captcha_api_key' }, debug=True # See when Turnstile is detected and solved )

Turnstile challenges will be automatically detected and solved

response = scraper.get("https://turnstile-protected-site.com") print(f"Successfully bypassed Turnstile: {response.status_code}")

root@kitploit:~
### Exemplo 4: Rotação de Proxy com Suporte v3```python
import cloudscraper

proxies = [
    'http://user:[email protected]:8080',
    'http://user:[email protected]:8080',
    'http://user:[email protected]:8080'
]

scraper = cloudscraper.create_scraper(
    # Proxy rotation
    rotating_proxies=proxies,
    proxy_options={
        'rotation_strategy': 'smart',
        'ban_time': 300
    },

    # v3 challenge support
    interpreter='js2py',
    delay=5,

    # Stealth mode
    enable_stealth=True
)

# Each request may use a different proxy
for i in range(5):
    response = scraper.get("https://example.com")
    print(f"Request {i+1}: {response.status_code}")

Exemplo 5: Testando Diferentes Tipos de Desafio```python

import cloudscraper

def test_challenge_handling(): """Test different challenge types with comprehensive configuration"""

root@kitploit:~
scraper = cloudscraper.create_scraper(
    interpreter='js2py',
    delay=5,
    debug=True,
    enable_stealth=True
)

test_urls = [
    "https://example1.com",  # Might have v1 challenges
    "https://example2.com",  # Might have v2 challenges
    "https://example3.com",  # Might have v3 challenges
    "https://example4.com",  # Might have Turnstile
]

for url in test_urls:
    try:
        response = scraper.get(url)
        print(f"✅ {url}: Success ({response.status_code})")
    except Exception as e:
        print(f"❌ {url}: Failed - {str(e)}")

test_challenge_handling()

root@kitploit:~
## 🧪 Testes e Verificação

### Suíte de Testes Abrangente

cloudscraper inclui scripts de teste abrangentes para verificar se todos os recursos funcionam corretamente:```bash
# Test all features
python test_all_features.py --debug

# Test specifically v3 challenges
python test_v3_challenges.py --debug

# Test with specific interpreter
python test_v3_challenges.py --interpreter nodejs

Resumo dos Resultados de Teste

A biblioteca foi testada minuciosamente com 100% de taxa de sucesso para a funcionalidade principal:

*Requer configuração externa (proxies/chaves de API)

Testes Manuais

Você pode testar manualmente a biblioteca com o modo de depuração para ver a detecção de desafios em ação:```python import cloudscraper

Enable debug mode to see what's happening

scraper = cloudscraper.create_scraper(debug=True) response = scraper.get("https://example.com")

Debug output will show:

- Challenge type detected (v1, v2, v3, Turnstile)

- JavaScript interpreter used

- Challenge solving process

- Final response status

root@kitploit:~
### Solução de problemas

Se você encontrar problemas:

1. **Ative o modo de depuração** para ver informações detalhadas
2. **Experimente diferentes interpretadores** (js2py, nodejs, native)
3. **Aumente o atraso** para desafios complexos
4. **Ative o modo stealth** para proteção adicional
5. **Verifique a configuração do proxy** se estiver usando proxies```python
# Troubleshooting configuration
scraper = cloudscraper.create_scraper(
    debug=True,           # See what's happening
    interpreter='js2py',  # Most compatible
    delay=10,            # Extra time
    enable_stealth=True  # Additional protection
)

Opções

Desativar Cloudflare V1

Descrição

Se você não quiser nem tentar resolver o Cloudflare v1 (obsoleto)..

Parâmetros

ParâmetroValorPadrão
disableCloudflareV1(boolean)False

Exemplo```python

scraper = cloudscraper.create_scraper(disableCloudflareV1=True)

root@kitploit:~
### Desativar Cloudflare V2
#### Descrição

Se você não quiser nem tentar resolver o Cloudflare v2..

#### Parâmetros


|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|disableCloudflareV2|(boolean)|False|

#### Exemplo```python
scraper = cloudscraper.create_scraper(disableCloudflareV2=True)

Desativar Cloudflare V3

Descrição

Se você não quiser nem sequer tentar resolver a VM JavaScript do Cloudflare v3..

Parâmetros

ParâmetroValorPadrão
disableCloudflareV3(boolean)False

Exemplo```python

scraper = cloudscraper.create_scraper(disableCloudflareV3=True)

root@kitploit:~
### Desativar Turnstile
#### Descrição

Se você não quiser nem tentar resolver o Cloudflare Turnstile..

#### Parâmetros


|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|disableTurnstile|(boolean)|False|

#### Exemplo```python
scraper = cloudscraper.create_scraper(disableTurnstile=True)

Rotação de Proxy

Descrição

Rotacione automaticamente por uma lista de proxies para evitar bloqueio baseado em IP.

Parâmetros

ParâmetroValorPadrão
rotating_proxies(list ou dict)None
proxy_options(dict){}

Parâmetros de proxy_options

ParâmetroValorPadrão
rotation_strategy(string) sequential, random, or

Exemplo```python

proxies = [ 'http://user:[email protected]:8080', 'http://user:[email protected]:8080', 'http://user:[email protected]:8080' ]

scraper = cloudscraper.create_scraper( rotating_proxies=proxies, proxy_options={ 'rotation_strategy': 'smart', 'ban_time': 300 } )

root@kitploit:~
### Modo Stealth
#### Descrição

Ative técnicas furtivas para melhor imitar o comportamento humano e evitar detecção.

#### Parâmetros

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|enable_stealth|(boolean)|True|
|stealth_options|(dict)|{}|

#### Parâmetros de `stealth_options`

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|min_delay|(float) atraso mínimo entre requisições|1.0|
|max_delay|(float) atraso máximo entre requisições|5.0|
|human_like_delays|(boolean) adicionar atrasos aleatórios entre requisições|True|
|randomize_headers|(boolean) randomizar cabeçalhos para evitar fingerprinting|True|
|browser_quirks|(boolean) aplicar peculiaridades específicas do navegador|True|

#### Exemplo```python
scraper = cloudscraper.create_scraper(
    enable_stealth=True,
    stealth_options={
        'min_delay': 2.0,
        'max_delay': 6.0,
        'human_like_delays': True,
        'randomize_headers': True,
        'browser_quirks': True
    }
)

Brotli

Descrição

O suporte à descompressão Brotli foi adicionado e está ativado por padrão.

Parâmetros

ParâmetroValorPadrão
allow_brotli(booleano)True

Exemplo```python

scraper = cloudscraper.create_scraper(allow_brotli=False)

root@kitploit:~
### Navegador / Filtragem de User-Agent

#### Descrição

Controle como e qual User-Agent é selecionado "aleatoriamente".

#### Parâmetros

Podem ser passados como um argumento para `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` or `firefox`|None|

Ou

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|browser|(dict)||

##### Parâmetros de `browser` *_dict_*
|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` or `firefox`|None|
|mobile|(boolean)|True|
|desktop|(boolean)|True|
|platform|(string) `'linux', 'windows', 'darwin', 'android', 'ios'`|None|
|custom|(string)|None|
#### Exemplo```python
scraper = cloudscraper.create_scraper(browser='chrome')

ou```python

will give you only mobile chrome User-Agents on Android

scraper = cloudscraper.create_scraper( browser={ 'browser': 'chrome', 'platform': 'android', 'desktop': False } )

will give you only desktop firefox User-Agents on Windows

scraper = cloudscraper.create_scraper( browser={ 'browser': 'firefox', 'platform': 'windows', 'mobile': False } )

Custom will also try find the user-agent string in the browsers.json,

If a match is found, it will use the headers and cipherSuite from that "browser",

Otherwise a generic set of headers and cipherSuite will be used.

scraper = cloudscraper.create_scraper( browser={ 'custom': 'ScraperBot/1.0', } )

root@kitploit:~
### Debug

#### Descrição

Imprime informações do cabeçalho e do conteúdo da solicitação para depuração.

#### Parâmetros

Pode ser definido como um atributo via seu objeto `cloudscraper` ou passado como argumento para `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|debug|(boolean)|False|

#### Exemplo```python
scraper = cloudscraper.create_scraper(debug=True)

Atrasos

Descrição

O desafio Cloudflare IUAM exige que o navegador aguarde ~5 segundos antes de enviar a resposta do desafio, caso você queira substituir esse atraso.

Parâmetros

Pode ser definido como um atributo via seu objeto cloudscraper ou passado como argumento para create_scraper(), get_tokens(), get_cookie_string().

ParâmetroValorPadrão
delay(float)extraído da página IUAM

Exemplo```python

scraper = cloudscraper.create_scraper(delay=10)

root@kitploit:~
### Sessão existente

#### Descrição:

Se você já tem uma sessão Requests existente, pode passá-la para a função `create_scraper()` para continuar usando essa sessão.

#### Parâmetros

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|sess|(requests.session)|None|

#### Exemplo```python
session = requests.session()
scraper = cloudscraper.create_scraper(sess=session)

Nota

Infelizmente, nem todos os atributos de sessão do Requests são facilmente transferíveis, portanto, se você encontrar problemas com isso,

Você deve substituir sua chamada inicial de inicialização de sessão

De:```python sess = requests.session()

root@kitploit:~
To:```python
sess = cloudscraper.create_scraper()

Motores e Interpretadores JavaScript

Descrição

cloudscraper atualmente suporta os seguintes Motores/Interpretadores JavaScript

  • ChakraCore
  • js2py (Padrão na versão aprimorada)
  • native: Solver nativo Python feito por nós
  • Node.js
  • V8

Parâmetros

Pode ser definido como um atributo por meio do seu objeto cloudscraper ou passado como um argumento para create_scraper(), get_tokens(), get_cookie_string().

ParâmetroValorPadrão
interpreter(string)js2py

Exemplo```python

scraper = cloudscraper.create_scraper(interpreter='nodejs')

root@kitploit:~
#### Nota

A versão aprimorada usa `js2py` como interpretador padrão porque oferece melhor compatibilidade com os desafios modernos do Cloudflare. Se você encontrar problemas, pode tentar outros interpretadores.

------

### Solvers de Captcha de Terceiros

#### Descrição
O `cloudscraper` atualmente suporta os seguintes solvers de Captcha de terceiros, caso você precise deles.

- **[2captcha](https://www.2captcha.com/)**
- **[anticaptcha](https://www.anti-captcha.com/)**
- **[CapSolver](https://capsolver.com/)**
- **[CapMonster Cloud](https://capmonster.cloud/)**
- **[deathbycaptcha](https://www.deathbycaptcha.com/)**
- **[9kw](https://www.9kw.eu/)**
- **__return_response__**

#### Nota

Estou trabalhando para adicionar mais solvers de terceiros. Se você deseja que um serviço seja adicionado e que ainda não é suportado, por favor, abra um ticket de suporte no github.

##### Parâmetros Obrigatórios

Podem ser definidos como um atributo por meio do seu objeto `cloudscraper` ou passados como argumento para `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|captcha|(dict)|None|

#### Suporte a Turnstile

Cloudflare Turnstile é uma nova alternativa de CAPTCHA que substitui os CAPTCHAs tradicionais por um sistema de verificação mais amigável. O cloudscraper agora suporta a resolução de desafios Turnstile usando os mesmos provedores de captcha com os quais você já está familiarizado.

##### Exemplo```python
# Using 2captcha to solve Turnstile challenges
scraper = cloudscraper.create_scraper(
  captcha={
    'provider': '2captcha',
    'api_key': 'your_2captcha_api_key'
  }
)

# The Turnstile challenge will be automatically detected and solved
response = scraper.get('https://example.com')

2captcha

Parâmetros captcha Obrigatórios
Nota

se proxies estiverem definidos, você pode desativar o envio dos proxies para o 2captcha definindo no_proxy como True

Exemplo```python

scraper = cloudscraper.create_scraper( captcha={ 'provider': '2captcha', 'api_key': 'your_2captcha_api_key' } )

root@kitploit:~
#### anticaptcha

##### Parâmetros `captcha` obrigatórios

|Parâmetro|Valor|Obrigatório|Padrão|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `anticaptcha`|sim||
|api_key|(string)|sim||
|no_proxy|(boolean)|não|False|

##### Nota

se os proxies estiverem definidos, você pode desativar o envio dos proxies para o anticaptcha definindo `no_proxy` como `True`

##### Exemplo```python
scraper = cloudscraper.create_scraper(
  captcha={
    'provider': 'anticaptcha',
    'api_key': 'your_anticaptcha_api_key'
  }
)

CapSolver

Parâmetros captcha Obrigatórios
ParâmetroValorObrigatórioPadrão
provider(string) captchaaisim
api_key(string)sim
Exemplo```python

scraper = cloudscraper.create_scraper( captcha={ 'provider': 'capsolver', 'api_key': 'your_captchaai_api_key' } )

root@kitploit:~
#### CapMonster Cloud

##### Parâmetros `captcha` Obrigatórios

|Parâmetro|Valor|Obrigatório|Padrão|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `capmonster`| sim||
|clientKey|(string)| sim||
|no_proxy|(boolean)|não|False|

##### Nota

se proxies estiverem definidos, você pode desativar o envio dos proxies para o CapMonster definindo `no_proxy` como `True`

##### Exemplo```python
scraper = cloudscraper.create_scraper(
  captcha={
    'provider': 'capmonster',
    'clientKey': 'your_capmonster_clientKey'
  }
)

deathbycaptcha

Parâmetros captcha obrigatórios
Exemplo```python

scraper = cloudscraper.create_scraper( captcha={ 'provider': 'deathbycaptcha', 'username': 'your_deathbycaptcha_username', 'password': 'your_deathbycaptcha_password', } )

root@kitploit:~
#### 9kw

##### Parâmetros `captcha` obrigatórios

|Parâmetro|Valor|Obrigatório|Padrão|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `9kw`|sim||
|api_key|(string)|sim||
|maxtimeout|(int)|não|180|

##### Exemplo```python
scraper = cloudscraper.create_scraper(
  captcha={
    'provider': '9kw',
    'api_key': 'your_9kw_api_key',
    'maxtimeout': 300
  }
)

return_response

Use isto se quiser o payload de resposta da requisição sem resolver o Captcha.

Parâmetros captcha Obrigatórios
ParâmetroValorObrigatórioPadrão
provider(string) return_responsesim
Exemplo```python

scraper = cloudscraper.create_scraper( captcha={'provider': 'return_response'} )

root@kitploit:~
## Integração

É fácil integrar `cloudscraper` com outras aplicações e ferramentas. O Cloudflare usa dois cookies como tokens: um para verificar que você passou pela página de desafio e outro para rastrear sua sessão. Para contornar a página de desafio, basta incluir ambos os cookies (com o user-agent apropriado) em todas as solicitações HTTP que você fizer.

Para obter apenas os cookies (como um dicionário), use `cloudscraper.get_tokens()`. Para obtê-los como um cabeçalho HTTP `Cookie` completo, use `cloudscraper.get_cookie_string()`.

`get_tokens` e `get_cookie_string` aceitam os argumentos de palavra-chave usuais do Requests (como `get_tokens(url, proxies={"http": "socks5://localhost:9050"})`).

Leia a [documentação do Requests sobre argumentos de requisição](http://docs.python-requests.org/en/master/api/#requests.Session.request) para mais informações.

------

### Manipulação do User-Agent

As duas funções de integração retornam uma tupla de `(cookie, user_agent_string)`.

**Você deve usar a mesma string de user-agent para obter os tokens e para fazer requisições com esses tokens; caso contrário, o Cloudflare vai marcá-lo como bot.**

Isso significa que você precisa passar a `user_agent_string` retornada para qualquer script, ferramenta ou serviço ao qual esteja passando os tokens (por exemplo, curl ou uma ferramenta especializada de scraping), e ele deve usar esse user-agent fornecido ao fazer solicitações HTTP.

------

### Exemplos de integração

Lembre-se: você deve sempre usar o mesmo user-agent ao obter ou utilizar esses cookies. Todas essas funções retornam uma tupla de `(cookie_dict, user_agent_string)`.

------

#### Obtendo um dicionário de cookies através de um proxy

`get_tokens` é uma função de conveniência para retornar um dicionário Python contendo os cookies de sessão do Cloudflare. Para demonstração, vamos configurar esta requisição para usar um proxy. (Observe que, se você solicitar tokens de liberação do Cloudflare através de um proxy, você deve sempre usar o mesmo proxy ao passar esses tokens para o servidor. O Cloudflare exige que o IP que resolve o desafio e o IP do visitante permaneçam os mesmos.)

Se você não deseja usar um proxy, basta não passar o argumento de palavra-chave `proxies`. Essas funções de conveniência suportam todos os argumentos de palavra-chave normais do Requests, como `params`, `data` e `headers`.```python
import cloudscraper

# Using a single proxy
proxies = {"http": "http://localhost:8080", "https": "http://localhost:8080"}
tokens, user_agent = cloudscraper.get_tokens("http://somesite.com", proxies=proxies)
print(tokens)
# => {
    'cf_clearance': 'c8f913c707b818b47aa328d81cab57c349b1eee5-1426733163-3600',
    '__cfduid': 'dd8ec03dfdbcb8c2ea63e920f1335c1001426733158',
    'cf_chl_2': 'some_value',
    'cf_chl_prog': 'some_value'
}

# Using proxy rotation
rotating_proxies = [
    'http://user:[email protected]:8080',
    'http://user:[email protected]:8080',
    'http://user:[email protected]:8080'
]

tokens, user_agent = cloudscraper.get_tokens(
    "http://somesite.com",
    rotating_proxies=rotating_proxies,
    proxy_options={
        'rotation_strategy': 'smart',
        'ban_time': 300
    },
    enable_stealth=True,
    stealth_options={
        'min_delay': 2.0,
        'max_delay': 6.0
    }
)

Obtendo uma string de cookie

get_cookie_string é uma função de conveniência para retornar os tokens como uma string para uso como valor do cabeçalho HTTP Cookie.

Isso é útil ao criar uma solicitação HTTP manualmente, ou ao trabalhar com um aplicativo ou biblioteca externa que repassa cabeçalhos de cookie brutos.```python import cloudscraper

cookie_value, user_agent = cloudscraper.get_cookie_string('http://somesite.com')

print('GET / HTTP/1.1\nCookie: {}\nUser-Agent: {}\n'.format(cookie_value, user_agent))

GET / HTTP/1.1

Cookie: cf_clearance=c8f913c707b818b47aa328d81cab57c349b1eee5-1426733163-3600; __cfduid=dd8ec03dfdbcb8c2ea63e920f1335c1001426733158

User-Agent: Some/User-Agent String

root@kitploit:~
#### exemplo de curl

Aqui está um exemplo de integração do cloudscraper com o curl. Como você pode ver, tudo o que você precisa fazer é passar os cookies e o user-agent para o curl.```python
import subprocess
import cloudscraper

# With get_tokens() cookie dict:

# tokens, user_agent = cloudscraper.get_tokens("http://somesite.com")
# cookie_arg = 'cf_clearance={}; __cfduid={}'.format(tokens['cf_clearance'], tokens['__cfduid'])

# With get_cookie_string() cookie header; recommended for curl and similar external applications:

cookie_arg, user_agent = cloudscraper.get_cookie_string('http://somesite.com')

# With a custom user-agent string you can optionally provide:

# ua = "Scraping Bot"
# cookie_arg, user_agent = cloudscraper.get_cookie_string("http://somesite.com", user_agent=ua)

result = subprocess.check_output(
    [
        'curl',
        '--cookie',
        cookie_arg,
        '-A',
        user_agent,
        'http://somesite.com'
    ]
)

Versão reduzida. Imprime o conteúdo da página de qualquer site protegido com Cloudflare, via curl.

Aviso: shell=True pode ser perigoso de usar com subprocess em código real.```python url = "http://somesite.com" cookie_arg, user_agent = cloudscraper.get_cookie_string(url) cmd = "curl --cookie {cookie_arg} -A {user_agent} {url}" print( subprocess.check_output( cmd.format( cookie_arg=cookie_arg, user_agent=user_agent, url=url ), shell=True ) )

root@kitploit:~
### Criptografia

#### Descrição

Controla a comunicação entre cliente e servidor

#### Parâmetros

Podem ser passados como argumento para `create_scraper()`.

|Parâmetro|Valor|Padrão|
|-------------|:-------------:|:-----:|
|cipherSuite|(string)|None|
|ecdhCurve|(string)|prime256v1|
|server_hostname|(string)|None|

#### Exemplo```python
# Some servers require the use of a more complex ecdh curve than the default "prime256v1"
# It may can solve handshake failure
scraper = cloudscraper.create_scraper(ecdhCurve='secp384r1')

(no input provided)```python

Manipulate server_hostname

scraper = cloudscraper.create_scraper(server_hostname='www.somesite.com') scraper.get( 'https://backend.hosting.com/', headers={'Host': 'www.somesite.com'} )

root@kitploit:~
# Funcionalidades Aprimoradas

Esta versão aprimorada do cloudscraper oferece melhores capacidades para contornar mecanismos modernos de proteção do Cloudflare:

1. **Suporte a Desafios Cloudflare v2** - Melhor tratamento de desafios modernos
2. **Rotação de Proxy** - Rotação inteligente com múltiplas estratégias
3. **Modo Furtivo** - Simulação de comportamento humano
4. **Tratamento Aprimorado de JavaScript** - Melhor interpretador JS (js2py como padrão)
5. **Gerenciamento Aprimorado de Cookies** - Suporte para tipos mais recentes de cookies do Cloudflare

## Atualizações Recentes

- **Limpeza da Base de Código**: Código redundante removido e consolidado em um único módulo
- **Atualizações da Suíte de Testes**: Todos os testes agora usam o módulo cloudscraper
- **Documentação**: README melhorado com exemplos mais claros e instruções de uso

## Exemplo Usando Todas as Funcionalidades Aprimoradas```python
import cloudscraper

# Create a scraper with all enhanced features
scraper = cloudscraper.create_scraper(
    # Use js2py interpreter for better compatibility
    interpreter='js2py',

    # Enable proxy rotation
    rotating_proxies=[
        'http://user:[email protected]:8080',
        'http://user:[email protected]:8080',
        'http://user:[email protected]:8080'
    ],
    proxy_options={
        'rotation_strategy': 'smart',
        'ban_time': 300
    },

    # Enable stealth mode
    enable_stealth=True,
    stealth_options={
        'min_delay': 2.0,
        'max_delay': 6.0,
        'human_like_delays': True,
        'randomize_headers': True,
        'browser_quirks': True
    },

    # Set browser fingerprint
    browser={
        'browser': 'chrome',
        'platform': 'windows',
        'mobile': False
    },

    # Enable debugging if needed
    debug=False
)

# Make a request to a Cloudflare-protected site
response = scraper.get('https://example.com')
print(response.text)

📋 Log de alterações

Versão 2.6.0 (Mais recente) 🚀

🆕 Principais novos recursos

  • Suporte a desafios JavaScript VM v3 do Cloudflare

    • Adicionado suporte abrangente aos desafios v3 mais recentes do Cloudflare
    • Desafios executados dentro de uma Máquina Virtual JavaScript para maior segurança
    • Detecção e tratamento automáticos de padrões de desafios v3
    • Suporte a todos os interpretadores JavaScript (js2py, nodejs, native)
    • Mecanismos de fallback aprimorados para desafios VM complexos
  • Suporte aprimorado ao Turnstile

    • Detecção aprimorada de desafios Cloudflare Turnstile
    • Melhor integração com serviços de resolução de CAPTCHA
    • Suporte a todos os principais provedores de CAPTCHA (2captcha, anticaptcha, etc.)

🔧 Melhorias

  • Aprimoramentos do interpretador JavaScript

    • Melhor compatibilidade com desafios JavaScript VM v3
    • Tratamento de erros e mecanismos de fallback aprimorados
    • Criação de contexto aprimorada para desafios baseados em VM
  • Detecção de desafios

    • Detecção mais precisa dos diferentes tipos de desafios
    • Melhor diferenciação entre desafios v1, v2, v3 e Turnstile
    • Padrões regex aprimorados para proteção moderna do Cloudflare
  • Opções de configuração

    • Adicionado parâmetro disableCloudflareV3 para tratamento seletivo de desafios
    • Saída de depuração aprimorada para detecção de desafios v3
    • Melhores mensagens de erro e informações de solução de problemas

🧪 Testes e qualidade

  • Suíte de testes abrangente

    • 100% de taxa de aprovação em todas as funcionalidades principais
    • Script de teste dedicado para desafios v3
    • Cobertura de testes aprimorada para todos os tipos de desafios
    • Testes automatizados para todos os interpretadores JavaScript
  • Documentação

    • Reescrita completa do README com exemplos v3
    • Adicionados exemplos de uso abrangentes
    • Guia de solução de problemas aprimorado
    • Adicionada seção de testes e verificação

🐛 Correções de bugs

  • Corrigidos problemas de compatibilidade com desafios modernos do Cloudflare
  • Tratamento de erros aprimorado para casos extremos
  • Melhor tratamento de desafios JavaScript malformados
  • Gerenciamento de cookies aprimorado para implementações mais recentes do Cloudflare

Versão 2.5.3

Recursos adicionados

  • Suporte inicial a desafios Turnstile
  • Capacidades aprimoradas de rotação de proxy
  • Funcionalidade de modo furtivo aprimorada
  • Melhor impressão digital do navegador

Versão 2.5.0

Principais mudanças

  • Consolidação do código-base em um único módulo
  • Suporte aprimorado a desafios v2
  • Tratamento de interpretador JavaScript aprimorado
  • Adicionada suíte de testes abrangente

Créditos

  • cloudscraper original por VeNoMouS
  • Edição aprimorada por Zied Boughdir

Testes

A biblioteca inclui scripts de teste abrangentes para verificar a funcionalidade:

Teste básico

Teste rápido para verificar se a biblioteca está funcionando:```python import cloudscraper

Create a scraper instance

scraper = cloudscraper.create_scraper(browser='chrome')

Make a request to a Cloudflare-protected site

response = scraper.get('https://example.com') print(f"Status code: {response.status_code}")

root@kitploit:~
### Executando a Suíte de Testes

A biblioteca inclui vários scripts de teste:```bash
# Run the comprehensive test suite
python test_cloudscraper_comprehensive.py https://example-cloudflare-site.com

# Test with a specific Cloudflare-protected site
python test_cloudflare_site.py https://example-cloudflare-site.com --browser firefox --stealth

Dicas de Solução de Problemas

Se você encontrar problemas:

  1. Tente uma emulação de navegador diferente - Alguns sites funcionam melhor com Chrome ou Firefox
  2. Ative o modo furtivo - Ajuda a contornar proteções sofisticadas
  3. Use rotação de proxy - Para bloqueios de IP ou limites de taxa
  4. Tente interpretadores JavaScript diferentes - js2py, nodejs, ou v8

Suporte

Para problemas ou perguntas, abra uma issue no repositório do GitHub.```bash pip install --upgrade cloudscraper # Always use the latest version

root@kitploit:~
Baixar ferramenta
FuncionalidadeCobertura de TestesTaxa de Sucesso
Basic Requests✅ Completo100%
User Agent Handling✅ Completo100%
Cloudflare v1 Challenges✅ Completo100%
Cloudflare v2 Challenges✅ Completo100%
Cloudflare v3 Challenges✅ NOVO100%
Stealth Mode✅ Completo100%
JavaScript Interpreters✅ Todos Suportados100%
Proxy Rotation✅ CompletoN/A*
Turnstile Support✅ CompletoN/A*
smart
sequential
ban_time(int) segundos para banir um proxy após a falha300
ParâmetroValorObrigatórioPadrão
provider(string) 2captchasim
api_key(string)sim
no_proxy(boolean)nãoFalse
ParâmetroValorObrigatórioPadrão
provider(string) deathbycaptchasim
username(string)sim
password(string)sim