Una plataforma de código bajo que combina la simplicidad sin código con el poder del código completo 🚀
Empieza ahora gratis
Configuración del modo sin cabeza en Puppeteer: equilibrio entre velocidad y funcionalidad
Marzo 24, 2025
7
min leer

Configuración del modo sin cabeza en Puppeteer: equilibrio entre velocidad y funcionalidad

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

Titiritero te permite automatizar Chrome or Chromium navegadores y elegir entre sin cabeza or cabeza llena El modo puede afectar significativamente el rendimiento y la depuración. A continuación, un breve resumen:

  • Modo sin cabeza:Más rápido, utiliza menos recursos, ideal para tareas de automatización y producción como raspado web o pruebas.
  • Modo cabeza llena:Interfaz de navegador visual, mejor para la depuración y el desarrollo.

Comparacion rapida

Feature Modo sin cabeza Modo cabeza llena
Interfaz visual Sin GUI Interfaz gráfica de usuario completa
El uso de recursos Más Bajo Más alto
velocidad de ejecución Más rápido Estándar
Huella de memoria Menor más grande
Facilidad de depuración Basado en consola Retroalimentación visual

Nuevo modo sin cabeza Combina el rendimiento de headless con herramientas de depuración mejoradas, lo que lo convierte en una opción equilibrada para muchos flujos de trabajo.

Elija:

  • Estándar sin cabeza para la eficiencia en CI/CD o producción.
  • Nuevo sin cabeza para depuración avanzada y funciones modernas.
  • Modo cabeza llena Para depuración visual y prueba de elementos interactivos.

Esta guía explica cómo configurar cada modo, sus beneficios y cuándo usarlos.

Titiritero - Modos sin cabeza y con cabeza

Titiritero

1. Modo sin cabeza estándar

El modo headless estándar es la configuración predeterminada de Puppeteer, que ejecuta Chrome o Chromium sin su interfaz gráfica de usuario (GUI). Al omitir la GUI, utiliza menos memoria, procesa las páginas más rápido y reduce el uso de la CPU.

Características Principales

El modo headless estándar admite una amplia gama de operaciones del navegador, entre las que se incluyen:

Feature Que hace
Simulación de usuario Maneja clics, entradas de formularios y navegación.
Manipulación de contenido Inyecta JavaScript, modifica el DOM
Generación de activos Captura capturas de pantalla, crea archivos PDF
Red de Monitoreo Realiza un seguimiento de las solicitudes y respuestas
Automatización de página Ejecuta scripts, extrae contenido

Cómo usarlo

Puedes iniciar el modo sin cabeza con el siguiente código:

const browser = await puppeteer.launch(); // Default headless
// OR
const browser = await puppeteer.launch({ headless: true }); // Explicit headless

Por qué es útil

El modo sin interfaz gráfica es ideal para tareas como el web scraping, las pruebas automatizadas y la creación de capturas de pantalla o archivos PDF. Por ejemplo, Optimizely redujo su ciclo de pruebas de 24 horas a solo una hora aprovechando las pruebas de navegador sin cabeza en la nube.

Desafíos a tener en cuenta

Si bien es eficiente, el modo sin cabeza presenta algunos obstáculos:

  • Ciertos sitios web pueden detectar y bloquear navegadores sin cabeza.
  • La depuración es más difícil sin retroalimentación visual.
  • Las interacciones de usuario más complejas pueden requerir una configuración adicional.

Para mejorar la confiabilidad y evitar la detección, puede:

  • Establecer una cadena de agente de usuario personalizada.
  • Añadir retrasos entre acciones automatizadas.
  • Utilice mecanismos fuertes de manejo de errores.
  • Asegúrese de que la página esté completamente cargada antes de extraer datos.

Para una eficiencia aún mayor en tareas específicas del lado del servidor, puede considerar la chrome-headless-shell Variante. Esta opción ligera es perfecta para flujos de trabajo centrados en la automatización. Iníciela con:

const browser = await puppeteer.launch({ headless: 'shell' });

Este modo es especialmente efectivo para operaciones del lado del servidor, ofreciendo un rendimiento optimizado.

A continuación, analizaremos el nuevo modo sin cabeza de Chrome y cómo lleva el rendimiento al siguiente nivel.

2. ChromeEl nuevo modo sin cabeza de

Chrome

