CAPSOLVER
Blog
Cómo resolver el desafío de Cloudflare con Node.JS

Cómo resolver el desafío de Cloudflare con Node.js

Logo of CapSolver

Adélia Cruz

Neural Network Developer

03-Dec-2025

Introducción

¿Tus scripts de automatización en Node.js se bloquean constantemente por Cloudflare? No estás solo. Los poderosos mecanismos de seguridad de Cloudflare, como sus desafíos de JavaScript y el modo "I'm Under Attack", son efectivos para detener bots, pero también pueden detener tareas legítimas de raspado de web y extracción de datos. Estas verificaciones de seguridad validan a los visitantes ejecutando pruebas en segundo plano que a menudo fallan los scripts automatizados.

Este guía te mostrará cómo superar este obstáculo. Recorreremos un proceso claro y paso a paso utilizando Node.js y el servicio CapSolver para resolver eficientemente los desafíos de Cloudflare y obtener el token necesario cf_clearance para un acceso fluido.

⚙️ Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente listo:

  • Un proxy funcional: Esto es crucial para resolver los desafíos de Cloudflare. Se recomienda encarecidamente usar proxies de ISP o residenciales, ya que sus direcciones IP son menos propensas a ser marcadas.
  • Node.js instalado: Asegúrate de que Node.js esté instalado en tu sistema.
  • Clave de API de CapSolver: Necesitarás una cuenta en CapSolver para obtener una clave de API. CapSolver es un servicio basado en inteligencia artificial diseñado para manejar diversos CAPTCHAS y desafíos de bots.

🤖 Paso 1: Instalar los paquetes necesarios de Node.js

Primero, necesitamos instalar la biblioteca axios para realizar solicitudes HTTP. Abre tu terminal y ejecuta el siguiente comando:

bash Copy
npm install axios

👨‍💻 Paso 2: Escribir código en Node.js para resolver el desafío de Cloudflare

Aquí tienes el código de ejemplo para resolver el desafío de Cloudflare y obtener el token cf_clearance utilizando Node.js y la API de CapSolver. Este código muestra cómo crear una AntiCloudflareTask y consultar el resultado.

Código actualizado en Node.js

Este código incorpora las últimas prácticas de la documentación oficial de CapSolver, con una estructura más limpia y comentarios necesarios.

javascript Copy
const axios = require('axios');

// -------------------POR FAVOR MODIFICA ESTOS VALORES-------------------
// Tus detalles de proxy en el formato: http://usuario:contraseña@ip:púerto
const PROXY = 'http://usuario:contraseña@ip:púerto'; 
// Tu clave de API desde el Panel de CapSolver
const CAPSOLVER_API_KEY = 'TuAPIKEY';
// La URL del sitio web objetivo donde quieres resolver el desafío de Cloudflare
const PAGE_URL = 'https://www.tusitio.com';
// ----------------------------------------------------------------


/**
 * Crea una tarea para resolver el desafío de Cloudflare usando la API de CapSolver.
 * @param {string} websiteURL - La URL del sitio web objetivo.
 * @param {string} proxy - El proxy a usar.
 * @returns {Promise<string|null>} - El ID de la tarea, o null si falla la creación.
 */
async function createCloudflareTask(websiteURL, proxy) {
    console.log('Creando tarea de Cloudflare para CapSolver...');
    try {
        const response = await axios.post('https://api.capsolver.com/createTask', {
            clientKey: CAPSOLVER_API_KEY,
            task: {
                type: 'AntiCloudflareTask',
                websiteURL: websiteURL,
                proxy: proxy
            }
        });
        if (response.data.errorId > 0) {
            console.error(`Falló la creación de la tarea: ${response.data.errorDescription}`);
            return null;
        }
        console.log(`Tarea creada correctamente. ID de tarea: ${response.data.taskId}`);
        return response.data.taskId;
    } catch (error) {
        console.error(`Ocurrió un error al crear la tarea: ${error}`);
        return null;
    }
}

/**
 * Consulta el resultado de la tarea.
 * @param {string} taskId - El ID de la tarea devuelto por CapSolver.
 * @returns {Promise<object|null>} - El objeto de solución, o null si falla.
 */
