Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cloudscraper — Un module Python pour contourner la page anti-bot de Cloudflare. | Kitploit
Outils/GitHubGitHub/venomous/cloudscraper
Outils d'ImpersonationContournement de WAFCrawlerAnti-BotUsurpation d'Empreinte NumériqueContournement de CAPTCHA
GitHubvenomous/cloudscraper

cloudscraper

Un module Python pour contourner la page anti-bot de Cloudflare.

Voir le dépôt
6.7k638il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

cloudscraper - Édition améliorée

PyPI version License: MIT image

Amélioré par Zied Boughdir

Dernière version : v3.0.0 🚀 - Mise à niveau majeure

🆕 Principales nouvelles fonctionnalités de v3.0.0

  • 🛡️ Récupération automatique des erreurs 403 - Actualisation intelligente de la session lorsque des erreurs 403 surviennent après une utilisation prolongée
  • 📊 Surveillance de la santé de la session - Gestion proactive des sessions avec intervalles d'actualisation configurables
  • 🔄 Actualisation intelligente de la session - Nettoyage automatique des cookies et rotation des empreintes numériques
  • 🎯 Mode furtif amélioré - Meilleure anti-détection avec simulation de comportement humain
  • 🔧 Support Python moderne - Python 3.8+ avec les dernières versions de dépendances
  • 📦 Empaquetage moderne - Utilise pyproject.toml et des outils de construction modernes
  • 🧪 Tests complets - Nouvelle suite de tests avec pytest et intégration CI/CD
  • 🚀 Améliorations des performances - Code optimisé avec une meilleure gestion des erreurs

🔧 Changements cassants

  • Version minimale de Python : nécessite désormais Python 3.8+
  • Dépendances mises à jour : toutes les dépendances ont été mises à niveau vers les dernières versions stables
  • Code hérité supprimé : nettoyage du code de compatibilité Python 2

✅ Fonctionnalités précédentes (toujours disponibles)

  • Correctif de compatibilité des exécutables - Solution complète pour la conversion PyInstaller, cx_Freeze et auto-py-to-exe
  • Prise en charge du défi JavaScript VM v3 de Cloudflare - Gère la protection Cloudflare la plus récente et la plus sophistiquée
  • Prise en charge du défi Turnstile de Cloudflare - Prise en charge de l'alternative CAPTCHA de Cloudflare
  • Prise en charge améliorée des interpréteurs JavaScript - Exécution améliorée des défis basés sur VM
  • Couverture complète de la protection - Prend désormais en charge tous les types de défis Cloudflare (v1, v2, v3, Turnstile)

🔧 Améliorations

  • 🎯 Correction des problèmes de User Agent dans les exécutables - Système de repli automatique pour browsers.json manquant
  • 🛡️ Détection PyInstaller - Détecte et gère automatiquement les environnements d'exécutables
  • 📦 Système de repli complet - Plus de 70 User Agents intégrés couvrant toutes les plateformes
  • Rotation de proxy et capacités de mode furtif améliorées
  • Meilleure détection et gestion des mécanismes de protection Cloudflare modernes
  • Compatibilité améliorée avec tous les interpréteurs JavaScript (js2py, nodejs, natif)
  • Documentation mise à jour avec des exemples complets

📊 Résultats des tests

Toutes les fonctionnalités testées avec 100 % de taux de réussite pour les fonctionnalités de base :

  • ✅ Requêtes de base : taux de réussite de 100 %
  • ✅ Gestion des User Agents : taux de réussite de 100 %
  • ✅ Défis Cloudflare v1 : taux de réussite de 100 %
  • ✅ Défis Cloudflare v2 : taux de réussite de 100 %
  • ✅ Défis Cloudflare v3 : taux de réussite de 100 %
  • ✅ Mode furtif : taux de réussite de 100 %

