Volver al blog

Cómo evitar la protección de Cloudflare y Turnstile usando Scrapeless | Guía completa

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

22-Mar-2025

Introducción

El web scraping se está volviendo cada vez más difícil debido a los mecanismos de seguridad avanzados como Cloudflare Protection y Cloudflare Turnstile. Estos desafíos están diseñados para bloquear el acceso automatizado y dificultar que los bots recuperen datos. Sin embargo, con el Scrapeless Scraping Browser, puedes eludir estas restricciones de manera eficiente y continuar con el scraping sin interrupciones.

En esta guía, cubriremos tres aspectos clave para evitar los desafíos de Cloudflare:

  1. Cómo evitar la protección de Cloudflare usando Scrapeless Browser – Aprende a evitar medidas de seguridad como CAPTCHA y la detección de bots.
  2. Cómo recuperar y usar la cookie cf_clearance y los encabezados de solicitud – Comprende cómo extraer y usar las cookies cf_clearance para mantener la persistencia de la sesión.
  3. Cómo evitar Cloudflare Turnstile usando Scrapeless Browser – Descubre cómo evitar el desafío Turnstile y automatizar tus tareas de scraping.

Al final de este tutorial, tendrás una estrategia completa para manejar la protección de Cloudflare de manera efectiva. ¡Empecemos!


Parte 1: Cómo evitar la protección de Cloudflare usando Scrapeless


Esta guía te mostrará cómo usar Scrapeless y Puppeteer-core para evitar la protección de Cloudflare en los sitios web.

Paso 1: Preparación

1.1 Crea una carpeta de proyecto

  • Crea una nueva carpeta para el proyecto, por ejemplo, scrapeless-bypass.

  • Navega a la carpeta en tu terminal:

Copy
cd path/to/scrapeless-bypass

1.2 Inicializa un proyecto Node.js

Ejecuta el siguiente comando para crear un archivo package.json:

Copy
npm init -y

1.3 Instala las dependencias necesarias

Instala Puppeteer-core, que permite conexiones remotas a una instancia del navegador:

Copy
npm install puppeteer-core

Si Puppeteer aún no está instalado en tu sistema, instala la versión completa:

Copy
npm install puppeteer puppeteer-core

Paso 2: Obtén la clave API de Scrapeless

2.1 Regístrate en Scrapeless

  • Ve a Scrapeless y crea una cuenta.

  • Navega a la sección de administración de claves API.

Obtén la clave API de Scrapeless
  • Genera una nueva clave API y cópiala.

🚀 ¿Listo para profundizar en cómo evitar las protecciones de Cloudflare?
👉 Inicia sesión ahora para acceder a funciones y tutoriales avanzados.
🔒 ¿Necesitas ayuda extra? Únete a nuestra comunidad Discord para obtener soporte y actualizaciones en tiempo real.
📈 ¡Comienza a realizar scraping de forma más inteligente con Scrapeless Browser hoy mismo!


Paso 3: Conéctate a Scrapeless Browserless

3.1 Obtén la URL de conexión WebSocket

Scrapeless proporciona una URL de conexión WebSocket para que Puppeteer interactúe con un navegador basado en la nube.

El formato es:

Copy
wss://browser.scrapeless.com/browser?token=APIKey&session_ttl=180&proxy_country=ANY

Reemplaza APIKey con tu clave API de Scrapeless real.

3.2 Configura los parámetros de conexión

  • token: Tu clave API de Scrapeless

  • session_ttl: Duración de la sesión del navegador en segundos (por ejemplo, 180 segundos)

  • proxy_country: El código de país para el servidor proxy (por ejemplo, GB para el Reino Unido, EE. UU. para Estados Unidos)


Paso 4: Escribe el script de Puppeteer

4.1 Crea el archivo de script

Dentro de la carpeta de tu proyecto, crea un nuevo archivo JavaScript llamado bypass-cloudflare.js.

4.2 Conéctate a Scrapeless e inicia Puppeteer

Agrega el siguiente código a bypass-cloudflare.js:

javascript Copy
import puppeteer from 'puppeteer-core';

const API_KEY = 'your_api_key'; // Reemplaza con tu clave API real
const host = 'wss://browser.scrapeless.com';
const query = new URLSearchParams({
  token: API_KEY,
  session_ttl: '180', // Duración de la sesión del navegador en segundos
  proxy_country: 'GB', // Código de país del proxy
  proxy_session_id: 'test_session', // ID de sesión del proxy (mantiene la misma IP)
  proxy_session_duration: '5' // Duración de la sesión del proxy en minutos
}).toString();