async function getTaskResult(taskId) {
    console.log(`Obteniendo resultado para el ID de tarea ${taskId}...`);
    let solution = null;

    while (!solution) {
        await new Promise(resolve => setTimeout(resolve, 3000)); // Esperar 3 segundos

        try {
            const response = await axios.post('https://api.capsolver.com/getTaskResult', {
                clientKey: CAPSOLVER_API_KEY,
                taskId: taskId
            });

            if (response.data.errorId > 0) {
                console.error(`Falló obtener el resultado: ${response.data.errorDescription}`);
                return null;
            }

            if (response.data.status === 'ready') {
                console.log('Solución obtenida correctamente!');
                solution = response.data.solution;
            } else if (response.data.status === 'processing') {
                console.log('La tarea aún está en proceso, por favor espere...');
            } else if (response.data.status === 'failed') {
                console.error(`Falló el procesamiento de la tarea: ${response.data.errorDescription}`);
                return null;
            }
        } catch (error) {
            console.error(`Ocurrió un error al obtener el resultado: ${error}`);
            return null;
        }
    }
    return solution;
}

/**
 * Función principal para ejecutar todo el proceso.
 */
async function main() {
    console.log('Iniciando para resolver el desafío de Cloudflare...');
    
    const taskId = await createCloudflareTask(PAGE_URL, PROXY);
    if (!taskId) {
        console.log('No se pudo crear la tarea, saliendo.');
        return;
    }

    const solution = await getTaskResult(taskId);
    if (!solution) {
        console.log('No se pudo recuperar la solución, saliendo.');
        return;
    }

    console.log('Detalles de la solución obtenidos:');
    console.log(solution);

    // Ahora puedes usar las cookies y el user-agent obtenidos para acceder al sitio web objetivo.
    // El objeto de solución contiene 'url', 'status', 'headers', 'cookies', 'userAgent'.
    
    // Ejemplo: Cómo usar las cookies y el user-agent obtenidos para hacer una solicitud
    try {
        const cfCookie = solution.cookies.map(cookie => `${cookie.name}=${cookie.value}`).join('; ');
        
        console.log('\nAccediendo a la página objetivo con las cookies y el user-agent obtenidos...');
        const pageResponse = await axios.get(PAGE_URL, {
            headers: {
                'User-Agent': solution.userAgent,
                'Cookie': cfCookie
            },
            // Se recomienda usar una instancia de axios con proxy dedicado para solicitudes posteriores.
            proxy: false, 
        });

        console.log(`\nAcceso exitoso! Código de estado de la página: ${pageResponse.status}`);
        // console.log('Contenido de la página:', pageResponse.data); // Descomentar para ver el contenido de la página

    } catch (error) {
        console.error(`\nError al acceder a la página con la solución: ${error.response ? error.response.status : error.message}`);
    }
}

main();

⚠️ Variables importantes que modificar

Antes de ejecutar el código, asegúrate de modificar las siguientes variables:

  • PROXY: Reemplázalo con la dirección y credenciales de tu servidor proxy. El formato debe ser http://usuario:contraseña@ip:púerto.
  • CAPSOLVER_API_KEY: Encuentra tu clave de API en el Panel de CapSolver y reemplaza el marcador de posición.
  • PAGE_URL: Reemplázalo con la URL del sitio web objetivo protegido por Cloudflare.

Conclusión

Al integrar CapSolver, los desarrolladores pueden automatizar el complejo proceso de manejar desafíos de Cloudflare dentro de sus aplicaciones en Node.js. Este enfoque no solo tiene una alta tasa de éxito, sino que también te libera de lidiar con políticas de seguridad en constante cambio. Simplemente llamas a una API y recibes el token cf_clearance y un User-Agent coincidente, permitiendo un acceso fluido a tu sitio web objetivo. Esta estrategia es esencial para cualquier proyecto que requiera recolección de datos estable y a gran escala. Para aquellos interesados en un enfoque más profundo, nuestro guía sobre cómo resolver el desafío de 5 segundos de Cloudflare proporciona detalles técnicos adicionales.

Preguntas frecuentes (FAQ)

