Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cloudscraper — Un módulo de Python para evadir la página anti-bot de Cloudflare. | Kitploit
Herramientas/GitHubGitHub/venomous/cloudscraper
Herramientas de SuplantaciónEvasión de WAFCrawlerAnti-BotSuplantación de Huella DigitalBypass de CAPTCHA
GitHubvenomous/cloudscraper

cloudscraper

Un módulo de Python para evadir la página anti-bot de Cloudflare.

Ver Repositorio
6.7k638hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

cloudscraper - Edición Mejorada

PyPI version License: MIT image

Mejorado por Zied Boughdir

Última versión: v3.0.0 🚀 - Actualización importante

🆕 Principales novedades en v3.0.0

  • 🛡️ Recuperación automática de errores 403 - Refresco inteligente de sesión cuando se producen errores 403 tras un uso prolongado
  • 📊 Monitorización de salud de la sesión - Gestión proactiva de sesiones con intervalos de refresco configurables
  • 🔄 Refresco inteligente de sesión - Limpieza automática de cookies y rotación de huellas digitales
  • 🎯 Modo sigilo mejorado - Antidetección mejorada con simulación de comportamiento humano
  • 🔧 Soporte moderno de Python - Python 3.8+ con las últimas versiones de dependencias
  • 📦 Empaquetado moderno - Utiliza pyproject.toml y herramientas de compilación modernas
  • 🧪 Pruebas exhaustivas - Nueva suite de pruebas con pytest e integración CI/CD
  • 🚀 Mejoras de rendimiento - Código optimizado con mejor manejo de errores

🔧 Cambios importantes

  • Versión mínima de Python: Ahora requiere Python 3.8+
  • Dependencias actualizadas: Todas las dependencias actualizadas a las últimas versiones estables
  • Código heredado eliminado: Limpieza del código de compatibilidad con Python 2

✅ Funciones anteriores (aún disponibles)

  • Corrección de compatibilidad con ejecutables - Solución completa para la conversión con PyInstaller, cx_Freeze y auto-py-to-exe
  • Soporte para el desafío JavaScript VM de Cloudflare v3 - Maneja la protección de Cloudflare más reciente y sofisticada
  • Soporte para el desafío Turnstile de Cloudflare - Soporte para la alternativa de CAPTCHA de Cloudflare
  • Soporte mejorado de intérpretes de JavaScript - Ejecución mejorada de desafíos basados en VM
  • Cobertura completa de protección - Ahora soporta todos los tipos de desafíos de Cloudflare (v1, v2, v3, Turnstile)

🔧 Mejoras

  • 🎯 Corregidos los problemas de User Agent en ejecutables - Sistema de respaldo automático para browsers.json faltante
  • 🛡️ Detección de PyInstaller - Detecta y maneja automáticamente los entornos de ejecutables
  • 📦 Sistema de respaldo exhaustivo - Más de 70 user agents integrados que cubren todas las plataformas
  • Rotación de proxies y capacidades de modo sigilo mejoradas
  • Mejor detección y manejo de los mecanismos modernos de protección de Cloudflare
  • Compatibilidad mejorada con todos los intérpretes de JavaScript (js2py, nodejs, native)
  • Documentación actualizada con ejemplos completos

📊 Resultados de las pruebas

Todas las funciones probadas con 100% de tasa de éxito para la funcionalidad principal:

  • ✅ Peticiones básicas: 100% de tasa de éxito
  • ✅ Manejo de user agent: 100% de tasa de éxito
  • ✅ Desafíos v1 de Cloudflare: 100% de tasa de éxito
  • ✅ Desafíos v2 de Cloudflare: 100% de tasa de éxito
  • ✅ Desafíos v3 de Cloudflare: 100% de tasa de éxito
  • ✅ Modo sigilo: 100% de tasa de éxito

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...

root@kitploit:~
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.

Migración desde cloudscraper

Si anteriormente usabas el paquete original cloudscraper, ahora puedes usar esta versión mejorada directamente:```python

Enhanced import

import cloudscraper # Enhanced version

root@kitploit:~
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

`python setup.py install` instalará automáticamente las dependencias de Python. Los intérpretes y/o motores de JavaScript que decidas usar son lo único que necesitas instalar tú mismo, excluyendo js2py, que forma parte de los requisitos por defecto.

# Intérpretes y motores de JavaScript

Admitimos los siguientes intérpretes/motores de JavaScript.

- **[ChakraCore](https://github.com/microsoft/ChakraCore):** Los binarios de la biblioteca también se pueden localizar [aquí](https://www.github.com/VeNoMouS/cloudscraper/tree/ChakraCore/).
- **[js2py](https://github.com/PiotrDabkowski/Js2Py):** >=0.74 **(Por defecto para la versión mejorada)**
- **native**: Solucionador nativo de Python de creación propia
- **[Node.js](https://nodejs.org/)**
- **[V8](https://github.com/sony/v8eval/):** Usamos el módulo de Python [v8eval](https://v8.dev)() de Sony.

# Uso

La forma más sencilla de usar cloudscraper es llamando a `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>..."