Chrome ha introducido un modo headless mejorado que lleva la automatización del navegador a un nuevo nivel. A diferencia de la versión anterior, este modo utiliza el mismo código base que el navegador Chrome estándar, lo que garantiza una mayor estabilidad y acceso a todas las funciones del navegador. Combina la eficiencia del funcionamiento headless con la funcionalidad de un navegador completo, facilitando enormemente la automatización y la depuración.

Características

El nuevo modo sin interfaz gráfica funciona creando ventanas de plataforma sin mostrarlas. Esto permite aprovechar al máximo las capacidades del navegador y disfrutar de las ventajas de rendimiento del funcionamiento sin interfaz gráfica. Así es como se puede usar en el código:

const browser = await puppeteer.launch({ headless: 'new' }); // Explicitly use new headless mode
// OR
const browser = await puppeteer.launch({ headless: true }); // Defaults to new headless mode

Herramientas de depuración

Este modo también incluye varias herramientas para facilitar la depuración:

Feature Propósito
Inspección visual Ver el comportamiento del navegador (establecer headless: false)
Tiempo de operación Ingrese al slowMo opción para retrasar acciones
Monitoreo de consola Capturar la salida de la consola para su análisis
Análisis de protocolo Habilitar el registro del protocolo DevTools
Diagnóstico del navegador Use dumpio: true para registros detallados

Solución avanzada de problemas

1. Uso de DevTools para la depuración

Puedes habilitar las DevTools integradas de Chrome para inspeccionar el comportamiento del navegador en detalle:

const browser = await puppeteer.launch({
  headless: 'new',
  devtools: true
});

2. Monitoreo del rendimiento y seguimiento de errores

La base de código compartida permite la creación precisa de perfiles de rendimiento y la resolución de errores. Utilice esta configuración para supervisar y depurar operaciones tanto del lado del cliente como del servidor:

const browser = await puppeteer.launch({
  headless: 'new',
  devtools: true,
  slowMo: 100,
  args: ['--enable-logging', '--v=1']
});

Orientación sobre migración

Aunque el antiguo modo sin cabeza (headless: 'old') sigue disponible, es recomendable cambiar a la nueva versión. El modo heredado se eliminará gradualmente, por lo que la transición ahora garantiza la consistencia y te prepara para futuras actualizaciones.

Beneficios de rendimiento

Al usar una base de código unificada, el nuevo modo headless ofrece un comportamiento consistente en diversos entornos. Esta consistencia reduce los problemas específicos del entorno y mejora la fiabilidad de los flujos de trabajo automatizados.

sbb-itb-23997f1

3. Modo de visualización del navegador

El modo de visualización del navegador abre una ventana visible durante las operaciones de Puppeteer. Si bien consume más recursos, ofrece mejores herramientas de depuración y retroalimentación visual.

Consideraciones de rendimiento

Ejecutar en modo de visualización aumenta el uso de recursos pero proporciona algunas ventajas:

const browser = await puppeteer.launch({
  headless: false,
  args: ['--enable-gpu-rasterization'],
  defaultViewport: null
});

Con un navegador visible, se puede activar la aceleración por hardware de la GPU, lo que mejora el rendimiento en sitios web con muchas imágenes. Además, este modo reduce la probabilidad de detección de bots al imitar el comportamiento estándar del navegador.

Funciones de depuración mejoradas

El modo de visualización es ideal para la resolución de problemas, ya que ofrece información visual inmediata. Aquí tienes una configuración de depuración útil:

const browser = await puppeteer.launch({
  headless: false,
  devtools: true,
  slowMo: 250,
  defaultViewport: {
    width: 1920,
    height: 1080
  }
});

Esta configuración abre DevTools automáticamente, introduce un retraso de 250 ms para una mejor inspección y utiliza un tamaño de ventana gráfica estándar para realizar pruebas consistentes.

Escenarios de uso

Guión Beneficios Sugerencias de configuración
Depuración visual Vea las interacciones en tiempo real Habilite DevTools, utilice slowMo
Pruebas de GUI Observar los comportamientos de la interfaz de usuario Establecer un tamaño de ventana gráfica fijo
Flujos de trabajo complejos Verificar interacciones detalladas Combinar con el registro de la consola

Sugerencias de optimización

Para que todo funcione sin problemas en el modo de visualización:

  • Gestionar recursos:Cierre las pestañas y ventanas que no utilice para ahorrar memoria.
  • Monitorear el desempeño:Habilite el registro del navegador para realizar un seguimiento de las métricas de rendimiento.
  • Utilice la aceleración de GPU:Active las funciones de la GPU para tareas que impliquen gráficos pesados.

