
Un module Python pour contourner la page anti-bot de Cloudflare.
Amélioré par Zied Boughdir
Toutes les fonctionnalités testées avec 100 % de taux de réussite pour les fonctionnalités de base :
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...
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.
Si vous utilisiez auparavant le package cloudscraper d'origine, vous pouvez désormais utiliser directement cette version améliorée :```python
import cloudscraper # Enhanced version
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