Eso es todo...

Cualquier solicitud realizada desde este objeto de sesión a sitios web protegidos por el anti-bot de Cloudflare se gestionará automáticamente. Los sitios web que no usen Cloudflare se tratarán con normalidad. No necesitas configurar ni llamar nada más, y puedes tratar de manera efectiva todos los sitios web como si no estuvieran protegidos con nada.

Usas cloudscraper exactamente de la misma manera en que usas Requests. cloudScraper funciona de forma idéntica a un objeto Session de Requests, solo que en lugar de llamar a requests.get() o requests.post(), llamas a scraper.get() o scraper.post().

Consulta la documentación de Requests para más información.

✅ Compatibilidad con Ejecutables (v2.7.0)

¡Problema Resuelto!

El problema del user agent al convertir aplicaciones Python que usan cloudscraper en ejecutables se ha solucionado por completo.

¿Cuál Era el Problema?

Al convertir aplicaciones Python en ejecutables (usando PyInstaller, cx_Freeze, auto-py-to-exe, etc.), los usuarios encontraban errores relacionados con el user agent o la funcionalidad agent_user porque el archivo browsers.json no se incluía correctamente.

La Solución

cloudscraper v2.7.0 incluye un sistema de respaldo automático:

  1. Detección de PyInstaller - Detecta automáticamente entornos de ejecutables
  2. Múltiples Rutas de Respaldo - Prueba varias ubicaciones para browsers.json
  3. Respaldo Integral Integrado - Más de 70 user agents fijos que cubren todas las plataformas
  4. Manejo de Errores Elegante - Sin más fallos cuando faltan archivos

Cómo Usarlo

Opción 1: Simplemente compila tu ejecutable (funciona automáticamente):```bash pyinstaller your_app.py

root@kitploit:~
**Opción 2: Incluir base de datos completa de user agents** (recomendado):```bash
pyinstaller --add-data "cloudscraper/user_agent/browsers.json;cloudscraper/user_agent/" your_app.py

Pruebas

Toda la compatibilidad de ejecutables ha sido probada a fondo:``` ✅ 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:~
Tus aplicaciones cloudscraper ahora funcionarán perfectamente cuando se conviertan en ejecutables. 🎉

## 🆕 Soporte para desafíos JavaScript VM de Cloudflare v3

### ¿Qué son los desafíos v3?

Los desafíos v3 de Cloudflare representan la última evolución en tecnología de protección contra bots. A diferencia de los desafíos tradicionales v1 y v2, los desafíos v3:

- **Se ejecutan en una máquina virtual JavaScript**: Los desafíos se ejecutan en un entorno JavaScript sandbox
- **Usan detección avanzada**: Algoritmos más sofisticados para detectar comportamiento automatizado
- **Generan código dinámico**: El código del desafío se crea dinámicamente y es más difícil de aplicar ingeniería inversa
- **Proporcionan protección moderna**: La tecnología anti-bot más actual de Cloudflare

### Uso básico de v3```python
import cloudscraper

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

Configuración avanzada de 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 con diferentes intérpretes de JavaScript

Todos los intérpretes de JavaScript funcionan con los desafíos 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)}")

Detección de desafíos v3

Cuando el modo de depuración está habilitado, verás la detección de desafíos v3 en acción:```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:~
### Consideraciones de rendimiento para v3

Los desafíos de v3 son más complejos y pueden requerir tiempo 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
)

🚀 Ejemplos Completos

Ejemplo 1: Uso básico con todos los tipos de desafíos```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:~
### Ejemplo 2: Configuración avanzada para máxima compatibilidad```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")

Ejemplo 3: Manejo de Turnstile con Solucionador 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:~
### Ejemplo 4: Rotación de Proxy con Soporte 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}")

Ejemplo 5: Probando Diferentes Tipos de Desafíos```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:~
## 🧪 Pruebas y Verificación

### Suite de pruebas integral

cloudscraper incluye scripts de prueba integrales para verificar que todas las funciones funcionan correctamente:```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