Un module Python pour contourner la page anti-bot de Cloudflare (également connue sous le nom de « I'm Under Attack Mode », ou IUAM), implémenté avec Requests. Cette version améliorée inclut la prise en charge des défis Cloudflare v2, la rotation de proxy, le mode furtif, et plus encore. Cloudflare modifie ses techniques périodiquement, je mettrai donc ce dépôt à jour fréquemment.

Cela peut être utile si vous souhaitez scraper ou parcourir un site web protégé par Cloudflare. La page anti-bot de Cloudflare vérifie actuellement simplement si le client prend en charge Javascript, bien qu'elle puisse ajouter d'autres techniques à l'avenir.

Étant donné que Cloudflare modifie et durcit continuellement sa page de protection, cloudscraper nécessite un moteur/interpréteur JavaScript pour résoudre les défis JavaScript. Cela permet au script d'imiter facilement un navigateur web classique sans désobfusquer et analyser explicitement le Javascript de Cloudflare.

Pour référence, voici le message par défaut que Cloudflare utilise pour ce type de pages :``` 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:~
Tout script utilisant cloudscraper fera une pause d'environ 5 secondes lors de la première visite d'un site dont les anti-bots Cloudflare sont activés, mais aucun délai ne surviendra après la première requête.



# Installation

Il suffit d'exécuter `pip install cloudscraper`. Le paquet PyPI est disponible sur https://pypi.org/project/cloudscraper/```bash
pip install cloudscraper

Alternativement, clonez ce dépôt et exécutez python setup.py install.

Migration depuis cloudscraper

Si vous utilisiez auparavant le package cloudscraper d'origine, vous pouvez désormais utiliser directement cette version améliorée :```python

Enhanced import

import cloudscraper # Enhanced version

root@kitploit:~
L'API reste compatible, vous n'avez donc qu'à modifier les instructions d'importation dans votre code. Tous les appels de fonction et paramètres fonctionnent de la même manière.

### Structure de la base de code

La base de code a été simplifiée pour améliorer la maintenabilité et réduire la confusion :

- **Module unique** : Tout le code se trouve désormais dans le module `cloudscraper`
- **Redondance supprimée** : Les répertoires redondants ont été supprimés
- **Tests mis à jour** : Tous les fichiers de test ont été mis à jour pour utiliser le module `cloudscraper`

Cela rend la base de code plus propre et plus facile à maintenir tout en assurant une rétrocompatibilité avec le code existant qui utilise l'API d'origine.

## Fonctionnalités clés de cloudscraper

| Fonctionnalité | Description | Statut |
|---------|-------------|--------|
| **🆕 Compatibilité des exécutables** | Correction complète pour la conversion PyInstaller, cx_Freeze, auto-py-to-exe | ✅ **CORRIGÉ** |
| **🆕 Défis JavaScript VM v3** | Prise en charge des derniers défis basés sur la machine virtuelle JavaScript de Cloudflare | ✅ **NOUVEAU** |
| **🆕 Support Turnstile** | Prise en charge du nouveau remplacement de CAPTCHA Turnstile de Cloudflare | ✅ **NOUVEAU** |
| **Support des défis modernes** | Prise en charge améliorée des défis Cloudflare v1, v2, v3 et Turnstile | ✅ Complet |
| **Rotation de proxys** | Rotation intelligente intégrée des proxys avec plusieurs stratégies | ✅ Amélioré |
| **Mode furtif** | Simulation de comportement humain pour éviter la détection | ✅ Amélioré |
| **Émulation de navigateur** | Empreinte numérique avancée du navigateur pour Chrome et Firefox | ✅ Stable |
| **Gestion JavaScript** | Meilleur interpréteur JS (js2py par défaut) pour résoudre les défis | ✅ Amélioré |
| **Solveurs de CAPTCHA** | Prise en charge de plusieurs services de résolution de CAPTCHA | ✅ Stable |

# Dépendances

- **Python 3.8+** (Prise en charge abandonnée pour Python 3.6 et 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` installera automatiquement les dépendances Python. Les interpréteurs et/ou moteurs JavaScript que vous décidez d'utiliser sont les seuls éléments que vous devez installer vous-même, à l'exception de js2py qui fait partie des exigences par défaut.

# Interpréteurs et moteurs JavaScript

Nous prenons en charge les interpréteurs/moteurs JavaScript suivants.

- **[ChakraCore](https://github.com/microsoft/ChakraCore):** Les binaires de la bibliothèque peuvent également être situés [ici](https://www.github.com/VeNoMouS/cloudscraper/tree/ChakraCore/).
- **[js2py](https://github.com/PiotrDabkowski/Js2Py):** >=0.74 **(Par défaut pour la version améliorée)**
- **native**: Solveur Python natif fait maison
- **[Node.js](https://nodejs.org/)**
- **[V8](https://github.com/sony/v8eval/):** Nous utilisons le module Python [v8eval](https://v8.dev)() de Sony.

# Utilisation

La façon la plus simple d'utiliser cloudscraper est d'appeler `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>..."

C'est tout...

Toute requête effectuée depuis cet objet de session vers des sites web protégés par l'anti-bot de Cloudflare sera traitée automatiquement. Les sites web n'utilisant pas Cloudflare seront traités normalement. Vous n'avez rien à configurer ni à appeler de plus, et vous pouvez effectivement considérer tous les sites web comme s'ils n'étaient protégés par rien.

Vous utilisez cloudscraper exactement de la même manière que Requests. cloudScraper fonctionne de manière identique à un objet Session de Requests, sauf qu'au lieu d'appeler requests.get() ou requests.post(), vous appelez scraper.get() ou scraper.post().

Consultez la documentation de Requests pour plus d'informations.

✅ Compatibilité des exécutables (v2.7.0)

Problème résolu !

Le problème d'agent utilisateur lors de la conversion d'applications Python utilisant cloudscraper en exécutables a été entièrement corrigé !

Quel était le problème ?

Lors de la conversion d'applications Python en exécutables (avec PyInstaller, cx_Freeze, auto-py-to-exe, etc.), les utilisateurs rencontraient des erreurs liées à la fonctionnalité user agent ou agent_user, car le fichier browsers.json n'était pas inclus correctement.

La solution

cloudscraper v2.7.0 inclut un système de repli automatique :

  1. Détection PyInstaller - Détecte automatiquement les environnements d'exécutables
  2. Plusieurs chemins de repli - Essaie plusieurs emplacements pour browsers.json
  3. Repli intégré complet - Plus de 70 agents utilisateurs codés en dur couvrant toutes les plateformes
  4. Gestion gracieuse des erreurs - Plus de plantages lorsque des fichiers sont manquants

Comment l'utiliser

Option 1 : Compilez simplement votre exécutable (fonctionne automatiquement) :```bash pyinstaller your_app.py

root@kitploit:~
**Option 2: Inclure la base de données complète des user agents** (recommandé):```bash
pyinstaller --add-data "cloudscraper/user_agent/browsers.json;cloudscraper/user_agent/" your_app.py

Test

Toute la compatibilité des exécutables a été minutieusement testée :``` ✅ 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:~
Vos applications cloudscraper fonctionneront désormais parfaitement lorsqu'elles seront converties en exécutables ! 🎉

## 🆕 Prise en charge des challenges JavaScript VM Cloudflare v3

### Que sont les challenges v3 ?

Les challenges v3 de Cloudflare représentent la dernière évolution de la technologie de protection contre les bots. Contrairement aux challenges v1 et v2 traditionnels, les challenges v3 :

- **S'exécutent dans une machine virtuelle JavaScript** : Les challenges s'exécutent dans un environnement JavaScript sandboxé
- **Utilisent une détection avancée** : Des algorithmes plus sophistiqués pour détecter les comportements automatisés
- **Génèrent du code dynamique** : Le code du challenge est créé dynamiquement et plus difficile à rétro-ingénierer
- **Offrent une protection moderne** : La technologie anti-bot la plus récente de Cloudflare

### Utilisation de base des v3```python
import cloudscraper

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

Configuration avancée 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 avec différents interpréteurs JavaScript

Tous les interpréteurs JavaScript fonctionnent avec les défis 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)}")