"A veces es útil ver lo que muestra el navegador. En lugar de iniciar en modo sin cabeza, inicie una versión completa del navegador con el modo sin cabeza configurado en false." - Documentación del titiritero

Configuración avanzada

Para tareas más exigentes, puede mejorar el modo de visualización con configuraciones adicionales:

const browser = await puppeteer.launch({
  headless: false,
  args: [
    '--enable-gpu-rasterization',
    '--window-size=1920,1080',
    '--disable-web-security'
  ],
  dumpio: true
});

Esta configuración mejora la visibilidad, permite un registro detallado y permite el acceso multiorigen. Estos ajustes garantizan una experiencia más fluida y sientan las bases para comparar el rendimiento y la funcionalidad en la próxima guía.

Guía de comparación de modos

Al configurar Puppeteer, cada modo ofrece una combinación diferente de velocidad, uso de recursos y capacidades de depuración. Elegir el adecuado depende de tus necesidades específicas.

A continuación se muestra un desglose de los modos:

  • Modo sin cabeza estándar
    Este modo está diseñado para optimizar la eficiencia y agilizar el inicio, lo que lo hace ideal para pruebas automatizadas o pipelines de CI/CD. Utiliza recursos mínimos del sistema y proporciona una salida de depuración básica a través de la consola.
  • Nuevo modo sin cabeza
    Combina potentes funciones de depuración con un rendimiento similar al del modo sin interfaz gráfica estándar. Es una buena opción para tareas que requieren una combinación de velocidad y funcionalidad.
  • Modo de visualización del navegador
    Este modo te da acceso completo a Chrome DevTools, ofreciendo retroalimentación visual en tiempo real. Es ideal para la depuración detallada o el análisis de flujos de trabajo complejos. Si bien consume más recursos del sistema, admite tareas que se benefician de la aceleración de hardware y los controles de red avanzados.

El titiritero aprovecha la Protocolo de Chrome DevTools para un control preciso del navegador, incluida la intercepción de red y la ejecución de JavaScript, lo que le permite ajustar las configuraciones.

Por ejemplo, aquí se explica cómo puedes optimizar el nuevo modo sin cabeza:

const browser = await puppeteer.launch({
  headless: 'new',
  args: [
   '--disable-gpu',
   '--no-sandbox',
   '--disable-setuid-sandbox'
  ]
});

Utilice Standard Headless para una automatización rápida y que utilice recursos de manera eficiente, Browser Display para una depuración detallada o New Headless cuando necesite un equilibrio entre rendimiento y funcionalidad.

Elegir el modo correcto

Al seleccionar un modo en Puppeteer, tenga en cuenta los objetivos y requisitos específicos de su proyecto. Puppeteer prioriza la velocidad, la seguridad, la estabilidad y la simplicidad. A continuación, un desglose para ayudarle a decidir:

Modo sin cabeza estándar Es ideal si necesitas:

  • Máximo rendimiento utilizando recursos mínimos
  • Sin depuración visual ni renderizado del navegador
  • Una opción confiable para entornos CI/CD

Nuevo modo sin cabeza Funciona mejor cuando necesitas:

  • Herramientas de depuración avanzadas sin sacrificar el rendimiento
  • Compatibilidad con funciones web modernas
  • Un equilibrio entre el uso de recursos y la funcionalidad
  • Acceso a la mayoría de las funciones del protocolo Chrome DevTools

Modo de visualización del navegador Es adecuado para escenarios que involucran:

  • Necesidades de depuración detalladas
  • Confirmación visual de los flujos de trabajo de automatización
  • Desarrollo y prueba de elementos interactivos
  • El uso de la aceleración de hardware

Casos de uso comunes y recomendaciones:

Tipo de Proyecto Modo recomendado Ventaja clave
Pruebas de canalización de CI/CD Estándar sin cabeza Ejecución rápida con uso mínimo de recursos
Desarrollo y depuración Pantalla del navegador Comentarios visuales completos y DevTools
Automatización de la Producción Nuevo sin cabeza Una combinación sólida de características y rendimiento.

La API de Puppeteer facilita el cambio entre estos modos a medida que tu proyecto evoluciona.

Artículos relacionados con

Blogs relacionados

Caso de uso

Respaldado por