Latenode

Automatización invisible: uso de puppeteer-extra-plugin-stealth para eludir la protección contra bots

Aprenda a utilizar eficazmente técnicas de automatización sigilosa para eludir sistemas de detección de bots durante la navegación.

8 min de lectura
Navegador headless con técnicas de sigilo para reducir la detección de bots

¿Quiere eludir los sistemas de detección de bots mientras automatiza Chrome? puppeteer-extra-plugin-stealth es una herramienta que ayuda a ocultar las huellas de automatización, lo que dificulta que los sitios web detecten bots.

Puntos clave:

  • Qué hace: Enmascara marcadores de automatización (como navigator.webdriver) e imita el comportamiento de un navegador real.
  • Cómo funciona: Ajusta las huellas del navegador, introduce patrones de navegación naturales y gestiona los detalles de las sesiones.
  • Por qué es importante: Ayuda a evitar la detección por sistemas antibot avanzados, como los desafíos CAPTCHA y la identificación mediante huellas del navegador.
  • Configuración: Instale Puppeteer, puppeteer-extra y el plugin stealth mediante npm o Yarn. Utilice el plugin stealth para configurar su navegador de modo que se comporte como un usuario real.

Ejemplo rápido:

import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';

puppeteer.use(StealthPlugin());

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://bot.sannysoft.com');
  await browser.close();
})();

Esta herramienta es ideal para automatizar tareas en sitios web con una detección de bots estricta. Aprenda a configurarla, optimizar sus ajustes y simular comportamientos humanos para evitar ser detectado.

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

Instalación y configuración

Para comenzar, deberá instalar los paquetes necesarios y configurarlos para minimizar la detección durante la automatización. Esta sección abarca el proceso de instalación, la configuración inicial y las pruebas para garantizar que todo funcione según lo previsto.

Instalación de los paquetes necesarios

Primero, instale Puppeteer, Puppeteer Extra y el plugin Stealth. Abra su terminal y ejecute el siguiente comando:

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

Si utiliza Yarn, emplee este comando en su lugar:

yarn add puppeteer puppeteer-extra puppeteer-extra-plugin-stealth

Pasos de configuración inicial

Después de la instalación, configure su archivo JavaScript para integrar el plugin stealth. Este es el código que necesita:

import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';

puppeteer.use(StealthPlugin());

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://nowsecure.nl/');
  await browser.close();
})();

Importante: Asegúrese de importar Puppeteer desde 'puppeteer-extra' en lugar de 'puppeteer' para acceder a la funcionalidad añadida [2].

Una vez que haya completado la configuración, es el momento de verificar que todo funcione correctamente.

Pruebe su instalación

Ejecute estas pruebas para confirmar que su configuración funciona según lo esperado:

  • Prueba de funcionalidad básica: Intente navegar a un sitio que detecte bots y revise los resultados.
  • Verificación mediante captura de pantalla: Tome una captura de pantalla de la página de prueba para confirmar que las funciones stealth se aplican correctamente.
  • Comprobación de la puntuación de reCAPTCHA: Observe sus puntuaciones de reCAPTCHA v3 para determinar si hay mejoras.

Para una verificación rápida, utilice el siguiente script:

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.goto('https://bot.sannysoft.com');
  await page.waitForTimeout(5000);
  await page.screenshot({ path: 'stealth-test.png' });
  await browser.close();
})();

Este script tomará una captura de pantalla de la página de prueba. Revise la captura para comprobar si su navegador se comporta como un navegador Chrome habitual sin revelar señales de automatización.

Una vez que su configuración supere estas pruebas, estará listo para explorar las funciones avanzadas del plugin, que se abordan en la siguiente sección.

Principales funciones stealth

puppeteer-extra-plugin-stealth utiliza diversas técnicas para dificultar la detección de la navegación automatizada.

Enmascaramiento de identidad del navegador

El plugin ajusta propiedades clave del navegador para imitar un navegador Chrome habitual. Entre ellas se incluyen:

  • Sustituir el user-agent predeterminado HeadlessChrome por uno más natural
  • Configurar encabezados Accept-Language realistas
  • Ajustar la compatibilidad con códecs para la reproducción multimedia
  • Modificar navigator.vendor para que coincida con el comportamiento estándar de Chrome

Estos cambios ayudan a crear un perfil de navegador que parece corresponder a un usuario habitual, no a un bot. Además, el plugin emplea técnicas contra la identificación mediante huellas para reducir aún más el riesgo de detección.