Détection de challenge v3

Lorsque le mode débogage est activé, vous verrez la détection de challenge v3 en action :```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:~
### Considérations de performance pour v3

Les défis v3 sont plus complexes et peuvent nécessiter plus de temps :```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
)

🚀 Exemples complets

Exemple 1 : Utilisation de base avec tous les types de défi```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:~
### Exemple 2 : Configuration avancée pour une compatibilité maximale```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")

Exemple 3 : Gestion de Turnstile avec un solveur de CAPTCHA```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:~
### Exemple 4 : Rotation de proxy avec support 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}")

Exemple 5 : Tester différents types de défis```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:~
## 🧪 Tests et vérification

### Suite de tests complète

cloudscraper comprend des scripts de tests complets pour vérifier que toutes les fonctionnalités fonctionnent correctement :```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

Résumé des résultats de test

La bibliothèque a été testée de manière approfondie avec 100 % de taux de réussite pour les fonctionnalités principales :

*Nécessite une configuration externe (proxys/clés API)

Tests manuels

Vous pouvez tester manuellement la bibliothèque en mode débogage pour voir la détection des défis en action :```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:~
### Dépannage

Si vous rencontrez des problèmes :

1. **Activez le mode débogage** pour voir des informations détaillées
2. **Essayez différents interpréteurs** (js2py, nodejs, native)
3. **Augmentez le délai** pour les défis complexes
4. **Activez le mode furtif** pour une protection supplémentaire
5. **Vérifiez la configuration du proxy** si vous utilisez des proxys```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
)

Options

Désactiver Cloudflare V1

Description

Si vous ne souhaitez pas tenter la résolution de Cloudflare v1 (obsolète)..

Paramètres

ParamètreValeurDéfaut
disableCloudflareV1(boolean)False

Exemple```python