Resumen de Resultados de Pruebas

La librería ha sido probada exhaustivamente con una tasa de éxito del 100% para la funcionalidad principal:

*Requiere configuración externa (proxies/claves de API)

Pruebas Manuales

Puedes probar manualmente la librería con el modo de depuración para ver la detección de desafíos en acción:```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:~
### Solución de problemas

Si encuentras problemas:

1. **Activa el modo de depuración** para ver información detallada
2. **Prueba diferentes intérpretes** (js2py, nodejs, native)
3. **Aumenta el retraso** para desafíos complejos
4. **Activa el modo sigiloso** para protección adicional
5. **Comprueba la configuración del proxy** si usas 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
)

Opciones

Deshabilitar Cloudflare V1

Descripción

Si no deseas ni siquiera intentar resolver Cloudflare v1 (obsoleto)..

Parámetros

ParámetroValorPredeterminado
disableCloudflareV1(boolean)False

Ejemplo```python

scraper = cloudscraper.create_scraper(disableCloudflareV1=True)

root@kitploit:~
### Deshabilitar Cloudflare V2
#### Descripción

Si no quieres ni siquiera intentar resolver Cloudflare v2..

#### Parámetros


|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|disableCloudflareV2|(boolean)|False|

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

Deshabilitar Cloudflare V3

Descripción

Si no quieres intentar siquiera resolver la VM de JavaScript de Cloudflare v3..

Parámetros

ParámetroValorPor defecto
disableCloudflareV3(boolean)False

Ejemplo```python

scraper = cloudscraper.create_scraper(disableCloudflareV3=True)

root@kitploit:~
### Desactivar Turnstile
#### Descripción

Si no quieres ni siquiera intentar resolver Cloudflare Turnstile..

#### Parámetros


|Parámetro|Valor|Por defecto|
|-------------|:-------------:|:-----:|
|disableTurnstile|(boolean)|False|

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

Rotación de proxies

Descripción

Rota automáticamente a través de una lista de proxies para evitar bloqueos basados en IP.

Parámetros

ParámetroValorPor defecto
rotating_proxies(lista o dict)None
proxy_options(dict){}

Parámetros de proxy_options

ParámetroValorPor defecto
rotation_strategy(cadena) sequential, random o

Ejemplo```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 sigiloso
#### Descripción

Habilita técnicas de sigilo para imitar mejor el comportamiento humano y evitar la detección.

#### Parámetros

|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|enable_stealth|(boolean)|True|
|stealth_options|(dict)|{}|

#### Parámetros de `stealth_options`

|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|min_delay|(float) retardo mínimo entre solicitudes|1.0|
|max_delay|(float) retardo máximo entre solicitudes|5.0|
|human_like_delays|(boolean) añade retardos aleatorios entre solicitudes|True|
|randomize_headers|(boolean) aleatoriza las cabeceras para evitar la toma de huellas|True|
|browser_quirks|(boolean) aplica peculiaridades específicas del navegador|True|

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

Descripción

Se ha añadido soporte de descompresión Brotli, y está habilitado por defecto.

Parámetros

ParámetroValorPor defecto
allow_brotli(booleano)True

Ejemplo```python

scraper = cloudscraper.create_scraper(allow_brotli=False)

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

#### Descripción

Controla cómo y cuál User-Agent se selecciona "aleatoriamente".

#### Parámetros

Se puede pasar como argumento a `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` o `firefox`|None|

O

|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|browser|(dict)||

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

o```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

#### Descripción

Imprime la información de encabezado y contenido de la solicitud para depuración.

#### Parámetros

Se puede establecer como atributo mediante tu objeto `cloudscraper` o pasarse como argumento a `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Parámetro|Valor|Por defecto|
|-------------|:-------------:|:-----:|
|debug|(booleano)|False|

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

Retrasos

Descripción

El desafío de Cloudflare IUAM requiere que el navegador espere ~5 segundos antes de enviar la respuesta del desafío. Si desea anular este retraso.

Parámetros

Se puede establecer como un atributo a través de su objeto cloudscraper o pasarse como argumento a create_scraper(), get_tokens(), get_cookie_string().

ParámetroValorPredeterminado
delay(float)extraído de la página de IUAM

Ejemplo```python

scraper = cloudscraper.create_scraper(delay=10)

root@kitploit:~
### Sesión existente

#### Descripción:

Si ya tienes una sesión de Requests existente, puedes pasarla a la función `create_scraper()` para seguir usando esa sesión.

