
Un módulo de Python para evadir la página anti-bot de Cloudflare.
Mejorado por Zied Boughdir
Todas las funciones probadas con 100% de tasa de éxito para la funcionalidad principal:
Un módulo de Python para eludir la página antibot de Cloudflare (también conocida como "I'm Under Attack Mode", o IUAM), implementado con Requests. Esta versión mejorada incluye soporte para los desafíos v2 de Cloudflare, rotación de proxies, modo sigilo y más. Cloudflare cambia sus técnicas periódicamente, por lo que actualizaré este repositorio con frecuencia.
Esto puede ser útil si deseas hacer scraping o rastrear un sitio web protegido con Cloudflare. La página antibot de Cloudflare actualmente solo comprueba si el cliente soporta Javascript, aunque pueden añadir técnicas adicionales en el futuro.
Debido a que Cloudflare cambia y endurece continuamente su página de protección, cloudscraper requiere un motor/intérprete de JavaScript para resolver los desafíos de Javascript. Esto permite al script hacerse pasar fácilmente por un navegador web normal sin desofuscar y analizar explícitamente el Javascript de Cloudflare.
Como referencia, este es el mensaje predeterminado que Cloudflare utiliza para este tipo de páginas:``` 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...
Cualquier script que use cloudscraper se pausará durante ~5 segundos en la primera visita a cualquier sitio con la protección anti-bots de Cloudflare activada, aunque no se producirá ningún retraso después de la primera solicitud.
# Instalación
Simplemente ejecuta `pip install cloudscraper`. El paquete de PyPI está en https://pypi.org/project/cloudscraper/```bash
pip install cloudscraper
Alternativamente, clona este repositorio y ejecuta python setup.py install.
Si anteriormente usabas el paquete original cloudscraper, ahora puedes usar esta versión mejorada directamente:```python
import cloudscraper # Enhanced version
La API sigue siendo compatible, por lo que solo necesitas cambiar las declaraciones de importación en tu código. Todas las llamadas a funciones y parámetros funcionan de la misma manera.
### Estructura de la base de código
La base de código se ha optimizado para mejorar el mantenimiento y reducir la confusión:
- **Módulo único**: Todo el código está ahora en el módulo `cloudscraper`
- **Redundancia eliminada**: Se han eliminado los directorios redundantes
- **Pruebas actualizadas**: Todos los archivos de prueba se han actualizado para usar el módulo `cloudscraper`
Esto hace que la base de código sea más limpia y fácil de mantener, a la vez que garantiza la compatibilidad con versiones anteriores del código existente que utiliza la API original.
## Características clave en cloudscraper
| Característica | Descripción | Estado |
|---------|-------------|--------|
| **🆕 Compatibilidad de ejecutables** | Corrección completa para la conversión con PyInstaller, cx_Freeze y auto-py-to-exe | ✅ **CORREGIDO** |
| **🆕 Desafíos de VM de JavaScript v3** | Soporte para los últimos desafíos basados en VM de JavaScript de Cloudflare | ✅ **NUEVO** |
| **🆕 Soporte para Turnstile** | Soporte para el nuevo reemplazo de CAPTCHA de Cloudflare, Turnstile | ✅ **NUEVO** |
| **Soporte de desafíos modernos** | Soporte mejorado para los desafíos v1, v2, v3 y Turnstile de Cloudflare | ✅ Completo |
| **Rotación de proxies** | Rotación inteligente de proxies integrada con múltiples estrategias | ✅ Mejorado |
| **Modo sigiloso** | Simulación de comportamiento humano para evitar la detección | ✅ Mejorado |
| **Emulación de navegador** | Huella digital avanzada de navegador para Chrome y Firefox | ✅ Estable |
| **Manejo de JavaScript** | Mejor intérprete de JS (js2py por defecto) para resolver desafíos | ✅ Mejorado |
| **Solucionadores de CAPTCHA** | Soporte para múltiples servicios de resolución de CAPTCHA | ✅ Estable |
# Dependencias
- **Python 3.8+** (se eliminó la compatibilidad con Python 3.6 y 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