scraper = cloudscraper.create_scraper(disableCloudflareV1=True)

root@kitploit:~
### Désactiver Cloudflare V2
#### Description

Si vous ne voulez même pas tenter de résoudre Cloudflare v2..

#### Paramètres

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|disableCloudflareV2|(boolean)|False|

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

Désactiver Cloudflare V3

Description

Si vous ne voulez même pas tenter la résolution de la machine virtuelle JavaScript de Cloudflare v3..

Paramètres

ParamètreValeurDéfaut
disableCloudflareV3(boolean)False

Exemple```python

scraper = cloudscraper.create_scraper(disableCloudflareV3=True)

root@kitploit:~
### Désactiver Turnstile
#### Description

Si vous ne voulez même pas tenter de résoudre le Turnstile Cloudflare..

#### Paramètres


|Paramètre|Valeur|Par défaut|
|-------------|:-------------:|:-----:|
|disableTurnstile|(boolean)|False|

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

Rotation de proxy

Description

Faites automatiquement défiler une liste de proxies pour éviter le blocage basé sur l'adresse IP.

Paramètres

ParamètreValeurDéfaut
rotating_proxies(list or dict)None
proxy_options(dict){}

Paramètres de proxy_options

ParamètreValeurDéfaut
rotation_strategy(string) sequential, random ou

Exemple```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:~
### Mode furtif
#### Description

Activer des techniques furtives pour mieux imiter le comportement humain et éviter la détection.

#### Paramètres

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|enable_stealth|(boolean)|True|
|stealth_options|(dict)|{}|