#### Parámetros

|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|sess|(requests.session)|None|

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

Nota

Desafortunadamente, no todos los atributos de sesión de Requests son fácilmente transferibles, así que si tienes problemas con esto,

Deberías reemplazar tu llamada inicial de inicialización de sesión

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

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

Motores e Intérpretes de JavaScript

Descripción

cloudscraper actualmente admite los siguientes Motores/Intérpretes de JavaScript

  • ChakraCore
  • js2py (Predeterminado en la versión mejorada)
  • native: Solucionador nativo de Python de elaboración propia
  • Node.js
  • V8

Parámetros

Se puede establecer como un atributo a través de tu objeto cloudscraper o pasarse como argumento a create_scraper(), get_tokens(), get_cookie_string().

ParámetroValorPredeterminado
interpreter(string)js2py

Ejemplo```python

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

root@kitploit:~
#### Nota

La versión mejorada utiliza `js2py` como intérprete predeterminado porque ofrece una mejor compatibilidad con los desafíos modernos de Cloudflare. Si encuentras problemas, puedes probar otros intérpretes.

------

### Solucionadores de Captcha de Terceros

#### Descripción
`cloudscraper` actualmente soporta los siguientes solucionadores de Captcha de terceros, en caso de que los necesites.

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

Estoy trabajando en agregar más solucionadores de terceros; si deseas que se agregue un servicio que actualmente no es compatible, por favor abre un ticket de soporte en GitHub.

##### Parámetros Requeridos

Se pueden establecer como un atributo mediante tu objeto `cloudscraper` o pasarse como argumento a `create_scraper()`, `get_tokens()`, `get_cookie_string()`.

|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|captcha|(dict)|None|

#### Soporte para Turnstile

Cloudflare Turnstile es una nueva alternativa a los CAPTCHA que reemplaza los CAPTCHA tradicionales con un sistema de verificación más amigable para el usuario. cloudscraper ahora es compatible con la resolución de desafíos Turnstile usando los mismos proveedores de captcha que ya conoces.

##### Ejemplo```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 requeridos
Nota

si los proxies están configurados, puedes deshabilitar el envío de los proxies a 2captcha estableciendo no_proxy en True

Ejemplo```python

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

root@kitploit:~
#### anticaptcha

##### Parámetros `captcha` Requeridos

|Parámetro|Valor|Requerido|Predeterminado|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `anticaptcha`|sí||
|api_key|(string)|sí||
|no_proxy|(boolean)|no|False|

##### Nota

si hay proxies configurados, puedes desactivar el envío de los proxies a anticaptcha estableciendo `no_proxy` en `True`

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

CapSolver

Parámetros captcha requeridos
root@kitploit:~
'provider': 'capsolver',
'api_key': 'your_captchaai_api_key'

} )

root@kitploit:~
#### CapMonster Cloud

##### Parámetros `captcha` requeridos

|Parámetro|Valor|Requerido|Por defecto|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `capmonster`| sí||
|clientKey|(string)| sí||
|no_proxy|(boolean)|no|False|

##### Nota

si hay proxies configurados, puedes desactivar el envío de los proxies a CapMonster estableciendo `no_proxy` en `True`

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

deathbycaptcha

Parámetros captcha requeridos
Ejemplo```python

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

root@kitploit:~
#### 9kw

##### Parámetros `captcha` requeridos

|Parámetro|Valor|Requerido|Predeterminado|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `9kw`|sí||
|api_key|(string)|sí||
|maxtimeout|(int)|no|180|

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

return_response

Úsalo si quieres el payload de la respuesta de requests sin resolver el Captcha.

