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
Proxies Web e InterceptaciónHerramientas de SuplantaciónEvasión de WAFCrawlerAnti-BotSuplantación de Huella DigitalBypass de CAPTCHATop en Bypass de CAPTCHA #11Top en Suplantación de Huella Digital #5Top en Proxies Web e Interceptación #16
6.7k64029hace 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 →
GitHubvenomous/cloudscraper

cloudscraper

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

Ver Repositorio
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:

    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*

    *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 smartsequential
    ban_time(int) segundos para bloquear un proxy tras un fallo300

    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
    ParámetroValorRequeridoPredeterminado
    provider(string) 2captchasí
    api_key(string)sí
    no_proxy(boolean)noFalse
    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
    ParámetroValorRequeridoPor defecto
    provider(string) captchaaisí
    api_key(string)sí
    scraper = cloudscraper.create_scraper(
    captcha={
    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
    ParámetroValorRequeridoPredeterminado
    provider(string) deathbycaptchasí
    username(string)sí
    password(string)sí
    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