#### Paramètres de `stealth_options`

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|max_delay|(float) délai maximum entre les requêtes|5.0|
|min_delay|(float) délai minimum entre les requêtes|1.0|
|human_like_delays|(boolean) ajouter des délais aléatoires entre les requêtes|True|
|randomize_headers|(boolean) randomiser les en-têtes pour éviter le fingerprinting|True|
|browser_quirks|(boolean) appliquer les particularités spécifiques au navigateur|True|

#### Exemple```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

Description

La prise en charge de la décompression Brotli a été ajoutée, et elle est activée par défaut.

Paramètres

ParamètreValeurDéfaut
allow_brotli(boolean)True

Exemple```python

scraper = cloudscraper.create_scraper(allow_brotli=False)

root@kitploit:~
### Filtrage du navigateur / User-Agent

#### Description

Contrôlez comment et quel User-Agent est sélectionné "aléatoirement".

#### Paramètres

Peut être passé comme argument à `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` ou `firefox`|None|

Ou

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|browser|(dict)||

##### `browser` *_dict_* Paramètres
|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` ou `firefox`|None|
|mobile|(boolean)|True|
|desktop|(boolean)|True|
|platform|(string) `'linux', 'windows', 'darwin', 'android', 'ios'`|None|
|custom|(string)|None|
#### Exemple```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:~
### Débogage

#### Description

Affiche les informations d'en-tête et de contenu de la requête à des fins de débogage.

#### Paramètres

Peut être défini comme un attribut via votre objet `cloudscraper` ou passé comme argument à `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|debug|(boolean)|False|

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

Delays

Description

Le défi Cloudflare IUAM exige que le navigateur attende ~5 secondes avant de soumettre la réponse au défi, Si vous souhaitez remplacer ce délai.

Paramètres

Peut être défini comme attribut via votre objet cloudscraper ou passé comme argument à create_scraper(), get_tokens(), get_cookie_string().

ParamètreValeurDéfaut
delay(float)extrait de la page IUAM

Exemple```python

scraper = cloudscraper.create_scraper(delay=10)

root@kitploit:~
### Session existante

#### Description:

Si vous disposez déjà d'une session Requests existante, vous pouvez la passer à la fonction `create_scraper()` pour continuer à utiliser cette session.

#### Paramètres

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|sess|(requests.session)|None|

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

Remarque

Malheureusement, tous les attributs de session de Requests ne sont pas facilement transférables, donc si vous rencontrez des problèmes avec cela,

Vous devriez remplacer votre appel d'initialisation de session initial

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

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

Moteurs et interpréteurs JavaScript

Description

cloudscraper prend actuellement en charge les moteurs/interpréteurs JavaScript suivants

  • ChakraCore
  • js2py (Par défaut dans la version améliorée)
  • native: solveur python natif fait maison
  • Node.js
  • V8

Paramètres

Peut être défini comme attribut via votre objet cloudscraper ou passé comme argument à create_scraper(), get_tokens(), get_cookie_string().

ParamètreValeurDéfaut
interpreter(string)js2py

Exemple```python

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

root@kitploit:~
#### Note

La version améliorée utilise `js2py` comme interpréteur par défaut car il offre une meilleure compatibilité avec les défis Cloudflare modernes. Si vous rencontrez des problèmes, vous pouvez essayer d'autres interpréteurs.

------

### Solveurs de Captcha Tiers

#### Description
`cloudscraper` prend actuellement en charge les solveurs de Captcha tiers suivants, si vous en avez besoin.

- **[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__**

#### Note

Je travaille à l'ajout d'autres solveurs tiers. Si vous souhaitez qu'un service non pris en charge actuellement soit ajouté, veuillez ouvrir un ticket de support sur github.

##### Paramètres requis

Ils peuvent être définis comme attribut via votre objet `cloudscraper` ou transmis comme argument à `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|captcha|(dict)|None|

#### Prise en charge de Turnstile