const connectionURL = `${host}/browser?${query}`;

const browser = await puppeteer.connect({
  browserWSEndpoint: connectionURL,
  defaultViewport: null,
});
console.log('Conectado a Scrapeless');

4.3 Abre una página web y evita Cloudflare

Amplía el script para abrir una nueva página y navegar a un sitio web protegido por Cloudflare:

javascript Copy
const page = await browser.newPage();
await page.goto('https://www.scrapingcourse.com/cloudflare-challenge', { waitUntil: 'domcontentloaded' });

4.4 Espera a que se carguen los elementos de la página

Asegúrate de que la protección de Cloudflare se haya evitado antes de continuar:

javascript Copy
await page.waitForSelector('main.page-content .challenge-info', { timeout: 30000 }); // Ajusta el selector según sea necesario

4.5 Captura una captura de pantalla

Para verificar la omisión exitosa de la protección de Cloudflare, toma una captura de pantalla de la página:

javascript Copy
await page.screenshot({ path: 'challenge-bypass.png' });
console.log('Captura de pantalla guardada como challenge-bypass.png');

4.6 Script completo

Aquí está el script completo:

javascript Copy
import puppeteer from 'puppeteer-core';

const API_KEY = 'your_api_key'; // Reemplaza con tu clave API real
const host = 'wss://browser.scrapeless.com';
const query = new URLSearchParams({
  token: API_KEY,
  session_ttl: '180',
  proxy_country: 'GB',
  proxy_session_id: 'test_session',
  proxy_session_duration: '5'
}).toString();

const connectionURL = `${host}/browser?${query}`;

(async () => {
  try {
    // Conéctate a Scrapeless
    const browser = await puppeteer.connect({
      browserWSEndpoint: connectionURL,
      defaultViewport: null,
    });
    console.log('Conectado a Scrapeless');

    // Abre una nueva página y navega al sitio web de destino
    const page = await browser.newPage();
    await page.goto('https://www.scrapingcourse.com/cloudflare-challenge', { waitUntil: 'domcontentloaded' });

    // Espera a que la página se cargue completamente
    await page.waitForTimeout(5000); // Ajusta el retraso si es necesario
    await page.waitForSelector('main.page-content', { timeout: 30000 });

    // Captura una captura de pantalla
    await page.screenshot({ path: 'challenge-bypass.png' });
    console.log('Captura de pantalla guardada como challenge-bypass.png');

    // Cierra el navegador
    await browser.close();
    console.log('Navegador cerrado');
  } catch (error) {
    console.error('Error:', error);
  }
})();

Paso 5: Ejecuta el script

5.1 Guarda el script

Asegúrate de que el script se guarde como bypass-cloudflare.js.

5.2 Ejecuta el script

Ejecuta el script usando Node.js:

Copy
node bypass-cloudflare.js

5.3 Salida esperada

Si todo está configurado correctamente, la terminal mostrará:

Copy
Conectado a Scrapeless
Captura de pantalla guardada como challenge-bypass.png
Navegador cerrado

El archivo challenge-bypass.png aparecerá en la carpeta de tu proyecto, confirmando que la protección de Cloudflare se ha omitido correctamente.

🌟 ¿Quieres evitar la protección de Cloudflare con facilidad?
🔑 Inicia sesión aquí y comienza a aprovechar las potentes herramientas de Scrapeless Browser hoy mismo.
🚀 ¿Necesitas orientación experta? Únete a nuestra comunidad Discord para obtener consejos exclusivos y ayuda para la resolución de problemas.
💡 ¡Adelántate en el web scraping con Scrapeless Browser: seguro, rápido y confiable!

Paso 6: Consideraciones adicionales

6.1 Uso de la clave API

  • Asegúrate de que tu clave API sea válida y no haya superado su cuota de solicitudes.

  • Nunca expongas tu clave API en repositorios públicos (por ejemplo, GitHub). Usa variables de entorno para mayor seguridad.

6.2 Configuración del proxy

  • Ajusta el parámetro proxy_country para seleccionar una ubicación diferente (por ejemplo, EE. UU. para Estados Unidos, DE para Alemania).

  • Usa un proxy_session_id consistente para mantener la misma dirección IP en las solicitudes.