Métodos contra la identificación mediante huellas

FunciónMétodoObjetivo
Emulación de procesadorLimita los procesadores lógicos a 4Imita el hardware habitual de un usuario
Emulación de pluginsSimula navigator.mimeTypes y pluginsImita la funcionalidad estándar de Chrome
Propiedades de ventanaAñade outerWidth y outerHeightCompleta la simulación del navegador
Propiedades del proveedorAjusta el identificador de Google de ChromeAyuda a evitar la detección de automatización

Estos métodos garantizan que el navegador se comporte de una manera alineada con lo que los sitios web esperan de usuarios reales.

Eliminación de marcadores de automatización

Para ocultar aún más la automatización, el plugin elimina o modifica señales reveladoras de actividad de bots:

  • Elimina la propiedad navigator.webdriver
  • Añade los objetos chrome.app y chrome.csi, presentes en los navegadores Chrome habituales
  • Oculta el atributo sourceurl en los scripts de Puppeteer
  • Ajusta las propiedades de permissions para que coincidan con el comportamiento natural del navegador

Gestión de CAPTCHA

El plugin también ayuda a reducir los desafíos CAPTCHA al mantener un comportamiento coherente del navegador y gestionar las sesiones de forma eficaz. Esto crea un patrón de navegación alineado con la actividad humana, lo que le permite superar la mayoría de las pruebas de detección de bots en plataformas como sannysoft.com [2]. Sin embargo, los sistemas antibot avanzados, como los utilizados por Cloudflare, aún pueden detectar la automatización en algunos casos [1].

sbb-itb-23997f1

Configuración personalizada

La configuración personalizada le permite ajustar la configuración stealth y el comportamiento del navegador, lo que le ayuda a evitar la detección de manera más eficaz.

Ajustes del módulo Stealth

Puppeteer Stealth le permite gestionar sus módulos de evasión para sitios web específicos. Puede activar o desactivar módulos según sea necesario:

const StealthPlugin = require('puppeteer-extra-plugin-stealth')
const stealth = StealthPlugin({
  webglVendor: "Google Inc. (Intel)",
  webglRenderer: "Intel Iris OpenGL Engine",
  navigator: {
    platform: "MacIntel",
    languages: ["en-US", "en"]
  }
})

Después de configurar los módulos stealth, puede ajustar el comportamiento del navegador para imitar mejor la actividad de un usuario real.

Ajustes de comportamiento del navegador

Ajuste los parámetros del navegador para imitar una experiencia de navegación auténtica:

CategoríaOpcionesObjetivo
Identidad de usuarioUser-Agent, plataforma, idiomasCrea una identidad coherente del navegador
Perfil de hardwareProveedor de WebGL, dimensiones de pantallaImita las características de un dispositivo real
Entorno de ejecuciónObjetos de tiempo de ejecución de Chrome, propiedades de NavigatorEmula el comportamiento normal del navegador

Introduzca retrasos naturales entre acciones para que la automatización sea menos detectable:

const randomDelay = (min, max) => {
  return Math.floor(Math.random() * (max - min + 1) + min);
}

await page.waitForTimeout(randomDelay(1000, 3000));

Añadir estos retrasos ayuda a que su automatización se parezca al comportamiento humano.

Configuración de proxy

El uso de proxies al iniciar el navegador mejora el anonimato:

const browser = await puppeteer.launch({
  args: [
    `--proxy-server=http://proxy.example.com:8080`,
    '--disable-features=IsolateOrigins,site-per-process'
  ]
});

"Probablemente sea imposible impedir todas las formas de detectar Chromium headless, pero debería ser posible dificultarlo tanto que deje de ser rentable o genere demasiados falsos positivos como para resultar viable." - TiZho, colaborador de GitHub [3]

Rote los proxies y configure una conmutación por error automática para mantener una conectividad fiable. Estas configuraciones ayudan a minimizar los riesgos de detección al tiempo que garantizan un rendimiento estable.

Prácticas recomendadas de stealth

Para mantener las sesiones automatizadas fuera del radar, es fundamental planificar y ejecutar cuidadosamente.

Patrones de navegación naturales

Simule una navegación realista añadiendo retrasos y acciones aleatorias:

