Volver al blog

Cómo sortear un sitio web protegido por Cloudflare

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

14-Mar-2025

Los sitios web protegidos por Cloudflare pueden ser algunos de los más difíciles de raspar. Su detección automática de bots requiere que utilice una herramienta de raspado web potente para evitar las medidas anti-raspado de Cloudflare y extraer los datos de su página web.

Hoy, le mostraremos cómo raspar sitios web protegidos por Cloudflare usando Python y la biblioteca de código abierto Cloudscraper. Dicho esto, aunque es eficaz en algunos casos, encontrará que Cloudscraper tiene algunas limitaciones difíciles de evitar.

¿Qué es la gestión de bots de Cloudflare?

Cloudflare es una empresa de entrega de contenido y seguridad web. Ofrece un cortafuegos de aplicaciones web (WAF) para proteger los sitios web de amenazas de seguridad como la escritura entre sitios (XSS), el relleno de credenciales y los ataques DDoS.

Uno de los sistemas centrales de Cloudflare WAF es Bot Manager, que mitiga los ataques de bots maliciosos sin afectar a los usuarios reales. Sin embargo, aunque Cloudflare permite bots rastreadores conocidos como Google, asume que cualquier tráfico de bots desconocido (incluidos los rastreadores web) es malicioso.

Introducción a Cloudflare WAF

Cloudflare WAF es un componente clave en el sistema de protección central de Cloudflare, diseñado para detectar y bloquear solicitudes maliciosas analizando el tráfico HTTP/HTTPS en tiempo real. Filtra posibles amenazas como la inyección SQL, la escritura entre sitios (XSS), los ataques DDoS, etc., en función de conjuntos de reglas (incluidas reglas predefinidas y reglas personalizadas).

Cloudflare WAF combina una base de datos de reputación de IP, un modelo de análisis de comportamiento y tecnología de aprendizaje automático, y puede ajustar dinámicamente las estrategias de protección para responder a nuevos ataques. Además, WAF está integrado a la perfección con la CDN y la protección DDoS de Cloudflare para proporcionar seguridad multinivel a los sitios web, manteniendo al mismo tiempo una baja latencia y una alta disponibilidad para los usuarios legítimos.

En la tabla siguiente, puede ver claramente las medidas de protección de WAF y la dificultad de descifrarlas:

Capa de protección Principio técnico Dificultad de descifrado
Detección de reputación IP Análisis del comportamiento histórico de la IP (ASN/geolocalización) ★★☆☆☆
Desafío JS Generación dinámica de problemas matemáticos para verificar el entorno del navegador ★★★☆☆
Huella digital del navegador Extracción de características de renderizado Canvas/WebGL ★★★★☆
Token dinámico Verificación de token encriptado basado en la marca de tiempo ★★★★☆
Análisis de comportamiento Reconocimiento de la trayectoria del ratón/patrón de clics ★★★★★

¿Cómo detecta Cloudflare los bots?

El sistema de gestión de bots de Cloudflare está diseñado para diferenciar entre bots maliciosos y tráfico legítimo (como los rastreadores de motores de búsqueda). Al analizar las solicitudes entrantes, identifica patrones inusuales y bloquea actividades sospechosas para mantener la integridad de sus sitios y aplicaciones.

Sus métodos de detección pueden ser pasivos o activos. Las técnicas de detección de bots pasivas utilizan la huella digital del backend, mientras que las técnicas de detección activas se basan en el análisis del lado del cliente.

  1. Técnicas de detección de bots pasivas
  • Detección de botnets
  • Reputación de la dirección IP
  • Encabezados de solicitud HTTP
  • Huella digital TLS
  • Huella digital HTTP/2
  1. Técnicas de detección de bots activas

3 Errores principales de Cloudflare

¿Cómo raspar un sitio web protegido por Cloudflare?

Paso 1: Configurar el entorno

Primero, asegúrese de que Python esté instalado en su sistema. Cree un nuevo directorio para almacenar el código de este proyecto. A continuación, debe instalar cloudscraper y requests. Puede hacerlo mediante pip:

Shell Copy
$ pip install cloudscraper requests

Paso 2: Hacer una solicitud simple usando requests

Ahora, necesitamos raspar datos de la página en https://sailboatdata.com/sailboat/11-meter/ . Una parte del contenido de la página es similar a esta:

Protegemos firmemente la privacidad del sitio web. Todos los datos de este blog son públicos y solo se utilizan como demostración del proceso de rastreo. No guardamos ninguna información ni datos.

sailboatdata.com

Primero, intentemos enviar una solicitud GET simple usando requests para confirmar:

