ACCESIBLES
PRODUCTO
SOLUCIONES
por casos de uso
AI Plomo GestiónFacturaciónRedes socialesGestión de proyectos
Gestión de datos por sector
Más información
BlogPlantillasVideosYouTubeRECURSOS
COMUNIDADES Y REDES SOCIALES
SOCIOS
¿Quieres automatizar Chrome o Chromium con facilidad? Titiritero es un Node.js Biblioteca que simplifica la automatización del navegador, ideal para tareas como pruebas y scraping. Aprenderás lo siguiente:
npm i puppeteer
(incluye Chrome para pruebas) o npm i puppeteer-core
(utilice su propio navegador).
Antes de compartir una guía completa sobre los problemas de configuración de Puppeteer, debes saber que puedes omitirla y usar un nodo de integración directo y listo para usar en Latenode. Échale un vistazo:
Latenode se integra a la perfección con Puppeteer para simplificar la automatización del navegador. A continuación, exploraremos las características de Latenode y cómo usar una integración directa con Puppeteer para sus necesidades de automatización.
A continuación se muestra un desglose de las características principales de Latenode:
Feature | Descripción original | Beneficio |
---|---|---|
Navegador sin cabeza | Integración de la biblioteca Puppeteer | Control directo del navegador |
Asistente de código AI | Generación de código automatizada | Acelera la depuración y la codificación. |
Flexibilidad sin código | Más de 300 integraciones sin código para ajustes personalizados del flujo de trabajo | Amplía la funcionalidad de Puppeteer |
Compatibilidad con paquetes NPM | Acceso a más de 1 millón de paquetes | Aumenta las capacidades de automatización |
Lo que más me gustó de Latenode en comparación con la competencia es que pude escribir código y crear nodos personalizados. - Germaine H., Fundadora de Tecnología de la Información
Latenode ofrece integración con el nodo Headless Browser, que se basa en Puppeteer y le permite agregar código directamente en el editor y usarlo 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 que Puppeteer admita.
Para encontrar esta integración, simplemente dirígete a la carpeta "Integraciones de Código" en la biblioteca de nodos, donde encontrarás el nodo "Navegador Headless". Añádelo a tu script, haz clic en él y se abrirá un editor donde podrás añadir código de cualquier complejidad y longitud. Además, puedes especificar la dirección, el nombre de usuario y la contraseña de tu proxy en la configuración.
Pero un solo nodo no es suficiente para la automatización. Para una mayor personalización, añada un disparador y otra acción. Por ejemplo, un disparador de webhook y una respuesta para monitorear las fluctuaciones del tipo de cambio en el Banco de Inglaterra, como se muestra en la guía anterior. A continuación, se muestra un escenario:
ESCENARIO
Latenode supera a la competencia con un 99 % de tiempo de actividad, precios accesibles basados en la ejecución y una interfaz intuitiva. - Hammad Hafeez
El precio de Latenode se basa en el tiempo de ejecución, no en las tareas individuales, lo que lo convierte en una opción económica para la automatización a gran escala de Puppeteer. Esta plataforma permite a los desarrolladores centrarse en crear flujos de trabajo robustos sin preocuparse por costes excesivos.
Para maximizar la eficiencia, puede utilizar la integración con Javascript de Latenode, un total de 300 integraciones con bases de datos, CRM, herramientas de gestión de proyectos y modelos de inteligencia artificial como Claude, ChatGPT y Gemini. Hay muchos casos de uso potenciales: divulgación automatizada, gestión de bases de datos, web scraping, etc. Al combinar Latenode y Puppeteer, puede centralizar y optimizar sus procesos de automatización.
Si aún quieres una guía sobre cómo solucionar los problemas de Puppeteer, consulta el desglose a continuación.
Antes de instalar Puppeteer, asegúrese de que su configuración cumpla con las dependencias necesarias para garantizar una instalación y un funcionamiento sin problemas.
Se requiere titiritero Node.js para ejecutar. Las últimas versiones de Puppeteer funcionan con Node.js versión 18 o superior, que se alinea con 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 la 18, actualice Node.js antes de continuar. Se recomienda encarecidamente usar la última versión LTS. Tras confirmar su versión de Node.js, verifique los requisitos del sistema operativo de su sistema.
Los requisitos del sistema para Puppeteer dependen del sistema operativo que uses. Aquí tienes un breve resumen:
Sistema operativo | Arquitectura | Componentes requeridos | Tamaño aproximado de descarga |
---|---|---|---|
Windows | x64 | Chrome para pruebas | ~ 280MB |
macOS | x64, arm64 | Chrome para pruebas | ~ 170MB |
Debian / Ubuntu | x64 | Chrome para pruebas + Bibliotecas | ~ 282MB |
Al instalar Puppeteer, se descargará automáticamente una versión compatible de Chrome para realizar pruebas. El tamaño de la descarga varía según el sistema operativo (aproximadamente 280 MB para Windows, 170 MB para macOS y 282 MB para Debian/Ubuntu Linux).
Los usuarios de Linux, especialmente de Debian/Ubuntu, necesitarán instalar algunas bibliotecas adicionales. Usen 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
A continuación se ofrecen algunos consejos adicionales para entornos específicos:
Una vez que haya confirmado la configuración de Node.js y los requisitos del sistema, puede instalar Puppeteer usando npm.
Tienes dos formas de instalar Puppeteer a través de npm:
npm i puppeteer
npm i puppeteer-core
Con la instalación estándar, Chrome para pruebas y el chrome-headless-shell
Los binarios se descargan a $HOME/.cache/puppeteer
. Consulte la sección Requisitos del sistema para obtener detalles sobre el tamaño de las descargas.
Una vez instalado, estará listo para probar su configuración.
Comience creando un archivo llamado test.js
y agrega 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 está funcionando correctamente.
PUPPETEER_CACHE_DIR
Variable de entorno para señalar el directorio de instalación correcto.
"Correr sin un arenero es fuertemente desanimadoConsidere configurar un entorno de pruebas en su lugar."
Para una mejor estabilidad y un mantenimiento más sencillo, puede crear un .puppeteerrc.cjs
archivo para configurar el comportamiento de Puppeteer en lugar de pasar argumentos directamente al launch
método.
Los problemas de Chromium a menudo se deben a bibliotecas faltantes o configuraciones incorrectas.
Si prefieres usar una instalación de Chromium existente en lugar de descargar una nueva, puedes configurar Puppeteer para que funcione con tu navegador local. Este método es útil si necesitas una versión específica de Chromium o si gestionas la instalación del navegador manualmente.
Para vincular Puppeteer con tu Chromium local, ajusta tu configuración de inicio de esta manera:
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 que faltan con:
ldd chrome | grep not
Si usar una instalación local no es una opción, considere instalar Chromium por separado siguiendo los pasos a continuación.
A partir de Puppeteer v20.0.0, se descarga Chrome para pruebas en lugar de Chromium.
Descripción general de compatibilidad:
Versión del titiritero | Versión del navegador | Tamaño de la descarga |
---|---|---|
v24.4.0 | Chrome para pruebas 134.0.6998.35 | ~170 MB (Mac OS) |
v24.3.1 | Chrome para pruebas 133.0.6943.141 | ~282 MB (Linux) |
v24.3.0 | Chrome para pruebas 133.0.6943.126 | ~280 MB (Windows) |
Si encuentra un error de "Error al iniciar Chrome", pruebe estas soluciones:
sudo apt-get install -y libasound2 libatk1.0-0 libgbm-dev
/dev/shm
tamaño o utilizar el --disable-dev-shm-usage
bandera:
const browser = await puppeteer.launch({
args: ['--disable-dev-shm-usage']
});
await page.setDefaultNavigationTimeout(60000); // 60 seconds
Chrome(-ium) sin interfaz gráfica necesita muchas dependencias para funcionar, y Puppetteer no las instala todas. - savebreach.com
Para entornos como GitLab CI o casos donde el sandbox está deshabilitado (no recomendado), incluya argumentos de lanzamiento específicos:
const browser = await puppeteer.launch({
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
Para evitar las advertencias relacionadas con HTTPS en versiones recientes de Chrome, desactive la función HttpsFirstBalancedModeAutoEnable:
const browser = await puppeteer.launch({
args: ['--disable-features=HttpsFirstBalancedModeAutoEnable']
});
Gestionar las dependencias eficazmente 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 evitar errores de ejecución.
Los conflictos de paquetes suelen provocar errores como "No se puede encontrar el módulo 'puppeteer-core/internal/...'" o problemas al iniciar Chrome. Aquí te explicamos cómo solucionar estos problemas:
// Example: Resolving version conflicts using package.json overrides
{
"overrides": {
"ws": "^8.17.1",
"debug": "^4.3.4"
}
}
Pasos para solucionar problemas:
--disable-extensions
bandera. Intenta iniciar sin ella:
const browser = await puppeteer.launch({
ignoreDefaultArgs: ['--disable-extensions']
});
Una vez resueltos los conflictos, actualice sus paquetes para garantizar la estabilidad continua.
Actualizar las dependencias periódicamente reduce los riesgos de seguridad y garantiza la compatibilidad. A continuación, se explica cómo gestionar este proceso:
Utilice una tabla sencilla para supervisar las versiones de los paquetes, las fechas de actualización y su importancia:
PREMIUM | Versión actual | Última actualización | Requerido por |
---|---|---|---|
titiritero | 24.4.0 | Marzo 2024 | Funcionalidad central |
ws | 8.17.1 | Feb 2024 | Soporte WebSocket |
depurar | 4.3.4 | Enero 2024 | Sistema de registro |
Al actualizar, utilice con cuidado los rangos de versiones semánticas. Para dependencias críticas, fije las versiones exactas para evitar cambios inesperados.
{
"dependencies": {
"puppeteer": "24.4.0",
"puppeteer-core": "24.4.0"
}
}
Genere un informe de dependencia detallado 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
Ajuste Puppeteer para configuraciones avanzadas con estas configuraciones adicionales.
Las variables de entorno le permiten ajustar el comportamiento de Puppeteer y anular las configuraciones predeterminadas.
A continuación se presentan algunas variables clave:
Variable | Propósito | Valor de ejemplo |
---|---|---|
DIRECCIÓN_DE_CACHÉ_DIR_TITIRISTA | Especifica un directorio de caché personalizado para las descargas del navegador | /usr/local/cache/titiritero |
RUTA EJECUTABLE DEL TITULAR | Apunta a un ejecutable específico del navegador | /usr/bin/cromo |
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 | host local,127.0.0.1 |
Para instalaciones personalizadas de Chromium, defina la ruta ejecutable de la siguiente manera:
const browser = await puppeteer.launch({
executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || puppeteer.executablePath()
});
Una vez configuradas las variables de entorno, puedes configurar servidores proxy para manejar las restricciones de red de manera efectiva.
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 el manejo 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 la configuración de 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 puedes validar conexiones 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.
Antes de empezar con la automatización de 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 común |
---|---|---|
Node.js | Comprobar compatibilidad de versiones | Versión obsoleta de Node.js |
Paquete.json | Verificar la entrada "type": "module" | Errores de importación de ES6 |
Instalación de Chrome | Prueba de lanzamiento del navegador | Falta el binario de Chromium |
Configuraciones de memoria | Comprobar el tamaño de /dev/shm en Docker | El navegador se bloquea al iniciarse |
Gestión de Recursos | Implementar browser.close() | Pérdidas de memoria |
Una vez verificada su configuración, puede concentrarse en mejorar sus flujos de trabajo para obtener mejores resultados de automatización.
CarriyoEl sistema PDF de gestionó eficientemente 10,000 95 etiquetas de envío diarias, logrando una latencia p365 de XNUMX ms. Para alcanzar niveles de rendimiento similares, considere las siguientes estrategias:
const browser = await puppeteer.launch({
headless: true,
args: ['--disable-dev-shm-usage'],
defaultViewport: { width: 1920, height: 1080 }
});
Para una automatización más avanzada, explora la plataforma de flujo de trabajo low-code de Latenode. Ofrece precios basados en la ejecución y una gama de funciones para simplificar las implementaciones complejas de Puppeteer.