async function emulateHumanBehavior(page) {
  // Random scrolling behavior
  await page.evaluate(() => {
    window.scrollBy({
      top: Math.random() * 500,
      behavior: 'smooth'
    });
  });

  // Random pauses between actions
  await page.waitForTimeout(1500 + Math.random() * 2500);
}
Patrón de comportamientoImplementaciónObjetivo
Movimiento del ratónCurvas y velocidades aleatoriasImita el movimiento natural del cursor
Interacción con la páginaVaría la profundidad de desplazamiento y las pausasSimula hábitos de lectura
Tiempo de navegaciónRetrasos aleatorios (1,5–4 segundos)Evita patrones de tiempo predecibles
Velocidad de entradaIntervalos de pulsación aleatorizadosImita el comportamiento de escritura humano

Estas interacciones simuladas funcionan junto con los ajustes de configuración descritos anteriormente.

Gestión de sesiones

Una gestión adecuada de las sesiones garantiza que los ajustes stealth se mantengan coherentes. Utilice almacenamiento persistente para guardar cookies y datos de sesión:

const browserContext = await browser.createIncognitoBrowserContext({
  userDataDir: './sessions/user1',
  persistentContext: true
});

También puede gestionar las cookies de forma eficaz:

// Remove specific cookies but keep session-critical data
await page.deleteCookie({
  name: '_ga',
  domain: '.example.com'
});

Pautas de uso

Combine las técnicas anteriores con estos pasos prácticos para mejorar la automatización:

  • Gestión de la frecuencia de solicitudes: Comience con un retraso de 2 segundos entre solicitudes y auméntelo si aparecen CAPTCHAs.

  • Gestión de errores: Cree un sistema de reintentos para gestionar solicitudes fallidas:

    const maxRetries = 3;
    const baseDelay = 2000;
    
    async function fetchWithRetry(page, url) {
      for (let i = 0; i < maxRetries; i++) {
        try {
          return await page.goto(url);
        } catch (error) {
          await page.waitForTimeout(baseDelay * Math.pow(2, i));
        }
      }
    }
    
  • Rotación de proxies: Utilice varias direcciones IP para evitar que se le marque por actividad excesiva.

"Probablemente sea imposible impedir todas las formas de detectar Chromium headless, pero debería ser posible dificultarlo tanto que deje de ser rentable o genere demasiados falsos positivos como para resultar viable." - TiZho, colaborador de GitHub [3]

Supervise la evolución de los métodos de detección antibot y ajuste sus configuraciones según sea necesario. Estas prácticas complementan las técnicas stealth abordadas anteriormente en el artículo.

Conclusión

A continuación, encontrará un resumen rápido de los puntos principales y los consejos para utilizar Puppeteer-extra-plugin-stealth de forma eficaz.

Principales ventajas

Puppeteer-extra-plugin-stealth ayuda a automatizar la navegación sin ser marcado. Funciona ocultando marcadores de automatización mediante módulos de evasión integrados [2].

Algunas funciones clave incluyen:

  • Eliminar el identificador 'HeadlessChrome' de los encabezados User-Agent.
  • Ocultar marcadores de automatización críticos, como navigator.webdriver.
  • Ajustar las huellas del navegador para imitar el comportamiento de usuarios reales.
  • Permitir estrategias de evasión adaptadas a las necesidades específicas de cada sitio web.

Consejos de implementación

Para perfeccionar su configuración de automatización, tenga en cuenta estas estrategias:

Área de enfoqueEstrategiaResultado
Módulos de evasiónActive solo las funciones que necesitaMenor riesgo de detección y mejor rendimiento
Gestión de erroresUtilice lógica de reintentos con retroceso exponencialGestión más fiable de problemas temporales
Gestión de sesionesUtilice contextos de navegador persistentesPerfil stealth coherente entre sesiones

Sugerencias adicionales:

  • Comience con los ajustes stealth predeterminados y, después, ajústelos según sus necesidades.
  • Manténgase al día sobre nuevas técnicas antibot y adapte su enfoque en consecuencia.
  • Combine las funciones stealth con comportamientos de navegación naturales para obtener mejores resultados.
  • Priorice una gestión coherente de las sesiones para evitar la detección.

Aunque ninguna configuración es infalible al 100 %, combinar múltiples tácticas de evasión dificulta mucho más la detección. El éxito depende de una configuración cuidadosa y de actualizaciones periódicas de sus métodos. Estos consejos, junto con las funciones del plugin, crean una base sólida para una automatización indetectable.

References

FAQ

Frequently Asked Questions

Es un complemento de Puppeteer que oculta huellas de automatización, como navigator.webdriver, e imita el comportamiento de un navegador real para dificultar la detección de Chrome headless por parte de sistemas antibots.

¿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