P1: ¿Por qué necesito usar un proxy?
R1: Cloudflare monitorea las direcciones IP en busca de actividad inusual. Una sola IP que realice muchas solicitudes puede ser marcada como bot. Usar proxies de alta calidad con rotación (como proxies residenciales o de ISP) imita el comportamiento de un usuario real y aumenta significativamente tu tasa de éxito.

P2: ¿Cuánto dura la validez del token cf_clearance?
R2: Un token cf_clearance suele ser válido durante unas horas, aunque la duración exacta depende de la configuración de Cloudflare del sitio web. Una vez que expire, debes ejecutar el proceso nuevamente para obtener un nuevo token.

P3: ¿Puedo usar la cookie obtenida en mi raspador?
R3: Sí. Después de obtener la solución de CapSolver, debes incluir la cookie cf_clearance y el User-Agent coincidente en todas las solicitudes HTTP posteriores. Es crucial usar la misma IP de proxy que se usó para generar el token. Aunque este guía se enfoca en Node.js, los mismos principios se aplican a otros lenguajes. Por ejemplo, puedes aprender cómo resolver Cloudflare con Python y Selenium en nuestro otro artículo.

P4: ¿Qué otros tipos de CAPTCHAS puede manejar CapSolver?
R4: CapSolver admite una amplia gama de desafíos más allá de Cloudflare, incluyendo diversas versiones de reCAPTCHA y CAPTCHAS basados en imágenes. Para mantenerte actualizado sobre las soluciones más efectivas, puedes consultar nuestras clasificaciones de mejores solucionadores de desafíos de Cloudflare. Para una lista completa de tipos compatibles, lo mejor es consultar la documentación oficial de CapSolver.

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse

Desafío de Cloudflare vs Turnstile de CapSolver
Desafío de Cloudflare frente a Turnstile: Diferencias clave y cómo identificarlas

Entienda las diferencias clave entre el desafío de Cloudflare vs Turnstile y aprenda a identificarlos para una automatización web exitosa. Obtenga consejos de expertos y un solucionador recomendado.

Cloudflare
Logo of CapSolver

Ethan Collins

10-Dec-2025

Cómo resolver Cloudflare al scraping web en 2026 | Guía paso a paso
Cómo resolver Cloudflare al hacer scraping web en 2026 | Guía paso a paso

Este artículo de blog explora técnicas efectivas para resolver estas defensas con la ayuda de CapSolver, una herramienta experta en resolver CAPTCHAs. Desde explicar los protocolos de seguridad de Cloudflare hasta proporcionar estrategias prácticas y ejemplos de código para evadir estas restricciones.

Cloudflare
Logo of CapSolver

Ethan Collins

09-Dec-2025

Cómo resolver el Captcha de Cloudflare Turnstile con NodeJS
Cómo resolver el Captcha de Cloudflare Turnstile con NodeJS

En este artículo, te mostraremos cómo resolver el captcha de cloudflare turnstile con NodeJS.

Cloudflare
Logo of CapSolver

Rajinder Singh

08-Dec-2025

Cloudflare 403 prohibido
Cómo resolver el error 403 Prohibido y 522/1020/1010/1015/1012

Cloudflare es un servicio de red de entrega de contenido (CDN) y seguridad ampliamente utilizado que ayuda a los sitios web a mitigar diversos tipos de amenazas, incluyendo ataques DDoS y bots abusivos...

Cloudflare
Logo of CapSolver

Lucas Mitchell

08-Dec-2025

Error de Cloudflare 1006, 1007, 1008
Error de Cloudflare 1006, 1007, 1008 Solución para resolver | Cómo arreglarlo

¿Tienes problemas con errores de Cloudflare 1006, 1007 o 1008? Aprende soluciones prácticas para resolver estos rechazos de acceso y mejorar tu experiencia de rastreo web.

Cloudflare
Logo of CapSolver

Ethan Collins

05-Dec-2025

Cómo identificar si la `action` es requerida para resolver Cloudflare Turnstile usando la extensión CapSolver
Cómo identificar si `action` es necesario para resolver Cloudflare Turnstile usando la extensión de CapSolver

Aprende a identificar la acción para resolver eficazmente el captcha de Cloudflare Turnstile. Sigue nuestra guía paso a paso sobre cómo usar las herramientas y técnicas de Capsolver.

Cloudflare
Logo of CapSolver

Adélia Cruz

05-Dec-2025