Cloudflare Turnstile est une nouvelle alternative au CAPTCHA qui remplace les CAPTCHA traditionnels par un système de vérification plus convivial. cloudscraper prend désormais en charge la résolution des défis Turnstile en utilisant les mêmes fournisseurs de captcha que vous connaissez déjà.

##### Exemple```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

Paramètres captcha requis
Note

si des proxys sont définis, vous pouvez désactiver l'envoi des proxys à 2captcha en définissant no_proxy sur True

Exemple```python

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

root@kitploit:~
#### anticaptcha

##### Paramètres `captcha` requis

|Paramètre|Valeur|Requis|Défaut|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `anticaptcha`|oui||
|api_key|(string)|oui||
|no_proxy|(boolean)|non|False|

##### Note

si des proxys sont définis, vous pouvez désactiver l'envoi des proxys à anticaptcha en définissant `no_proxy` sur `True`

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

CapSolver

Paramètres captcha requis
ParamètreValeurRequisDéfaut
provider(string) captchaaioui
api_key(string)oui
Exemple```python

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

root@kitploit:~
------

#### CapMonster Cloud

##### Paramètres `captcha` requis

|Paramètre|Valeur|Requis|Défaut|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `capmonster`| oui||
|clientKey|(string)| oui||
|no_proxy|(boolean)|non|False|

##### Remarque

si des proxys sont définis, vous pouvez désactiver l'envoi des proxys à CapMonster en définissant `no_proxy` sur `True`

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

deathbycaptcha

Paramètres captcha requis
Exemple```python

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

root@kitploit:~
#### 9kw

##### Paramètres `captcha` requis

|Paramètre|Valeur|Requis|Défaut|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `9kw`|oui||
|api_key|(string)|oui||
|maxtimeout|(int)|non|180|

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

return_response

Utilisez ceci si vous souhaitez obtenir la charge utile de réponse de la requête sans résoudre le Captcha.

Paramètres captcha requis
ParamètreValeurRequisDéfaut
provider(string) return_responseoui
Exemple```python

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

root@kitploit:~
## Intégration

Il est facile d'intégrer `cloudscraper` avec d'autres applications et outils. Cloudflare utilise deux cookies comme jetons : l'un pour vérifier que vous avez dépassé leur page de défi et l'autre pour suivre votre session. Pour contourner la page de défi, incluez simplement ces deux cookies (avec le user-agent approprié) dans toutes les requêtes HTTP que vous effectuez.

Pour récupérer uniquement les cookies (sous forme de dictionnaire), utilisez `cloudscraper.get_tokens()`. Pour les récupérer sous forme d'en-tête HTTP `Cookie` complet, utilisez `cloudscraper.get_cookie_string()`.

`get_tokens` et `get_cookie_string` acceptent tous deux les arguments de mot-clé habituels de Requests (comme `get_tokens(url, proxies={"http": "socks5://localhost:9050"})`).

Veuillez lire [la documentation de Requests sur les arguments de requête](http://docs.python-requests.org/en/master/api/#requests.Session.request) pour plus d'informations.

------

### Gestion du User-Agent

Les deux fonctions d'intégration renvoient un tuple `(cookie, user_agent_string)`.

**Vous devez utiliser la même chaîne user-agent pour obtenir les jetons et pour faire des requêtes avec ces jetons, sinon Cloudflare vous signalera comme un bot.**

Cela signifie que vous devez transmettre la `user_agent_string` renvoyée à tout script, outil ou service auquel vous transmettez les jetons (par exemple curl, ou un outil de scraping spécialisé), et il doit utiliser ce user-agent transmis lorsqu'il effectue des requêtes HTTP.

------

### Exemples d'intégration

Rappelez-vous, vous devez toujours utiliser le même user-agent lors de la récupération ou de l'utilisation de ces cookies. Ces fonctions renvoient toutes un tuple `(cookie_dict, user_agent_string)`.

------

#### Récupération d'un dictionnaire de cookies via un proxy

`get_tokens` est une fonction pratique pour renvoyer un dict Python contenant les cookies de session de Cloudflare. Pour la démonstration, nous allons configurer cette requête pour utiliser un proxy. (Veuillez noter que si vous demandez des jetons de contournement Cloudflare via un proxy, vous devez toujours utiliser le même proxy lorsque ces jetons sont transmis au serveur. Cloudflare exige que l'adresse IP de résolution du défi et l'adresse IP du visiteur restent identiques.)

Si vous ne souhaitez pas utiliser de proxy, ne passez simplement pas l'argument de mot-clé `proxies`. Ces fonctions pratiques prennent en charge tous les arguments de mot-clé normaux de Requests, comme `params`, `data` et `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
    }
)

