¿Quiere automatizar Chrome o Chromium fácilmente? Puppeteer es una biblioteca de Node.js que simplifica la automatización de navegadores, ideal para tareas como pruebas y scraping. Esto es lo que aprenderá:
- Integración directa en Latenode: Descubra cómo Latenode mejora los flujos de scraping web con una integración directa con un navegador headless basado en Puppeteer y funciones diseñadas para la automatización. No necesita preconfigurar nada: simplemente añada el nodo y úselo en la automatización de flujos.
- Requisitos de configuración: Use Node.js 18+ y asegúrese de que su sistema cumpla las dependencias específicas de su sistema operativo.
- Opciones de instalación: Instale Puppeteer con
npm i puppeteer(incluye Chrome for Testing) onpm i puppeteer-core(utilice su propio navegador). - Consejos de resolución de problemas: Solucione errores de inicio de Chromium, bibliotecas faltantes y conflictos de dependencias.
- Configuraciones avanzadas: Optimice el rendimiento, configure proxies y gestione variables de entorno.
Antes de compartir una guía completa sobre los problemas de configuración de Puppeteer, debe saber que puede omitirla y utilizar un nodo de integración directa listo para usar en Latenode. Échele un vistazo:
Omita la configuración de Puppeteer: use nuestra integración lista para usar en Latenode
Latenode funciona perfectamente con Puppeteer para simplificar la automatización de navegadores. A continuación, exploraremos las funciones de Latenode y cómo utilizar una integración directa con Puppeteer para sus necesidades de automatización.
Estas son las principales funciones de Latenode:
| Función | Descripción | Beneficio |
|---|---|---|
| Navegador headless | Integración con la biblioteca Puppeteer | Control directo del navegador |
| Asistente de código con IA | Generación automatizada de código | Acelera la depuración y la programación |
| Flexibilidad sin código | Más de 300 integraciones sin código para ajustes de flujo personalizados | Amplía la funcionalidad de Puppeteer |
| Compatibilidad con paquetes NPM | Acceso a más de 1 millón de paquetes | Potencia las capacidades de automatización |
"Lo que más me gustó de Latenode frente a la competencia es que tenía la posibilidad de escribir código y crear nodos personalizados." - Germaine H., fundadora de Information Technology [3]
Herramientas de Latenode
Latenode ofrece integración con el nodo de navegador headless, basado en Puppeteer, que le permite añadir código directamente en el editor y utilizarlo para tareas como extraer toda la información disponible de un sitio web, tomar capturas de pantalla de páginas, completar formularios y, en general, cualquier cosa compatible con Puppeteer.
Para encontrar esta integración, simplemente vaya a la carpeta Code Integrations de la biblioteca de nodos, donde encontrará el nodo de navegador headless. Añádalo a su script, haga clic en él y se abrirá un editor donde podrá añadir código de cualquier complejidad y longitud. Además, puede especificar la dirección, el usuario y la contraseña de su proxy en la configuración.
Conexión de un navegador headless basado en Puppeteer con otras integraciones
Pero un solo nodo no es suficiente para la automatización. Para una mayor personalización, añada un desencadenador y otra acción. Por ejemplo, un desencadenador webhook y una respuesta para supervisar cambios en los tipos de cambio del Banco de Inglaterra, como mostramos en la guía anterior. Aquí tiene un flujo:
FLUJO
¿Por qué elegir la integración de Latenode en lugar de una solución basada en VPS?
"Latenode supera ampliamente a la competencia con un 99 % de tiempo de actividad, precios asequibles basados en ejecuciones y una interfaz fácil de usar." - Hammad Hafeez [3]
Los precios de Latenode se basan en el tiempo de ejecución en lugar de tareas individuales, lo que la convierte en una opción económica para la automatización de Puppeteer a gran escala. Esta plataforma permite a los desarrolladores centrarse en crear flujos sólidos sin preocuparse por costes excesivos.
Para maximizar la eficiencia, puede utilizar la integración de Latenode con JavaScript, así como más de 300 integraciones con bases de datos, CRM, herramientas de gestión de proyectos y modelos de IA como Claude, ChatGPT y Gemini. Existen muchos casos de uso potenciales: prospección automatizada, gestión de bases de datos, scraping web, etc. Al combinar Latenode y Puppeteer, puede centralizar y optimizar sus procesos de automatización.
sbb-itb-23997f1
Si todavía desea una guía para solucionar problemas de Puppeteer, consulte el desglose a continuación.
¿No se pudo iniciar Chromium en VPS? Instale las dependencias faltantes de Puppeteer en VPS
Antes de empezar
Antes de instalar Puppeteer, asegúrese de que su configuración cumpla las dependencias necesarias para garantizar una instalación y un funcionamiento fluidos.
Configuración de Node.js
Puppeteer requiere Node.js para ejecutarse. Las últimas versiones de Puppeteer funcionan con Node.js versión 18 o superior, lo que se ajusta a la versión LTS actual.
Para comprobar su versión de Node.js, use este comando:
node --version
Si su versión es inferior a 18, actualice Node.js antes de continuar. Se recomienda encarecidamente utilizar la versión LTS más reciente. Tras confirmar su versión de Node.js, compruebe los requisitos del sistema operativo.
Requisitos del sistema
Los requisitos del sistema para Puppeteer dependen del sistema operativo que utilice. A continuación, encontrará un resumen rápido:
| Sistema operativo | Arquitectura | Componentes necesarios | Tamaño de descarga aprox. |
|---|---|---|---|
| Windows | x64 | Chrome for Testing | ~280MB |
| macOS | x64, arm64 | Chrome for Testing | ~170MB |
| Debian/Ubuntu | x64 | Chrome for Testing + bibliotecas | ~282MB |
Al instalar Puppeteer, descargará automáticamente una versión compatible de Chrome for Testing. El tamaño de descarga varía en función de su sistema operativo (~280MB para Windows, ~170MB para macOS y ~282MB para Debian/Ubuntu Linux) [1].
Para los usuarios de Linux, especialmente en Debian/Ubuntu, deberá instalar algunas bibliotecas adicionales. Utilice el siguiente comando:
apt-get install -y libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libgtk-3-0
Estos son algunos consejos adicionales para entornos específicos:
- AWS EC2 Amazon Linux: Active el repositorio EPEL e instale Chromium antes de configurar Puppeteer.
- Entornos Docker: Añada las bibliotecas compartidas necesarias y el paquete Chromium a su Dockerfile.
- Proyectos de TypeScript: Utilice TypeScript versión 4.7.4 o superior para acceder a las definiciones de tipos más recientes de Puppeteer y mejorar la compatibilidad con el IDE.
Pasos básicos de instalación
Una vez que haya confirmado su configuración de Node.js y los requisitos del sistema, puede instalar Puppeteer mediante npm.
Guía de instalación con npm
Tiene dos formas de instalar Puppeteer mediante npm:
Instalación estándar: Esta opción descarga automáticamente Chrome for Testing:
npm i puppeteerInstalación Core: Utilice esta opción si desea gestionar los navegadores por separado y omitir la descarga de Chrome for Testing:
npm i puppeteer-core
Con la instalación estándar, Chrome for Testing y el binario chrome-headless-shell se descargan en $HOME/.cache/puppeteer. Consulte la sección Requisitos del sistema para conocer los detalles sobre los tamaños de descarga.
Una vez instalado, estará listo para probar su configuración.
Pruebe su configuración
Comience creando un archivo llamado test.js y añada el siguiente script:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.google.com');
console.log('Page title:', await page.title());
await browser.close();
})();
Ejecute el script con:
node test.js
Si el script se ejecuta correctamente y muestra el título de la página, su instalación funciona correctamente.
Consejos de resolución de problemas
- Usuarios de Linux: Utilice su gestor de paquetes para asegurarse de que todas las dependencias necesarias estén instaladas.
- Usuarios de Windows: Verifique que los permisos del sandbox de Chrome estén configurados correctamente.
- Si Chrome no se encuentra en su ubicación predeterminada, establezca la variable de entorno
PUPPETEER_CACHE_DIRpara que apunte al directorio de instalación correcto.
"Ejecutar sin un sandbox está totalmente desaconsejado. Considere configurar un sandbox en su lugar." [2]
Para una mayor estabilidad y un mantenimiento más sencillo, puede crear un archivo .puppeteerrc.cjs para configurar el comportamiento de Puppeteer en lugar de pasar argumentos directamente al método launch.
Solución de problemas de Chromium
Los problemas de Chromium suelen deberse a bibliotecas faltantes o configuraciones incorrectas.
Uso de Chromium local
Si prefiere utilizar una instalación existente de Chromium en lugar de descargar una nueva, Puppeteer puede configurarse para funcionar con su navegador local. Este método resulta útil si necesita una versión específica de Chromium o gestiona manualmente las instalaciones de navegadores.
Para vincular Puppeteer con su Chromium local, ajuste su configuración de inicio de esta forma:
const browser = await puppeteer.launch({ executablePath: '/usr/bin/chromium-browser' });
Asegúrese de que todas las bibliotecas necesarias estén instaladas. En Linux, puede identificar las bibliotecas faltantes con:
ldd chrome | grep not
Si utilizar una instalación local no es una opción, considere instalar Chromium por separado mediante los pasos que se indican a continuación.
Instalación independiente de Chromium
A partir de Puppeteer v20.0.0, se descarga Chrome for Testing en lugar de Chromium.
Resumen de compatibilidad:
| Versión de Puppeteer | Versión del navegador | Tamaño de descarga |
|---|---|---|
| v24.4.0 | Chrome for Testing 134.0.6998.35 | ~170MB (macOS) |
| v24.3.1 | Chrome for Testing 133.0.6943.141 | ~282MB (Linux) |
| v24.3.0 | Chrome for Testing 133.0.6943.126 | ~280MB (Windows) |
Si encuentra un error "Failed to launch chrome", pruebe estas soluciones:
Compruebe las dependencias: Instale las bibliotecas faltantes en sistemas basados en Debian:
sudo apt-get install -y libasound2 libatk1.0-0 libgbm-devAjuste la configuración de memoria: Para entornos Docker, aumente el tamaño de
/dev/shmo use el indicador--disable-dev-shm-usage:const browser = await puppeteer.launch({ args: ['--disable-dev-shm-usage'] });Establezca tiempos de espera de navegación: Evite bloqueos configurando un tiempo de espera de navegación personalizado, como 60 segundos:
await page.setDefaultNavigationTimeout(60000); // 60 seconds
"Headless chrome(-ium) necesita muchas dependencias para funcionar, y puppeteer no las instala todas." - savebreach.com
Para entornos como GitLab CI o casos en los que el sandbox está deshabilitado (no recomendado), incluya argumentos de inicio específicos:
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
Para omitir las advertencias relacionadas con HTTPS en versiones recientes de Chrome, desactive la función HttpsFirstBalancedModeAutoEnable:
const browser = await puppeteer.launch({
args: ['--disable-features=HttpsFirstBalancedModeAutoEnable']
});
Gestión de dependencias
Gestionar las dependencias de forma eficaz es crucial para evitar fallos de inicio y comportamientos impredecibles. Esta sección explica cómo resolver conflictos de versiones y mantener los paquetes actualizados para prevenir errores de ejecución.
Solución de conflictos de paquetes
Los conflictos de paquetes suelen provocar errores como "Cannot find module 'puppeteer-core/internal/...'" o problemas al iniciar Chrome. Así puede solucionar estos problemas:
// Example: Resolving version conflicts using package.json overrides
{
"overrides": {
"ws": "^8.17.1",
"debug": "^4.3.4"
}
}
Pasos para solucionar problemas:
- Compruebe la versión de Node.js: Asegúrese de utilizar Node.js 18 o superior. Las versiones anteriores pueden provocar problemas de compatibilidad.
- Verifique las bibliotecas del sistema: En Linux, asegúrese de que todas las bibliotecas del sistema necesarias estén instaladas. Consulte la lista de dependencias en la sección Requisitos del sistema.
- Revise las políticas de Chrome: Las políticas de Chrome pueden entrar en conflicto con el indicador predeterminado
--disable-extensionsde Puppeteer. Intente iniciar sin él:
const browser = await puppeteer.launch({
ignoreDefaultArgs: ['--disable-extensions']
});
Una vez resueltos los conflictos, actualice sus paquetes para garantizar una estabilidad continua.
Mantenga los paquetes actualizados
Actualizar las dependencias periódicamente reduce los riesgos de seguridad y garantiza la compatibilidad. Así puede gestionar este proceso:
- Seguimiento de dependencias
Utilice una tabla sencilla para supervisar las versiones de los paquetes, las fechas de actualización y su importancia:
| Paquete | Versión actual | Última actualización | Requerido por |
|---|---|---|---|
| puppeteer | 24.4.0 | Mar 2024 | Funcionalidad principal |
| ws | 8.17.1 | Feb 2024 | Compatibilidad con WebSocket |
| debug | 4.3.4 | Ene 2024 | Sistema de registros |
- Gestión de versiones
Cuando actualice, utilice los rangos de versionado semántico con cuidado. Para dependencias críticas, fije versiones exactas para evitar cambios inesperados:
{
"dependencies": {
"puppeteer": "24.4.0",
"puppeteer-core": "24.4.0"
}
}
- Resolución de problemas de actualización
Genere un informe detallado de dependencias con:
npm list --all > dependency-report.txt
Este informe ayuda a identificar conflictos y dependencias anidadas problemáticas.
Para entornos como Docker o GitLab CI, asegúrese de que su configuración incluya los paquetes de sistema necesarios:
RUN apt-get update && apt-get install -y \
chromium \
libnss3 \
libgconf-2-4 \
libxss1
Configuraciones adicionales
Ajuste Puppeteer para configuraciones avanzadas con estas opciones adicionales.
Variables de entorno
Las variables de entorno le permiten ajustar el comportamiento de Puppeteer y sobrescribir la configuración predeterminada.
Estas son algunas variables clave:
| Variable | Propósito | Valor de ejemplo |
|---|---|---|
| PUPPETEER_CACHE_DIR | Especifica un directorio de caché personalizado para las descargas del navegador | /usr/local/cache/puppeteer |
| PUPPETEER_EXECUTABLE_PATH | Apunta a un ejecutable de navegador específico | /usr/bin/chromium |
| HTTP_PROXY | Configura los ajustes del proxy HTTP | http://proxy.company.com:8080 |
| HTTPS_PROXY | Configura los ajustes del proxy HTTPS | https://proxy.company.com:8443 |
| NO_PROXY | Enumera los dominios excluidos del uso de proxy | localhost,127.0.0.1 |
Para instalaciones personalizadas de Chromium, defina la ruta al ejecutable de esta forma:
const browser = await puppeteer.launch({
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || puppeteer.executablePath()
});
Una vez configuradas las variables de entorno, puede configurar proxies para gestionar eficazmente las restricciones de red.
Configuración del proxy
Para utilizar un servidor proxy con Puppeteer, aplique la siguiente configuración:
// Launch Puppeteer with a proxy server and authentication
const browser = await puppeteer.launch({
args: ['--proxy-server=http://157.230.255.230:8118']
});
await page.authenticate({
username: 'proxyUser',
password: 'proxyPass'
});
// Optimize navigation with specific settings
await page.goto('https://example.com', {
waitUntil: 'networkidle2',
timeout: 30000
});
Incluya gestión de errores para garantizar un rendimiento sólido en producción:
try {
await page.goto(url);
} catch (error) {
console.error('Proxy connection failed:', error.message);
// Add fallback logic or retry mechanism
}
Para configuraciones corporativas, exporte los ajustes del proxy en su terminal:
export HTTP_PROXY="http://proxy.company.com:8080"
export HTTPS_PROXY="https://proxy.company.com:8443"
export NO_PROXY="localhost,127.0.0.1,.company.internal"
También puede validar las conexiones de proxy mediante programación:
const validateProxy = async (page) => {
try {
await page.goto('https://api.ipify.org?format=json');
const content = await page.content();
return content.includes('ip');
} catch {
return false;
}
};
Esto garantiza que su configuración de proxy funcione correctamente antes de continuar.
Próximos pasos
Lista de verificación de configuración
Antes de comenzar con la automatización mediante Puppeteer, asegúrese de que su entorno esté configurado correctamente. Utilice el siguiente script para validar su configuración:
// Validation script for environment setup
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.validateEnvironment(); // Custom validation
await browser.close();
| Componente de configuración | Paso de verificación | Problema habitual |
|---|---|---|
| Node.js | Compruebe la compatibilidad de versiones | Versión de Node.js desactualizada |
| Package.json | Verifique la entrada "type": "module" | Errores de importación ES6 |
| Instalación de Chrome | Pruebe el inicio del navegador | Binario de Chromium faltante |
| Configuración de memoria | Compruebe el tamaño de /dev/shm en Docker | El navegador falla al iniciarse |
| Gestión de recursos | Implemente browser.close() | Fugas de memoria |
Una vez verificada su configuración, podrá centrarse en mejorar sus flujos para obtener mejores resultados de automatización.
Consejos para empezar
El sistema PDF de Carriyo procesó eficientemente 10.000 etiquetas de envío al día y alcanzó una latencia p95 de 365 ms [4]. Para lograr niveles de rendimiento similares, considere estas estrategias:
Gestión de recursos: Desactive las funciones innecesarias para ahorrar recursos. Por ejemplo, inicie Puppeteer con una configuración optimizada:
const browser = await puppeteer.launch({ headless: true, args: ['--disable-dev-shm-usage'], defaultViewport: { width: 1920, height: 1080 } });Gestión de errores: Utilice métodos sólidos de recuperación ante errores, como bloques try-catch y controladores de errores personalizados adaptados a problemas específicos.
Optimización del rendimiento: Aumente la velocidad mediante:
- Almacenamiento en caché de datos utilizados con frecuencia
- Intercepción de solicitudes de red
- Ejecución de tareas en paralelo
- Uso de Chrome DevTools para supervisar el rendimiento
Para una automatización más avanzada, explore la plataforma de flujos low-code de Latenode. Ofrece precios basados en ejecuciones y una variedad de funciones para simplificar implementaciones complejas de Puppeteer [3].