6.3 Selectores de página

  • La estructura de los sitios web de destino puede variar, lo que requiere ajustes en waitForSelector().

  • Usa page.evaluate() para inspeccionar la estructura de la página y actualizar los selectores según corresponda.

Esta guía ha proporcionado un método paso a paso para usar Scrapeless y Puppeteer-core para evitar la protección de Cloudflare. Al aprovechar las conexiones WebSocket, la configuración del proxy y la supervisión de elementos, puedes automatizar eficientemente el web scraping sin que Cloudflare te bloquee.



Después de evitar correctamente el desafío de Cloudflare, puedes recuperar los encabezados de solicitud y la cookie cf_clearance de la respuesta de la página correcta. Estos elementos son cruciales para mantener la persistencia de la sesión y evitar desafíos repetidos.

javascript Copy
const cookies = await browser.cookies();
const cfClearance = cookies.find(cookie => cookie.name === 'cf_clearance')?.value;

Propósito:

  • Este código recupera todas las cookies, incluyendo cf_clearance, que es emitida por Cloudflare después de superar su desafío de seguridad.

  • La cookie cf_clearance permite que las solicitudes posteriores eviten la protección de Cloudflare, reduciendo la necesidad de desafíos repetidos.

2. Habilita la interceptación de solicitudes y captura los encabezados

javascript Copy
await page.setRequestInterception(true);
page.on('request', request => {
  // Coincide con las solicitudes de página después del desafío de Cloudflare
  if (request.url().includes('https://www.scrapingcourse.com/cloudflare-challenge') && request.headers()?.['origin']) {
    const accessRequestHeaders = request.headers();
    console.log('[access_request_headers] =>', accessRequestHeaders);
  }
  request.continue();
});

Propósito:

  • Habilita la interceptación de solicitudes (setRequestInterception(true)) para monitorear y modificar las solicitudes de red.

  • Escucha los eventos de solicitud, que se activan cada vez que Puppeteer envía una solicitud de red.

  • Identifica las solicitudes de desafío de Cloudflare:

  1. request.url().includes('https://www.scrapingcourse.com/cloudflare-challenge') asegura que solo se intercepten las solicitudes relevantes.

  2. request.headers()?.['origin'] ayuda a verificar el acceso legítimo.

  • Extrae e imprime los encabezados de solicitud, que luego se pueden usar para simular solicitudes de navegador reales.

  • Continúa la solicitud (request.continue()) para evitar interrupciones en la carga de la página.

🔍 ¿Buscas capturar y usar la cookie cf_clearance de Cloudflare de manera efectiva?
💪 Inicia sesión ahora para acceder a todas las funciones avanzadas para un scraping más fluido.

3. ¿Por qué recuperar cf_clearance y encabezados?

  • Persistencia de la sesión:
  1. La cookie cf_clearance permite que las solicitudes HTTP posteriores omitan los desafíos de Cloudflare.

  2. Esta cookie se puede reutilizar en varias solicitudes, minimizando las indicaciones de verificación.

  • Simulación de solicitudes de navegador reales:
  1. Cloudflare examina los encabezados de solicitud como User-Agent, Referer y Origin.

  2. Capturar los encabezados de una solicitud exitosa asegura que las solicitudes futuras puedan imitar el tráfico legítimo, reduciendo los riesgos de detección.

  • Eficiencia de rastreo mejorada:
  1. Estos detalles se pueden almacenar en una base de datos o archivo y reutilizarse, evitando desafíos innecesarios y optimizando las tasas de éxito de las solicitudes.

Al implementar estas técnicas, puedes mejorar la confiabilidad y eficiencia del web scraping, evitando eficazmente las medidas de seguridad de Cloudflare. 🚀


Parte 3: Cómo evitar Cloudflare Turnstile usando Scrapeless Browser


En esta parte del tutorial, aprenderemos a evitar la protección de Cloudflare Turnstile usando Scrapeless Browser con Puppeteer. Cloudflare Turnstile es un mecanismo de seguridad más avanzado que se utiliza para bloquear bots y el scraping automatizado. Con la ayuda de Scrapeless Browser, podemos evitar esta protección para interactuar con el sitio web como si fuéramos un usuario real.

