Una plataforma de código bajo que combina la simplicidad sin código con el poder del código completo 🚀
Empieza ahora gratis
Estrategias para eludir la protección de Cloudflare con Puppeteer
Marzo 26, 2025
6
min leer

Estrategias para eludir la protección de Cloudflare con Puppeteer

George Miloradovich
Investigador, redactor y entrevistador de casos prácticos
Tabla de contenidos.

CloudflareLas medidas de seguridad dificultan que los bots accedan a los sitios web. Pero con TitiriteroPuedes eludir estas defensas si lo haces de forma ética. Aquí tienes una guía rápida para empezar:

  • Técnicas básicas:
    • Use proxies residenciales y rotarlos para evitar ser detectados.
    • Imitar el comportamiento humano con retrasos aleatorios y movimientos del mouse.
    • Manejar Desafíos de JavaScript y CAPTCHA usando complementos como puppeteer-extra-plugin-recaptcha.
    • Disimular la automatización mediante ajustes huellas dactilares del navegador y agentes de usuario.
  • Configuración del titiritero:
    • Instalar Puppeteer y complementos:
      npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
      
    • Agregue configuraciones ocultas para evitar ser detectado:
      const puppeteer = require('puppeteer-extra');
      const StealthPlugin = require('puppeteer-extra-plugin-stealth');
      puppeteer.use(StealthPlugin());
      
  • Recordatorio legalRespete siempre los términos de servicio del sitio web, evite sobrecargar los servidores y utilice la automatización de manera responsable.

Estos pasos pueden mejorar tu probabilidad de éxito frente a las protecciones de Cloudflare. Consulta el artículo para obtener fragmentos de código detallados y técnicas avanzadas.

Nodejs Titiritero Tutorial #7 - Detección de bypass usando ...

Titiritero

Guía de configuración de Puppeteer

Siga estos pasos para configurar Puppeteer con configuraciones y complementos personalizados para navegar por las protecciones de Cloudflare.

Pasos básicos de instalación de Puppeteer

Primero, asegúrate de tener Node.js Tiene instalada la versión 18 o posterior. A continuación, ejecute el siguiente comando para instalar Puppeteer y sus complementos relacionados:

npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

A continuación, cree un nuevo archivo JavaScript e importe los módulos necesarios:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

Después de esto, necesitarás ajustar la configuración de inicio del navegador para evitar la detección.

Configuraciones requeridas de Puppeteer

Configure su instancia de navegador con configuraciones que reduzcan la posibilidad de ser marcado:

const browser = await puppeteer.launch({
    headless: false,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-position=0,0',
        '--ignore-certificate-errors',
        '--ignore-certificate-errors-spki-list'
    ]
});

Si desea utilizar un proxy para enmascarar su IP, incluya estas configuraciones adicionales:

const browser = await puppeteer.launch({
    args: [
        '--proxy-server=http://proxy-address:port'
    ]
});

await page.authenticate({
    username: 'proxy-username',
    password: 'proxy-password'
});

Complementos útiles de Puppeteer

Mejore la funcionalidad de Puppeteer con estos complementos:

Plugin Name Propósito Características
titiritero-extra-plugin-sigilo Anti-detección Modifica las huellas dactilares del navegador e imita el comportamiento humano.
recaptcha del complemento extra de puppeteer Manejo de CAPTCHA Automatiza la resolución de CAPTCHA
titiritero-extra-plugin-bloqueador de anuncios Gestión de recursos Bloquea anuncios y rastreadores para reducir los riesgos de detección.

Para integrar estos complementos, utilice el siguiente código:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
const AdblockerPlugin = require('puppeteer-extra-plugin-adblocker');

puppeteer.use(StealthPlugin());
puppeteer.use(AdblockerPlugin({ blockTrackers: true }));

Por último, para que tus acciones parezcan más naturales, introduce retrasos aleatorios entre ellas:

const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
await delay(Math.random() * 1000 + 1000); // Random delay between 1-2 seconds
sbb-itb-23997f1

Métodos para manejar Cloudflare Seguridad

Cloudflare

Mejore su configuración de Puppeteer con estas técnicas para navegar mejor por las defensas de Cloudflare.

Gestión de identidad del navegador

El sistema antibots de Cloudflare monitorea las huellas dactilares del navegador y las señales de automatización. Para ocultar la actividad de Puppeteer, modifique los identificadores y las propiedades del navegador como se muestra a continuación:

const browser = await puppeteer.launch({
    args: [
        '--window-size=1920,1080',
        '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
    ],
    ignoreDefaultArgs: ['--enable-automation']
});

await page.evaluateOnNewDocument(() => {
    delete navigator.webdriver;
    Object.defineProperty(navigator, 'plugins', {
        get: () => [1, 2, 3, 4, 5]
    });
});

Esta configuración elimina los indicadores de automatización e imita una huella digital del navegador estándar, lo que ayuda a eludir las comprobaciones de Cloudflare.

Soluciones al desafío de JavaScript

Para abordar los desafíos de JavaScript de Cloudflare es necesario simular un comportamiento similar al humano. Por ejemplo, puedes esperar a que el formulario de desafío desaparezca e introducir retrasos aleatorios entre acciones:

// Wait until the Cloudflare challenge form is gone
await page.waitForFunction(() => {
    return document.querySelector('#challenge-form') === null;
}, { timeout: 30000 });

// Add random delays to simulate human interaction
const randomDelay = (min, max) => {
    return Math.floor(Math.random() * (max - min + 1) + min);
};
await page.waitForTimeout(randomDelay(1000, 3000));

También puedes crear controladores personalizados para simular mejor el comportamiento del usuario según sea necesario. A continuación, necesitarás una estrategia para gestionar los CAPTCHA.

Opciones de gestión de CAPTCHA

Cuando se enfrenta a CAPTCHAs, el uso de un complemento de resolución de CAPTCHA puede simplificar el proceso:

const RecaptchaPlugin = require('puppeteer-extra-plugin-recaptcha');
puppeteer.use(
    RecaptchaPlugin({
        provider: {
            id: '2captcha',
            token: 'your-api-key'
        }
    })
);

Si el complemento no logra resolver el CAPTCHA, puede cambiar a la rotación de proxy como alternativa:

try {
    await page.solveRecaptchas();
} catch (e) {
    // Rotate to a new proxy if CAPTCHA solving fails
    await page.setRequestInterception(true);
    await useNextProxy();
}

Estos métodos le ayudan a superar los desafíos de CAPTCHA y a mantener el acceso, incluso cuando las herramientas de automatización encuentran obstáculos.

Consejos y pautas de confiabilidad

La implementación de técnicas confiables es clave para garantizar el éxito en la automatización.

Configuración y uso del proxy

El uso de proxies bien administrados puede ayudar a reducir significativamente el riesgo de detección. Por ejemplo, los proxies residenciales premium ofrecen mejores capacidades de evasión. A continuación, se muestra un ejemplo de configuración:

const browser = await puppeteer.launch({
    args: [
        `--proxy-server=${proxyAddress}`,
        '--no-sandbox',
        '--disable-setuid-sandbox'
    ]
});

// Handle proxy authentication
await page.setRequestInterception(true);
page.on('request', request => {
    request.continue({
        headers: {
            ...request.headers(),
            'Proxy-Authorization': `Basic ${Buffer.from(
                `${proxyUsername}:${proxyPassword}`
            ).toString('base64')}`
        }
    });
});

La rotación regular de servidores proxy también ayuda a mantener un acceso ininterrumpido:

const proxyList = [
    'proxy1.example.com:8080',
    'proxy2.example.com:8080',
    'proxy3.example.com:8080'
];

function getNextProxy() {
    const proxy = proxyList.shift();
    proxyList.push(proxy);
    return proxy;
}

Control de tiempo de solicitud

Simular un comportamiento similar al humano puede minimizar el riesgo de detección. Así es como puedes gestionar eficazmente la sincronización de las solicitudes:

const simulateHumanBehavior = async (page) => {
    // Add random mouse movements
    await page.mouse.move(100, 200);
    await page.mouse.move(150, 250, { steps: 10 });

    // Randomize typing speed
    await page.keyboard.type('Hello World', { 
        delay: Math.floor(Math.random() * (150 - 50) + 50) 
    });

    // Add pauses
    await page.waitForTimeout(
        Math.floor(Math.random() * (3000 - 1000) + 1000)
    );
};

Estas técnicas, combinadas con un manejo adecuado de las sesiones, hacen que los esfuerzos de automatización sean más confiables.

Gestionar las cookies eficazmente es crucial para mantener la continuidad de la sesión. A continuación, le indicamos cómo almacenar y restaurar sesiones:

// Store successful session cookies
const storeCookies = async (page) => {
    const cookies = await page.cookies();
    await fs.writeFile(
        'cookies.json',
        JSON.stringify(cookies, null, 2)
    );
};

// Restore previous session
const loadCookies = async (page) => {
    try {
        const cookiesString = await fs.readFile('cookies.json');
        const cookies = JSON.parse(cookiesString);
        await page.setCookie(...cookies);
    } catch (error) {
        console.log('No stored cookies found');
    }
};

Si las cookies no pasan la validación, puedes actualizarlas automáticamente:

const validateCookies = async (page) => {
    const response = await page.goto(targetUrl);
    if (response.status() === 403) {
        await clearCookies(page);
        await initializeNewSession(page);
    }
};

Conclusión

Terminemos destacando las principales técnicas y pasos que hemos cubierto.

Resumen de técnicas clave

Para superar la protección de Cloudflare se requiere una combinación de métodos. Las estrategias más importantes incluyen:

  • Uso de proxies residenciales con rotación adecuada
  • Administrar huellas dactilares del navegador y agentes de usuario
  • Manejo eficaz de cookies y sesiones
  • Imitando el comportamiento humano con retrasos aleatorios
  • Configuración de encabezados de solicitud precisos
  • Gestionar correctamente la autenticación

Según datos de la industria, la combinación de estas técnicas puede conducir a tasas de éxito de hasta el 98.7 % cuando se optimizan las condiciones.

Al centrarse en estos métodos centrales, puede crear un proceso de automatización confiable y compatible.

Pasos para la implementación

A continuación, se ofrecen algunos consejos finales para refinar su configuración de Puppeteer y sus esfuerzos para evitar Cloudflare:

  • Comience con las configuraciones básicas de Puppeteer
  • Rotar los proxies de forma inteligente
  • Establecer mecanismos sólidos de gestión de errores
  • Consulte los términos de servicio del sitio de destino antes de comenzar
  • Mantenga las tasas de solicitud moderadas para evitar activar las defensas.
  • Documente sus flujos de trabajo de automatización

Puppeteer requiere una configuración cuidadosa y ajustes regulares para mantener su eficacia frente a las cambiantes defensas de Cloudflare. A medida que las medidas de seguridad se vuelven más avanzadas, el éxito dependerá de las actualizaciones continuas de su estrategia y del estricto cumplimiento de las prácticas éticas. Si bien las configuraciones iniciales pueden funcionar bien, para mantener el rendimiento a largo plazo es necesario ser flexible y seguir directrices claras.

Artículos relacionados con

Blogs relacionados

Caso de uso

Respaldado por