Parámetros requeridos de captcha
ParámetroValorRequeridoPredeterminado
provider(string) return_responsesí
Ejemplo```python

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

root@kitploit:~
## Integración

Es fácil integrar `cloudscraper` con otras aplicaciones y herramientas. Cloudflare utiliza dos cookies como tokens: una para verificar que superaste su página de desafío y otra para rastrear tu sesión. Para omitir la página de desafío, simplemente incluye ambas cookies (con el user-agent adecuado) en todas las solicitudes HTTP que realices.

Para recuperar solo las cookies (como diccionario), usa `cloudscraper.get_tokens()`. Para recuperarlas como una cabecera HTTP `Cookie` completa, usa `cloudscraper.get_cookie_string()`.

Tanto `get_tokens` como `get_cookie_string` aceptan los argumentos de palabra clave habituales de Requests (como `get_tokens(url, proxies={"http": "socks5://localhost:9050"})`).

Consulta la [documentación de Requests sobre argumentos de solicitud](http://docs.python-requests.org/en/master/api/#requests.Session.request) para obtener más información.

------

### Manejo del User-Agent

Las dos funciones de integración devuelven una tupla de `(cookie, user_agent_string)`.

**Debes usar la misma cadena de user-agent tanto para obtener los tokens como para hacer solicitudes con esos tokens; de lo contrario, Cloudflare te marcará como bot.**

Eso significa que tienes que pasar la `user_agent_string` devuelta al script, herramienta o servicio al que le estés pasando los tokens (por ejemplo, curl o una herramienta de scraping especializada), y debe usar ese user-agent cuando realice solicitudes HTTP.

------

### Ejemplos de integración

Recuerda que siempre debes usar el mismo user-agent al recuperar o usar estas cookies. Estas funciones devuelven una tupla de `(cookie_dict, user_agent_string)`.

------

#### Recuperar un diccionario de cookies a través de un proxy

`get_tokens` es una función de conveniencia para devolver un diccionario de Python que contiene las cookies de sesión de Cloudflare. Como demostración, configuraremos esta solicitud para usar un proxy. (Ten en cuenta que si solicitas tokens de autorización de Cloudflare a través de un proxy, siempre debes usar el mismo proxy cuando esos tokens se pasen al servidor. Cloudflare requiere que la IP que resuelve el desafío y la IP del visitante sigan siendo las mismas.)

Si no deseas usar un proxy, simplemente no pases el argumento de palabra clave `proxies`. Estas funciones de conveniencia admiten todos los argumentos de palabra clave normales de Requests, como `params`, `data` y `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
    }
)

Obteniendo una cadena de cookie

get_cookie_string es una función de conveniencia que devuelve los tokens como una cadena para usarse como valor de encabezado HTTP Cookie.

Esto es útil al crear una solicitud HTTP manualmente, o al trabajar con una aplicación o biblioteca externa que maneja encabezados de cookie sin procesar.```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:~
#### ejemplo de curl

Aquí hay un ejemplo de integración de cloudscraper con curl. Como puedes ver, todo lo que tienes que hacer es pasar las cookies y el user-agent a 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'
    ]
)

Versión reducida. Imprime el contenido de la página de cualquier sitio protegido con Cloudflare, mediante curl.

Advertencia: el uso de shell=True con subprocess puede ser peligroso en 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:~
### Criptografía

#### Descripción

Controla la comunicación entre el cliente y el servidor

#### Parámetros

Se puede pasar como argumento a `create_scraper()`.

|Parámetro|Valor|Predeterminado|
|-------------|:-------------:|:-----:|
|cipherSuite|(string)|None|
|ecdhCurve|(string)|prime256v1|
|server_hostname|(string)|None|

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

I don't see any content to translate. The message ends with "INPUT:" but no actual text follows.

Please provide the Markdown content for chunk 97 of 106, and I'll translate it from English to Spanish according to all the rules above.```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:~
# Características Mejoradas

Esta versión mejorada de cloudscraper ofrece mejores capacidades para evadir los mecanismos modernos de protección de Cloudflare:

1. **Soporte para desafíos Cloudflare v2** - Mejor manejo de desafíos modernos
2. **Rotación de proxies** - Rotación inteligente con múltiples estrategias
3. **Modo sigiloso** - Simulación de comportamiento humano
4. **Manejo mejorado de JavaScript** - Mejor intérprete de JS (js2py por defecto)
5. **Gestión mejorada de cookies** - Soporte para tipos de cookies más recientes de Cloudflare

## Actualizaciones Recientes

- **Limpieza del código base**: Se eliminó código redundante y se consolidó en un solo módulo
- **Actualizaciones de la suite de pruebas**: Todas las pruebas ahora usan el módulo cloudscraper
- **Documentación**: README mejorado con ejemplos más claros e instrucciones de uso

## Ejemplo Usando Todas las Características Mejoradas```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)

📋 Changelog

Versión 2.6.0 (Última) 🚀

🆕 Principales novedades

  • Compatibilidad con el desafío JavaScript VM v3 de Cloudflare

    • Se añadió compatibilidad integral con los últimos desafíos v3 de Cloudflare
    • Los desafíos se ejecutan dentro de una máquina virtual JavaScript para mayor seguridad
    • Detección y gestión automática de los patrones de desafío v3
    • Compatibilidad con todos los intérpretes de JavaScript (js2py, nodejs, native)
    • Mecanismos de respaldo mejorados para desafíos VM complejos
  • Compatibilidad mejorada con Turnstile

    • Detección mejorada de los desafíos de Cloudflare Turnstile
    • Mejor integración con los servicios de resolución de CAPTCHA
    • Compatibilidad con todos los principales proveedores de CAPTCHA (2captcha, anticaptcha, etc.)