Python Copy
def sailboatdata():
    html = requests.get("https://sailboatdata.com/sailboat/11-meter/")
    print(html.status_code)  # 403
    with open("response.html", "wb") as f:
        f.write(html.content)

Como era de esperar, la página web devuelve un código de estado 403 Forbidden. Hemos guardado la respuesta en un archivo local. El código fuente específico del contenido devuelto se muestra a continuación:

403 Forbidden

El sitio web de destino está protegido y el archivo local no se puede abrir correctamente. Ahora, necesitamos encontrar una manera de evitar esto.

Paso 3: Raspar datos usando Cloudscraper

Usemos Cloudscraper para enviar la misma solicitud GET al sitio web de destino. Aquí está el código:

Python Copy
def sailboatdata_cloudscraper():
    scraper = cloudscraper.create_scraper()
    html = scraper.get("https://sailboatdata.com/sailboat/11-meter/")
    print(html.status_code) # 200
    with open("response.html", "wb") as f:
        f.write(html.content)

Esta vez, Cloudflare no bloqueó nuestra solicitud. Abrimos el archivo HTML guardado localmente y lo vemos en el navegador. La página se ve así:

Cloudflare no bloqueó ahora

Funciones avanzadas de Cloudscraper

Gestión de CAPTCHA integrada

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

Soporte de proxy personalizado

Python Copy
proxies = {"http": "tu dirección de proxy", "https": "tu dirección de proxy"}
 
scraper = cloudscraper.create_scraper()
scraper.proxies.update(proxies)

html = scraper.get("https://sailboatdata.com/sailboat/11-meter/")

Scrapeless Scraping Browser: Una alternativa más potente a Cloudscraper

Limitaciones de Cloudscraper

Cloudscraper tiene algunas limitaciones cuando se trata de ciertos sitios web protegidos por Cloudflare. El problema más notable es que no puede evitar el mecanismo de protección de detección de robots versión 2 de Cloudflare. Si intenta raspar datos de dicho sitio web, se activará el siguiente mensaje de error:

JSON Copy
cloudscraper.exceptions.CloudflareChallengeError: Detected a Cloudflare version 2 challenge, This feature is not available in the opensource (free) version.

Además, Cloudscraper tampoco puede hacer frente a los desafíos de JavaScript avanzados de Cloudflare. Estos desafíos a menudo implican cálculos dinámicos complejos o interacciones con elementos de la página, que son difíciles de simular para herramientas automatizadas como Cloudscraper para pasar la verificación.

Otro problema es la política de limitación de velocidad de Cloudflare. Para evitar abusos, Cloudflare controla estrictamente la frecuencia de las solicitudes, y Cloudscraper carece de un mecanismo eficaz para gestionar estos límites, lo que puede causar retrasos en las solicitudes o incluso fallos.

Por último, pero no menos importante, a medida que Cloudflare continúa actualizando su tecnología de detección de bots, es difícil para Cloudscraper, como herramienta de código abierto, mantenerse al día con estos cambios. Con el tiempo, la eficacia y la estabilidad de su funcionalidad pueden disminuir gradualmente, especialmente frente a nuevas versiones de mecanismos de protección.

¿Por qué es eficaz Scrapeless?

Scraping Browser es una solución de alto rendimiento para extraer grandes cantidades de datos de sitios web dinámicos. Permite a los desarrolladores ejecutar, gestionar y supervisar navegadores sin cabeza sin recursos de servidor dedicados. Está diseñado para la extracción eficiente de datos web a gran escala:

  1. Simular comportamientos de interacción humana reales para evitar mecanismos anti-rastreadores avanzados como la detección de huellas digitales del navegador y la detección de huellas digitales TLS.
  2. Soporte de resolución automática de múltiples tipos de códigos de verificación, incluyendo cf_challenge, para asegurar un proceso de rastreo ininterrumpido.
  3. Integración perfecta de herramientas populares como Puppeteer y Playwright para simplificar el proceso de desarrollo y admitir código de una sola línea para iniciar tareas automatizadas.

¿Cómo integrar Scraping Browser para evitar Cloudflare?

Paso 1. Crear su token de API

Scrapeless garantiza un raspado web sin problemas.
🎁 ¡Únase a Discord y solicite su prueba gratuita ahora!

Crear clave API

Paso 2. Luego, vaya a Scraping Browser y copie la URL de su navegador.

copiar la URL de su navegador

O puede consultar nuestro código de solicitud como referencia:

JavaScript Copy
const puppeteer = require('puppeteer-core');
const connectionURL = 'wss://browser.scrapeless.com/browser?token=<SU_TOKEN_API>&session_ttl=180&proxy_country=ANY';