Nota:
"Evitar la protección de Cloudflare" y "Evitar Cloudflare Turnstile" se dirigen a diferentes mecanismos de seguridad.

  • Evitar la protección de Cloudflare implica evitar las medidas de seguridad generales de Cloudflare, como CAPTCHA, comprobaciones de JavaScript y limitación de velocidad de IP.
  • Evitar Cloudflare Turnstile se dirige específicamente a Cloudflare Turnstile, un desafío anti-bot único que garantiza la interacción humana, sin depender del CAPTCHA tradicional. Evitar Turnstile derrota este mecanismo de seguridad específico.

Paso 1: Abre la página de destino

Comenzaremos abriendo una página web que está protegida por Cloudflare Turnstile, que normalmente requiere verificación humana. A continuación se muestra el código que abre la página web.

javascript Copy
const page = await browser.newPage();
await page.goto('https://www.scrapingcourse.com/login/cf-turnstile', { waitUntil: 'domcontentloaded' });

Este código usa page.goto() para navegar a la página y espera hasta que se haya cargado el contenido DOM.

Paso 2: Completa las credenciales de inicio de sesión

Una vez que se carga la página, podemos automatizar el proceso de completar las credenciales de inicio de sesión (como nombre de usuario y contraseña) para pasar la página de inicio de sesión.

javascript Copy
await page.locator('input[type="email"]').fill('admin@example.com');
await page.locator('input[type="password"]').fill('password');

Paso 3: Espera a que Turnstile se desbloquee

Cloudflare Turnstile funciona asegurando que solo los usuarios humanos puedan continuar. En este paso, esperaremos a que Turnstile se desbloquee verificando si se recibe la respuesta del proceso de verificación de Turnstile.

javascript Copy
await page.waitForFunction(() => {
  return window.turnstile && window.turnstile.getResponse();
});

Esta línea de código espera la respuesta de window.turnstile.getResponse(), lo que indica que la verificación de Turnstile se ha omitido correctamente.

💥 Desbloquea el contenido detrás de Cloudflare Turnstile con facilidad.
🔓 Inicia sesión para obtener acceso a potentes funciones de scraping.
💬 Únete a nuestra comunidad Discord para obtener ayuda personalizada, consejos y opiniones de los usuarios.
🚀 ¡Agiliza tu web scraping con Scrapeless Browser: supera cualquier barrera, incluidos los desafíos más difíciles de Cloudflare!

Paso 4: Toma una captura de pantalla para verificar

Para confirmar que la omisión fue exitosa, podemos tomar una captura de pantalla de la página. Esto nos ayuda a verificar que Turnstile se ha omitido correctamente.

javascript Copy
await page.screenshot({ path: 'challenge-bypass-success.png' });

Paso 5: Haz clic en el botón de inicio de sesión

Después de evitar correctamente el desafío Turnstile, podemos simular que el usuario hace clic en el botón de inicio de sesión para enviar el formulario.

javascript Copy
await page.locator('button[type="submit"]').click();
await page.waitForNavigation();

Este código hace clic en el botón enviar y espera a que la página navegue a la siguiente página después del inicio de sesión.

Paso 6: Toma otra captura de pantalla de la siguiente página

Finalmente, una vez que hayamos iniciado sesión, tomaremos otra captura de pantalla para confirmar que la navegación a la siguiente página fue exitosa.

javascript Copy
await page.screenshot({ path: 'next-page.png' });

Ejemplo de código completo

Aquí está el código completo que incorpora todos los pasos descritos anteriormente:

javascript Copy
const page = await browser.newPage();
await page.goto('https://www.scrapingcourse.com/login/cf-turnstile', { waitUntil: 'domcontentloaded' });
await page.locator('input[type="email"]').fill('admin@example.com');
await page.locator('input[type="password"]').fill('password');

// Espera a que Turnstile se desbloquee correctamente
await page.waitForFunction(() => {
  return window.turnstile && window.turnstile.getResponse();
});

// Toma una captura de pantalla después de la omisión
await page.screenshot({ path: 'challenge-bypass-success.png' });

// Haz clic en el botón de inicio de sesión
await page.locator('button[type="submit"]').click();
await page.waitForNavigation();

// Toma una captura de pantalla de la siguiente página
await page.screenshot({ path: 'next-page.png' });