🔧 Mejoras

  • Mejoras en el intérprete de JavaScript

    • Mejor compatibilidad con los desafíos JavaScript VM v3
    • Manejo de errores y mecanismos de respaldo mejorados
    • Creación de contexto mejorada para desafíos basados en VM
  • Detección de desafíos

    • Detección más precisa de los diferentes tipos de desafíos
    • Mejor diferenciación entre desafíos v1, v2, v3 y Turnstile
    • Patrones regex mejorados para la protección moderna de Cloudflare
  • Opciones de configuración

    • Se añadió el parámetro disableCloudflareV3 para el manejo selectivo de desafíos
    • Salida de depuración mejorada para la detección de desafíos v3
    • Mejores mensajes de error e información para la resolución de problemas

🧪 Pruebas y calidad

  • Suite de pruebas integral

    • 100 % de tasa de éxito en todas las funcionalidades principales
    • Script de prueba dedicado para desafíos v3
    • Cobertura de pruebas ampliada para todos los tipos de desafíos
    • Pruebas automatizadas para todos los intérpretes de JavaScript
  • Documentación

    • Reescritura completa del README con ejemplos de v3
    • Se añadieron ejemplos de uso integrales
    • Guía de resolución de problemas mejorada
    • Se añadió una sección de pruebas y verificación

🐛 Correcciones de errores

  • Se corrigieron los problemas de compatibilidad con los desafíos modernos de Cloudflare
  • Manejo de errores mejorado para casos límite
  • Mejor gestión de desafíos JavaScript malformados
  • Gestión de cookies mejorada para las implementaciones más recientes de Cloudflare

Versión 2.5.3

Funciones añadidas

  • Compatibilidad inicial con desafíos Turnstile
  • Capacidades mejoradas de rotación de proxies
  • Funcionalidad mejorada de modo sigiloso
  • Mejor huella digital del navegador

Versión 2.5.0

Cambios principales

  • Consolidación del código base en un único módulo
  • Compatibilidad mejorada con desafíos v2
  • Manejo mejorado del intérprete de JavaScript
  • Se añadió una suite de pruebas integral

Créditos

  • cloudscraper original de VeNoMouS
  • Edición mejorada de Zied Boughdir

Pruebas

La biblioteca incluye scripts de prueba integrales para verificar la funcionalidad:

Prueba básica

Prueba rápida para verificar que la biblioteca funciona:```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:~
### Ejecutando la suite de pruebas

La biblioteca incluye varios scripts de prueba:```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

Consejos para la resolución de problemas

Si encuentras problemas:

  1. Prueba con una emulación de navegador diferente - Algunos sitios funcionan mejor con Chrome que con Firefox
  2. Activa el modo sigiloso - Ayuda a evadir protecciones sofisticadas
  3. Usa rotación de proxies - Para bloqueos de IP o límites de velocidad
  4. Prueba con diferentes intérpretes de JS - js2py, nodejs, o v8

Soporte

Para problemas o preguntas, por favor abre un issue en el repositorio de GitHub.```bash pip install --upgrade cloudscraper # Always use the latest version

root@kitploit:~
Descargar herramienta
CaracterísticaCobertura de PruebasTasa de Éxito
Basic Requests✅ Completa100%
User Agent Handling✅ Completa100%
Cloudflare v1 Challenges✅ Completa100%
Cloudflare v2 Challenges✅ Completa100%
Cloudflare v3 Challenges✅ NUEVO100%
Stealth Mode✅ Completa100%
JavaScript Interpreters✅ Todos Soportados100%
Proxy Rotation✅ CompletaN/A*
Turnstile Support✅ CompletaN/A*
smart
sequential
ban_time(int) segundos para bloquear un proxy tras un fallo300
ParámetroValorRequeridoPredeterminado
provider(string) 2captchasí
api_key(string)sí
no_proxy(boolean)noFalse
ParámetroValorRequeridoPor defecto
provider(string) captchaaisí
api_key(string)sí
scraper = cloudscraper.create_scraper(
captcha={
ParámetroValorRequeridoPredeterminado
provider(string) deathbycaptchasí
username(string)sí
password(string)sí