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

Cómo superar la verificación de que eres humano de Cloudflare sin quedarse atascado
Cómo pasar la verificación de que eres humano de Cloudflare sin quedarse atascado

Atascado en "verificando que eres humano" o "Desafío de Cloudflare"? Aprende las causas comunes y descubre las soluciones técnicas para que los sistemas automatizados superen la verificación cada vez.

Cloudflare
Logo of CapSolver

Sora Fujimoto

19-Jan-2026

Entendiendo el error 1010 de Cloudflare y cómo resolverlo
Entendiendo el Error 1010 de Cloudflare y Cómo Resolverlo

Aprende cómo resolver el error Cloudflare 1010, comúnmente conocido como "Acceso denegado: Mal bot". Entiende las causas detrás de este error y descubre soluciones prácticas, incluida la integración de CapSolver, para evitar las verificaciones de seguridad de Cloudflare y garantizar un acceso fluido a los sitios web.

Cloudflare
Logo of CapSolver

Nikolai Smirnov

04-Jan-2026

Cómo identificar si se requiere cData para resolver Cloudflare Turnstile usando la extensión CapSolver
Cómo identificar si cData es necesario para resolver Cloudflare Turnstile usando la extensión CapSolver

Aprende a identificar cData para cloudflare turnstile para resolver captchas de forma efectiva. Sigue nuestro guía paso a paso sobre el uso de las herramientas y técnicas de Capsolver.

Cloudflare
Logo of CapSolver

Ethan Collins

31-Dec-2025

Resolver Cloudflare Turnstile
Cómo resolver Cloudflare Turnstile

Resuelva de manera eficiente el Cloudflare Turnstile usando la API de CapSolver. Aprenda a crear tareas, gestionar proxies y recuperar resultados rápidamente para interacciones web más fluidas.

Cloudflare
Logo of CapSolver

Aloísio Vítor

24-Dec-2025

Cómo resolver el desafío de Cloudflare con Python
Cómo resolver el desafío de Cloudflare con Python

En este artículo, te mostraremos cómo resolver el desafío de Cloudflare con Python.

Cloudflare
Logo of CapSolver

Ethan Collins

19-Dec-2025

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