Siguiendo este tutorial, has aprendido con éxito a evitar la protección de Cloudflare Turnstile usando Scrapeless Browser y Puppeteer. Este enfoque te permite interactuar con un sitio web, completar formularios de inicio de sesión y navegar por el contenido mientras se evitan los mecanismos de seguridad de Cloudflare. Puedes extender esta técnica para trabajar con otros sitios web protegidos por Turnstile.

¿Listo para dominar la omisión de Cloudflare y el web scraping con Scrapeless Browser?

🚀 Desbloquea todo el poder de Scrapeless Browser hoy mismo y comienza a evitar la protección de Cloudflare, recuperar cookies y encabezados, y evitar los desafíos de Turnstile con facilidad.

🔑 Inicia sesión aquí para acceder a funciones exclusivas y comenzar a realizar scraping con confianza.

💬 Únete a nuestra comunidad Discord para conectarte con otros expertos en scraping, obtener ayuda para la resolución de problemas y mantenerte actualizado con los últimos consejos y trucos.

💡 No te pierdas las potentes herramientas e información para llevar tu web scraping al siguiente nivel con Scrapeless Browser.

Conclusión

Evitar con éxito la seguridad de Cloudflare requiere las herramientas y estrategias correctas. Con Scrapeless Browser, puedes navegar fácilmente las defensas de Cloudflare, recuperar las cookies y encabezados necesarios y superar el desafío Turnstile sin intervención manual.

🔑 Regístrate ahora y lleva tu web scraping al siguiente nivel.

💬 ¿Necesitas ayuda? Únete a nuestra comunidad Discord para obtener información experta, soporte para la resolución de problemas y mantenerte al tanto de las últimas técnicas de web scraping.

¡No dejes que Cloudflare te frene: desbloquea el scraping sin problemas hoy mismo!

1. ¿Qué es la protección de Cloudflare y por qué bloquea a los web scrapers?

La protección de Cloudflare es un servicio de seguridad que detecta y mitiga el tráfico automatizado. Utiliza técnicas como CAPTCHA, desafíos de JavaScript y limitación de velocidad de IP para evitar que los bots accedan a contenido protegido.

2. ¿Qué es cf_clearance y cómo ayuda a evitar Cloudflare?

La cookie cf_clearance se emite después de un desafío de Cloudflare exitoso. Permite que una sesión del navegador permanezca verificada durante un período específico, evitando desafíos adicionales. Al recuperar y reutilizar esta cookie, los scrapers pueden mantener un acceso ininterrumpido.

3. ¿En qué se diferencia Cloudflare Turnstile de la protección estándar de Cloudflare?

Cloudflare Turnstile es un desafío avanzado diseñado para verificar la presencia humana sin CAPTCHA tradicionales. Utiliza análisis de comportamiento y otras técnicas de verificación para bloquear bots. Evitar Turnstile requiere flujos de trabajo automatizados que imitan las interacciones de los usuarios reales.

La legalidad de evitar Cloudflare depende de los términos de servicio y las normativas locales del sitio web. Asegúrate siempre de que tus actividades de scraping cumplan con las políticas del sitio web y las leyes aplicables.

5. ¿Cómo puedo empezar a usar Scrapeless Browser para evitar Cloudflare?

Puedes empezar iniciando sesión en Scrapeless Browser y siguiendo los pasos de esta guía para implementar soluciones de omisión automatizadas.

6. ¿Dónde puedo obtener soporte para Scrapeless Browser?

Únete a nuestra comunidad Discord para conectarte con otros desarrolladores, obtener ayuda para la resolución de problemas y mantenerte actualizado con las nuevas funciones y mejores prácticas.

Otros recursos

Cómo evitar Cloudflare con Puppeteer

Aprende a usar Puppeteer para evitar las protecciones de Cloudflare y acceder al contenido web sin activar desafíos de seguridad.

Cómo usar Undetected ChromeDriver para web scraping
Descubre técnicas para usar una instancia de Undetected ChromeDriver para evitar la detección mientras se realizan scraping en sitios web.

Cómo realizar scraping de los precios de hoteles de Google con Node.js
Guía paso a paso sobre el scraping de datos de precios de hoteles de Google usando Node.js y manejando mecanismos anti-bot de manera efectiva.

Cómo realizar scraping de datos de cotizaciones de acciones de Google Finance en Python
Un tutorial basado en Python sobre la extracción de cotizaciones de acciones de Google Finance, incluyendo el manejo de datos renderizados por JavaScript.

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