Récupération d'une chaîne de cookie

get_cookie_string est une fonction de commodité qui renvoie les jetons sous forme de chaîne pour être utilisés comme valeur d'en-tête HTTP Cookie.

Cela est utile lors de la création manuelle d'une requête HTTP, ou lors de l'utilisation d'une application ou d'une bibliothèque externe qui transmet des en-têtes de cookie bruts.```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:~
#### curl exemple

Voici un exemple d'intégration de cloudscraper avec curl. Comme vous pouvez le voir, tout ce que vous avez à faire est de passer les cookies et le user-agent à 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'
    ]
)

Version allégée. Affiche le contenu d'une page de n'importe quel site protégé par Cloudflare, via curl.

Avertissement : shell=True peut être dangereux à utiliser avec subprocess dans du code réel.```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:~
### Cryptographie

#### Description

Contrôler la communication entre le client et le serveur

#### Paramètres

Peut être passé comme argument à `create_scraper()`.

|Paramètre|Valeur|Défaut|
|-------------|:-------------:|:-----:|
|cipherSuite|(string)|None|
|ecdhCurve|(string)|prime256v1|
|server_hostname|(string)|None|

#### Exemple```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')

Please provide the Markdown content to translate.```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:~
# Fonctionnalités améliorées

Cette version améliorée de cloudscraper offre de meilleures capacités pour contourner les mécanismes modernes de protection Cloudflare:

1. **Prise en charge des défis Cloudflare v2** - Meilleure gestion des défis modernes
2. **Rotation de proxys** - Rotation intelligente avec plusieurs stratégies
3. **Mode furtif** - Simulation d'un comportement humain
4. **Meilleure gestion de JavaScript** - Meilleur interpréteur JS (js2py par défaut)
5. **Gestion améliorée des cookies** - Prise en charge des nouveaux types de cookies Cloudflare

## Mises à jour récentes

- **Nettoyage de la base de code**: Suppression du code redondant et consolidation en un seul module
- **Mises à jour de la suite de tests**: Tous les tests utilisent désormais le module cloudscraper
- **Documentation**: README amélioré avec des exemples plus clairs et des instructions d'utilisation

## Exemple utilisant toutes les fonctionnalités améliorées```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)

📋 Journal des modifications

Version 2.6.0 (Dernière) 🚀

🆕 Principales nouvelles fonctionnalités

  • Prise en charge des défis JavaScript VM v3 de Cloudflare

    • Ajout d'une prise en charge complète des derniers défis v3 de Cloudflare
    • Les défis s'exécutent dans une machine virtuelle JavaScript pour une sécurité renforcée
    • Détection et gestion automatiques des modèles de défis v3
    • Prise en charge de tous les interpréteurs JavaScript (js2py, nodejs, natif)
    • Mécanismes de repli améliorés pour les défis VM complexes
  • Prise en charge améliorée de Turnstile

    • Détection améliorée des défis Cloudflare Turnstile
    • Meilleure intégration avec les services de résolution de CAPTCHA
    • Prise en charge de tous les principaux fournisseurs de CAPTCHA (2captcha, anticaptcha, etc.)