(async () => {
    const browser = await puppeteer.connect({browserWSEndpoint: connectionURL});
    const page = await browser.newPage();
    await page.goto('https://www.scrapeless.com');
    console.log(await page.title());
    await browser.close();
})();

Paso 3. Integre el código o la URL del navegador en su script Puppeteer:

JavaScript Copy
const puppeteer = require('puppeteer-core');
const connectionURL = 'wss://browser.scrapeless.com/browser?token=<SU_CLAVE_API_Scrapeless>&session_ttl=180&proxy_country=ANY';

(async () => {
    // configurar el entorno del navegador
    const browser = await puppeteer.connect({
        browserWSEndpoint: connectionURL,
    });

    // crear una nueva página
    const page = await browser.newPage();

    // navegar a una URL
    await page.goto('https://sailboatdata.com/sailboat/11-meter/', {
        waitUntil: 'networkidle0',
    }); // Reemplace con su URL de destino

    // esperar a que se resuelva el desafío
    await new Promise(function (resolve) {
        setTimeout(resolve, 10000);
    });

    // tomar captura de pantalla de la página
    await page.screenshot({ path: 'screenshot.png' });
    // cerrar la instancia del navegador
    await browser.close();
})();

4 Consejos para evitar Cloudflare

Si desea hackear Cloudflare usted mismo, ¡será muy difícil! Debe considerar todas las defensas que Cloudflare tiene contra los bots y encontrar formas de superarlas. La mayoría de la gente definitivamente no elegirá hacer esto.

¿Quiere intentarlo? Aquí hay algunos consejos para ayudarlo a evitar Cloudflare:

Renderizado de JavaScript

Cloudflare a menudo utiliza desafíos de JavaScript para detectar bots. Estos scripts están integrados en las páginas web y realizan comprobaciones específicas a través del navegador para determinar si el visitante es un bot. Si se sospecha de un bot, Cloudflare mostrará un CAPTCHA (como el código de verificación Turnstile), de lo contrario, permitirá el acceso normal.

Por lo tanto, para rastrear páginas protegidas, debe utilizar herramientas de automatización del navegador como Playwright, Selenium o Puppeteer para simular interacciones reales del usuario. Sin embargo, la configuración predeterminada de los navegadores sin cabeza puede estar expuesta a los sistemas anti-bots. Se recomienda utilizar las bibliotecas Playwright Stealth o Puppeteer Stealth para ocultar los rastros de automatización.

Resolución de CAPTCHA

CAPTCHA es una prueba clave para distinguir los bots de los humanos. Puede incluir una simple verificación de clic o rompecabezas complejos. Analizar CAPTCHA automáticamente es difícil, por lo que puede intentar evitarlo con tecnología Python o utilizar el Cloudflare Turnstile Solver de Bright Data para resolverlo automáticamente.

Evitar el límite de velocidad

Cloudflare activará los límites de velocidad para demasiadas solicitudes en un corto período de tiempo, lo que puede provocar que la IP se bloquee temporal o permanentemente. Para evitar este problema, se recomienda utilizar un servicio proxy (como un proxy residencial) para implementar la rotación de IP y disfrazar la solicitud como un dispositivo real.

Si bien las herramientas de automatización del navegador son efectivas, consumen muchos recursos. Si Cloudflare WAF no está configurado estrictamente, puede utilizar la tecnología de suplantación de navegador para enviar solicitudes HTTP para imitar el comportamiento del navegador real (como establecer el encabezado User-Agent). Sin embargo, en escenarios más complejos, los encabezados por sí solos pueden no ser suficientes, y también debe copiar la huella digital TLS del navegador (como usar la herramienta curl-impersonate).

Conclusión

En este artículo, aprendió consejos y trucos sobre cómo raspar sitios web protegidos por Cloudflare. Cloudflare es el servicio CDN más popular del mercado y también ofrece soluciones anti-bots avanzadas.

Como muestra este artículo, evitar las medidas anti-raspado de Cloudflare es un desafío, pero no imposible. Todo se vuelve más fácil con soluciones de raspado profesionales, rápidas y confiables, como:

  • API de raspado universal: Evita de forma autónoma los límites de velocidad, las huellas digitales y otras restricciones anti-bots para una recopilación de datos web públicos sin problemas.
  • Navegador de raspado: Un navegador totalmente alojado que le permite raspar datos web dinámicos mientras automatiza el proceso de desbloqueo de sitios web.

👉 ¡Obtenga la prueba gratuita ahora!

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar