Latenode

Estrategias para sortear la protección de Cloudflare con Puppeteer

Conozca técnicas eficaces para sortear de forma ética las protecciones de Cloudflare con Puppeteer, incluida la gestión de proxies y la simulación del comportamiento humano.

5 min de lectura
Navegador automatizado con Puppeteer frente a la protección de Cloudflare

Las medidas de seguridad de Cloudflare dificultan que los bots accedan a los sitios web. Sin embargo, con Puppeteer, puede eludir estas defensas si lo hace de manera ética. Aquí tiene una guía rápida para empezar:

  • Técnicas principales:

    • Utilice proxies residenciales y rótelos para evitar la detección.
    • Imite el comportamiento humano con retrasos aleatorios y movimientos del ratón.
    • Gestione los desafíos de JavaScript y los CAPTCHAs mediante plugins como puppeteer-extra-plugin-recaptcha.
    • Disimule la automatización ajustando las huellas del navegador y los agentes de usuario.
  • Configuración de Puppeteer:

    • Instale Puppeteer y los plugins:

      npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
      
    • Añada ajustes de sigilo para evitar la detección:

      const puppeteer = require('puppeteer-extra');
      const StealthPlugin = require('puppeteer-extra-plugin-stealth');
      puppeteer.use(StealthPlugin());
      
  • Recordatorio legal: Respete siempre los términos de servicio del sitio web, evite sobrecargar los servidores y utilice la automatización de forma responsable.

Estos pasos pueden mejorar su tasa de éxito frente a las protecciones de Cloudflare. Consulte el artículo para ver fragmentos de código detallados y técnicas avanzadas.

Tutorial de Nodejs Puppeteer n.º 7: eludir la detección mediante...

Guía de configuración de Puppeteer

Siga estos pasos para configurar Puppeteer con ajustes y plugins personalizados para sortear las protecciones de Cloudflare.

Pasos básicos de instalación de Puppeteer

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

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

Después, 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());

Tras ello, deberá ajustar la configuración de inicio del navegador para evitar la detección.

Ajustes necesarios de Puppeteer

Configure su instancia del navegador con opciones que reduzcan la probabilidad 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 ocultar su IP, incluya estos ajustes 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 plugins:

Nombre del pluginFinalidadFunciones principales
puppeteer-extra-plugin-stealthAntidetecciónModifica la huella del navegador e imita el comportamiento humano
puppeteer-extra-plugin-recaptchaGestión de CAPTCHAAutomatiza la resolución de CAPTCHA
puppeteer-extra-plugin-adblockerGestión de recursosBloquea 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 sus acciones parezcan más naturales, introduzca 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 gestionar la seguridad de Cloudflare

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

Gestión de la identidad del navegador

El sistema antibots de Cloudflare supervisa las huellas de los navegadores y las señales de automatización. Para disimular la actividad de Puppeteer, ajuste los identificadores y 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 de navegador estándar, lo que ayuda a superar las comprobaciones de Cloudflare.

Soluciones para desafíos de JavaScript

Gestionar los desafíos de JavaScript de Cloudflare requiere simular un comportamiento similar al humano. Por ejemplo, puede esperar a que desaparezca el formulario del desafío e introducir retrasos aleatorios entre las 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 puede crear controladores personalizados para imitar mejor el comportamiento del usuario según sea necesario. A continuación, necesitará una estrategia para gestionar los CAPTCHAs.

Opciones de gestión de CAPTCHA

Cuando se enfrenta a CAPTCHAs, utilizar un plugin 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 plugin no logra resolver el CAPTCHA, puede recurrir a la rotación de proxies 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 sortear los desafíos CAPTCHA y mantener el acceso, incluso cuando las herramientas de automatización encuentran obstáculos.

Consejos y directrices de fiabilidad

Implementar técnicas fiables es fundamental para garantizar el éxito de la automatización.

Configuración y uso de proxies

El uso de proxies bien gestionados puede ayudar a reducir considerablemente los riesgos de detección. Por ejemplo, los proxies residenciales prémium ofrecen mejores capacidades para sortear bloqueos. Este es 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')}`
        }
    });
});

Rotar los proxies con regularidad 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 la sincronización de solicitudes

Simular un comportamiento similar al humano puede minimizar los riesgos de detección. Así puede 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 una gestión adecuada de las sesiones, hacen que los esfuerzos de automatización sean más fiables.

Gestión de cookies y sesiones

Gestionar las cookies de forma eficaz es crucial para mantener la continuidad de las sesiones. Así puede 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 falla la validación de las cookies, puede 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

Para finalizar, destaquemos las principales técnicas y pasos que hemos abordado.

Resumen de técnicas clave

Superar la protección de Cloudflare requiere una combinación de métodos que funcionen conjuntamente. Las estrategias más importantes incluyen:

  • Utilizar proxies residenciales con una rotación adecuada
  • Gestionar las huellas del navegador y los agentes de usuario
  • Gestionar eficazmente las cookies y las sesiones
  • Imitar el comportamiento humano con retrasos aleatorios
  • Configurar encabezados de solicitud precisos
  • Gestionar correctamente la autenticación

Según datos del sector, combinar estas técnicas puede generar tasas de éxito de hasta el 98,7 % cuando se optimizan las condiciones [1].

Al centrarse en estos métodos fundamentales, puede crear un proceso de automatización fiable y conforme con las normas.

Pasos para la implementación

Estos son algunos consejos finales para perfeccionar su configuración de Puppeteer y sus esfuerzos para sortear Cloudflare:

  • Comience con configuraciones básicas de Puppeteer
  • Rote los proxies de forma estratégica
  • Configure mecanismos sólidos de gestión de errores
  • Revise los términos de servicio del sitio objetivo antes de empezar
  • Mantenga tasas de solicitud moderadas para evitar activar las defensas
  • Documente sus flujos de automatización

Puppeteer requiere una configuración cuidadosa y ajustes periódicos para seguir siendo eficaz frente a las defensas en evolución de Cloudflare. A medida que las medidas de seguridad se vuelven más avanzadas, el éxito dependerá de actualizaciones continuas de su estrategia y de un estricto cumplimiento de las prácticas éticas. Aunque las configuraciones iniciales pueden funcionar bien, mantener el rendimiento a largo plazo implica conservar la flexibilidad y seguir directrices claras.

References

FAQ

Frequently Asked Questions

El artículo recomienda puppeteer-extra con puppeteer-extra-plugin-stealth para modificar la huella digital del navegador, puppeteer-extra-plugin-recaptcha para gestionar CAPTCHA y puppeteer-extra-plugin-adblocker para bloquear anuncios y rastreadores que pueden aumentar el riesgo de detección.

¿Te resultó útil? Compártelo →

Escrito por

Vasiliy Datsenko

Jefe de Soporte al Cliente

Vasiliy Datsenko es Jefe de Soporte al Cliente en Latenode y un escritor de automatización centrado en productos. Su trabajo conecta las conversaciones con los clientes, la investigación sobre automatización de flujos de trabajo, los casos de uso de IA y la educación práctica sobre productos para equipos que intentan automatizar procesos comerciales reales.

Perfil del autor →

Verificado por

Oleg Zankov

CEO Latenode, No-code Expert

Con una ética arraigada en la innovación, la resolución de problemas y la experiencia de usuario, me enfoco en capacitar a los equipos para crear integraciones personalizadas y automatizar flujos de trabajo con facilidad y eficiencia. Trayendo una gran experiencia en desarrollo empresarial, emprendimiento tecnológico y desarrollo de software, reconocí la necesidad de una solución de integración más accesible, escalable y adaptable. Así nació Latenode.com. Con nuestra plataforma, las empresas pueden aprovechar el poder de la tecnología sin necesidad de conocimientos extensos de codificación. Apasionado por fomentar un futuro donde la tecnología nos sirva, y no al revés, mi misión es simplificar procesos complejos. Creo en democratizar la tecnología y equipar a los equipos con las herramientas para innovar, crecer y tener éxito en un mundo cada vez más digital.

Perfil del autor →

Seguir leyendo