🔧 Améliorations

  • Améliorations de l'interpréteur JavaScript

    • Meilleure compatibilité avec les défis VM JavaScript v3
    • Gestion des erreurs et mécanismes de repli améliorés
    • Création de contexte améliorée pour les défis basés sur VM
  • Détection des défis

    • Détection plus précise des différents types de défis
    • Meilleure différenciation entre les défis v1, v2, v3 et Turnstile
    • Amélioration des motifs regex pour la protection Cloudflare moderne
  • Options de configuration

    • Ajout du paramètre disableCloudflareV3 pour la gestion sélective des défis
    • Sortie de débogage améliorée pour la détection des défis v3
    • Meilleurs messages d'erreur et informations de dépannage

🧪 Tests et qualité

  • Suite de tests complète

    • Taux de réussite de 100 % pour toutes les fonctionnalités principales
    • Script de test dédié aux défis v3
    • Couverture de test améliorée pour tous les types de défis
    • Tests automatisés pour tous les interpréteurs JavaScript
  • Documentation

    • Réécriture complète du README avec des exemples v3
    • Ajout d'exemples d'utilisation complets
    • Guide de dépannage amélioré
    • Ajout d'une section tests et vérification

🐛 Corrections de bugs

  • Correction des problèmes de compatibilité avec les défis Cloudflare modernes
  • Amélioration de la gestion des erreurs pour les cas limites
  • Meilleure gestion des défis JavaScript malformés
  • Gestion améliorée des cookies pour les implémentations Cloudflare plus récentes

Version 2.5.3

Fonctionnalités ajoutées

  • Prise en charge initiale des défis Turnstile
  • Capacités de rotation de proxy améliorées
  • Fonctionnalité de mode furtif améliorée
  • Meilleure empreinte de navigateur

Version 2.5.0

Modifications majeures

  • Consolidation de la base de code en un module unique
  • Prise en charge améliorée des défis v2
  • Meilleure gestion de l'interpréteur JavaScript
  • Ajout d'une suite de tests complète

Crédits

  • cloudscraper original par VeNoMouS
  • Édition améliorée par Zied Boughdir

Tests

La bibliothèque comprend des scripts de test complets pour vérifier son fonctionnement :

Test de base

Test rapide pour vérifier que la bibliothèque fonctionne :```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:~
### Exécution de la suite de tests

La bibliothèque comprend plusieurs scripts de test :```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

Conseils de dépannage

Si vous rencontrez des problèmes :

  1. Essayez une autre émulation de navigateur - Certains sites fonctionnent mieux avec Chrome qu'avec Firefox
  2. Activez le mode furtif - Aide à contourner les protections sophistiquées
  3. Utilisez la rotation de proxys - Pour les blocages IP ou les limites de débit
  4. Essayez différents interpréteurs JavaScript - js2py, nodejs ou v8

Assistance

Pour tout problème ou question, veuillez ouvrir une issue sur le dépôt GitHub.```bash pip install --upgrade cloudscraper # Always use the latest version

root@kitploit:~
Télécharger l’outil
FonctionnalitéCouverture des testsTaux de réussite
Requêtes de base✅ Complète100 %
Gestion du User Agent✅ Complète100 %
Défis Cloudflare v1✅ Complète100 %
Défis Cloudflare v2✅ Complète100 %
Défis Cloudflare v3✅ NOUVEAU100 %
Mode furtif✅ Complète100 %
Interpréteurs JavaScript✅ Tous pris en charge100 %
Rotation de proxys✅ ComplèteN/A*
Prise en charge de Turnstile✅ ComplèteN/A*
smart
sequential
ban_time(int) secondes avant de bannir un proxy après un échec300
ParameterValueRequiredDefault
provider(string) 2captchaoui
api_key(string)oui
no_proxy(boolean)nonFalse
ParamètreValeurRequisDéfaut
provider(string) deathbycaptchaoui
username(string)oui
password(string)oui