Browserless Chrome es un servicio en la nube que simplifica la automatización de navegadores al ejecutar Chrome en modo headless para tareas como web scraping, generación de PDF y pruebas. Elimina la necesidad de configuraciones locales del navegador y gestiona automáticamente los bloqueos del navegador, el aislamiento de sesiones y la optimización de recursos. Entre sus principales ventajas se incluyen:
- Sin configuración local: Use Docker o una implementación en la nube para empezar rápidamente.
- Alto rendimiento: Capturas de pantalla en ~1 segundo y PDF en ~2 segundos.
- Evasión de detección de bots: Supera bloqueos como Cloudflare para una automatización fiable.
- Eficiencia de recursos: Reduce el uso de proxies y máquinas virtuales hasta en un 90%.
Configuración rápida: Intégrelo con bibliotecas populares como Puppeteer, Playwright o Selenium mediante métodos de conexión sencillos. Browserless también ofrece API para web scraping, renderizado de JavaScript y flujos de automatización personalizados.
Comparación rápida de funciones
| Función | Ventaja | Ejemplo |
|---|---|---|
| Limpieza de sesiones | Elimina automáticamente las sesiones inactivas | Mantiene los recursos optimizados |
| Prevención de detección de bots | Evita bloqueos como Cloudflare | Fiable para tareas de scraping |
| Procesamiento multitarea | Gestiona eficazmente solicitudes simultáneas | Más de 2 millones de sesiones procesadas por semana |
| API listas para usar | Simplifica las tareas de automatización | Extracción de datos JSON, PDF |
Browserless Chrome es ideal para desarrolladores y empresas que buscan optimizar la automatización sin gestionar una infraestructura compleja.
Guía de configuración
Cómo instalarlo
Para empezar con Browserless Chrome, puede elegir entre dos opciones de instalación: una configuración local con Docker o una implementación en la nube. Para una configuración local con Docker, use el siguiente comando:
docker run -p 3000:3000 ghcr.io/browserless/chromium
Este comando descarga la imagen más reciente y la deja accesible en el puerto 3000 [3]. Funciona sin problemas en Windows, macOS y Linux.
Configuración inicial
Browserless Chrome incluye varias funciones integradas para simplificar el proceso de configuración:
| Función | Configuración predeterminada | Propósito |
|---|---|---|
| Limpieza de sesiones | 30 segundos | Elimina automáticamente las sesiones inactivas |
| Comprobaciones de estado | Activadas | Garantiza la estabilidad del sistema |
| Cola de solicitudes | Configurable | Gestiona múltiples conexiones simultáneas |
| Límites de recursos | Ajustables | Controla el uso de memoria y CPU |
Puede personalizar el entorno configurando estas variables:
MAX_CONCURRENT_SESSIONS=10
CONNECTION_TIMEOUT=30000
MAX_QUEUE_LENGTH=100
Una vez configurado, puede conectarse a Browserless mediante su método de integración preferido.
Realice su primera conexión
Según la biblioteca que utilice, así puede establecer su primera conexión:
- Conexión con Puppeteer
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io?token=YOUR-API-TOKEN'
});
- Integración con Playwright
const browser = await playwright.firefox.connect(
`wss://production-sfo.browserless.io/firefox/playwright?token=${TOKEN}&proxy=residential`
);
- Acceso a la API REST
curl -X POST https://chrome.browserless.io/content
-H 'Content-Type: application/json'
-H 'Authorization: Basic YOUR-BASE64-TOKEN'
-d '{ "url": "https://example.com/"}'
Browserless V2 mejora la fiabilidad con dos endpoints regionales: la costa oeste de EE. UU. (production-sfo.browserless.io) y Europa (production-lon.browserless.io). Estos endpoints gestionan el aislamiento de sesiones, administran solicitudes simultáneas y se recuperan automáticamente de bloqueos. También eliminan las sesiones inactivas después de 30 segundos al iniciar una nueva instancia del navegador para cada sesión nueva [4].
Funciones principales
Conceptos básicos del navegador headless
Browserless Chrome funciona sin interfaz gráfica, en modo headless. Inicia automáticamente nuevas instancias del navegador para las solicitudes entrantes, lo que garantiza un uso eficiente de los recursos.
A continuación, verá un resumen rápido de sus funciones principales:
| Función | Descripción | Ventaja |
|---|---|---|
| Aislamiento de sesiones | Sesiones de navegador independientes | Reduce los costes de infraestructura |
| Recuperación automática | Se reinicia tras bloqueos | Mantiene las operaciones en marcha |
| Optimización de recursos | Uso eficiente de memoria y CPU | Mejora el rendimiento general |
Además de estas funciones esenciales, Browserless está diseñado para gestionar múltiples tareas simultáneamente con facilidad.
Procesamiento multitarea
Con más de 2 millones de sesiones gestionadas, Browserless Chrome ha generado millones de capturas de pantalla, PDF y resultados de pruebas [5]. Su sistema inteligente de gestión de colas garantiza que las solicitudes se procesen sin sobrecargar los recursos y mantiene un rendimiento constante. Esto ha resultado especialmente útil para empresas como Samsara, que cambió de un servicio interno de pruebas a Browserless para obtener una mayor escalabilidad.
"Browserless cuenta con una gama de funciones diseñadas para simplificar y acelerar las tareas de automatización de navegadores web. Con su sólida API y su capacidad para gestionar operaciones paralelas, Browserless destaca como líder en el ámbito de la automatización." – Elest.io
Browserless no solo destaca en la multitarea; también simplifica los flujos de automatización con API listas para usar.
Funciones de API listas para usar
Browserless ofrece API adaptadas a necesidades habituales de automatización, mejorando su funcionalidad principal:
- API de web scraping: Extrae datos JSON estructurados de elementos de páginas web.
- API Unblock: Obtiene contenido HTML después de ejecutar JavaScript.
- API Function: Ejecuta código Puppeteer personalizado con importaciones de módulos ESM.
Estas API han ofrecido resultados en situaciones reales:
"Empezamos a utilizar los navegadores headless de otra empresa de scraping para ejecutar scripts de Puppeteer. Sin embargo, requería una actualización de Vercel debido a los lentos tiempos de obtención, y los proxies no funcionaban correctamente. Encontré Browserless y tenía nuestro código de Puppeteer funcionando en una hora. Ahora los scrapeos son 5 veces más rápidos y cuestan un tercio, además de que el soporte ha sido excelente." – Nicklas Smit, desarrollador Full-Stack, Takeoff Copenhagen [2]
"Creamos una herramienta de scraping para entrenar nuestros chatbots con datos públicos de sitios web, pero rápidamente se complicó debido a casos límite y a la detección de bots. Encontré Browserless y reservé un día para la integración, pero solo tardé un par de horas. No necesité convertirme en experto en la gestión de servidores proxy o equipos virtuales, así que ahora puedo mantenerme centrado en las partes principales del negocio." – Mike Heap, fundador, My AskAI [2]
¿Qué es browserless?
sbb-itb-23997f1
Guía de integración de bibliotecas
Browserless Chrome funciona sin problemas con las principales bibliotecas de automatización y ofrece rendimiento y fiabilidad. A continuación, verá cómo integrarlo con algunas de las herramientas más populares.
Integración con Puppeteer
Cambiar a Browserless en Puppeteer es sencillo: solo tiene que sustituir puppeteer.launch() por puppeteer.connect() [6].
| Tipo de configuración | Estructura del código | Ventajas |
|---|---|---|
| Puppeteer tradicional | Usa puppeteer.launch() | Consume recursos locales |
| Puppeteer con Browserless | Usa puppeteer.connect() | Optimizado para la nube |
| Browserless mejorado | Argumentos de inicio personalizados | Configuraciones avanzadas |
También puede pasar argumentos de inicio personalizados a través del endpoint WebSocket:
const launchArgs = JSON.stringify({
args: ['--window-size=1920,1080'],
stealth: true,
timeout: 5000
});
const browser = await puppeteer.connect({
browserWSEndpoint: `wss://production-sfo.browserless.io/?token=YOUR_API_TOKEN_HERE&launch=${launchArgs}`
});
Esta configuración admite opciones avanzadas sin perder simplicidad.
Integración con Playwright
Browserless funciona igual de bien con Playwright. Este es un ejemplo de cómo conectarse mediante Firefox:
// Firefox implementation with Playwright Protocol
const browser = await playwright.firefox.connect(
'wss://production-sfo.browserless.io/firefox/playwright?token=YOUR_API_TOKEN_HERE'
);
Para los desarrolladores que utilizan Python, Browserless garantiza una experiencia coherente:
with sync_playwright() as p:
browser = p.firefox.connect('wss://production-sfo.browserless.io/firefox/playwright?token=YOUR_API_TOKEN_HERE')
context = browser.new_context()
Esta compatibilidad entre lenguajes facilita la integración de Browserless en distintos flujos.
Integración con Selenium
Para Selenium, use la siguiente configuración de Ruby para conectarse a Browserless:
caps = Selenium::WebDriver::Remote::Capabilities.chrome("goog:chromeOptions" => {
"args" => [
"--disable-dev-shm-usage",
"--disable-extensions",
"--headless",
"--no-sandbox"
]
})
Puede establecer la conexión WebDriver mediante un formato de URL sencillo:
driver = Selenium::WebDriver.for :remote,
url: "https://[email protected]/webdriver",
desired_capabilities: caps
Esta configuración garantiza un funcionamiento seguro y eficiente, aprovechando el aislamiento y otras funciones de ahorro de recursos. Cierre siempre las instancias del navegador después de usarlas para evitar fugas de memoria y optimizar el uso de recursos.
Consejos de rendimiento
Al trabajar con Browserless Chrome, gestionar el rendimiento es clave para mantener la eficiencia. Dado que la plataforma gestiona casi 5 millones de sesiones headless por semana [8], una gestión cuidadosa de los recursos y la seguridad resulta esencial para mantener operaciones fluidas a esta escala.
Gestión de recursos
La gestión eficiente de los recursos comienza con la forma en que se administran las instancias del navegador. En lugar de crear una instancia nueva para cada tarea, reutilice las instancias existentes para reducir la sobrecarga de iniciar nuevas sesiones:
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io?token=YOUR-TOKEN'
});
// Reuse the instance by disconnecting instead of closing
await browser.disconnect();
Otra táctica eficaz consiste en bloquear recursos innecesarios para reducir el uso de recursos. A continuación, verá un desglose:
| Tipo de recurso | Impacto en el rendimiento | Acción recomendada |
|---|---|---|
| Imágenes | Consume mucho ancho de banda | Bloquéelas con page.setRequestInterception() |
| Archivos CSS | Usa memoria adicional | Desactívelos salvo que sean esenciales para el diseño |
| Fuentes | Ralentizan la carga | Bloquee las solicitudes de fuentes externas |
Por ejemplo, Browserless.io informó de una mejora de rendimiento en septiembre de 2024: bloquear estos recursos redujo el tiempo de ejecución de 2114 ms a 1676 ms [10].
Gestión de tráfico elevado
Una vez optimizados los recursos, el siguiente paso es gestionar eficazmente el tráfico elevado. El escalado horizontal es más fiable que depender de unas pocas instancias grandes.
"Chrome es realmente muy bueno aprovechando todos los recursos del sistema y le gusta usar partes iguales de CPU y memoria para la mayoría de las tareas" [8]
Para gestionar demandas de gran volumen, tenga en cuenta estas estrategias:
- Use Nginx para equilibrar la carga entre múltiples instancias más pequeñas de Browserless.
- Active las comprobaciones de estado previas a las solicitudes con
PRE_REQUEST_HEALTH_CHECK=truey limite las sesiones simultáneas medianteMAX_CONCURRENT_SESSIONS=10. - Garantice una finalización correcta de los procesos para evitar procesos "zombi" persistentes.
"Independientemente de dónde o cómo ejecute sus sesiones headless, es importante eliminar Chrome con el fuego de mil soles" [8]
Configuración de seguridad
Una configuración segura no solo protege sus datos, sino que también garantiza un rendimiento constante bajo cargas elevadas. A continuación, verá cómo proteger su implementación:
- Almacene las claves de API como valores hash en entornos seguros.
- Use restricciones de IP para controlar el acceso.
- Active la gestión de acceso basada en roles.
- Aplique limitación de tasa a los endpoints de API.
Para implementaciones con Docker, establezca límites de recursos para evitar sobrecargas:
docker run -e MAX_CONCURRENT_SESSIONS=10 \
-e CONNECTION_TIMEOUT=30000 \
--memory=2g \
--cpu-shares=1024 \
browserless/chrome
Para gestionar código no confiable, use el módulo vm2 para crear entornos aislados. Este enfoque evita ataques que consumen mucha CPU. Desde el 5 de marzo de 2018, Browserless.io utiliza dumb-init dentro de los contenedores Docker para gestionar eficazmente la finalización de procesos [9].
Resumen
Browserless Chrome simplifica la automatización al encargarse de las tareas de infraestructura más exigentes, que antes ocupaban una parte significativa del tiempo de los desarrolladores: alrededor del 60 %. Al aislar Chrome de los servicios principales, garantiza un mejor equilibrio de carga, escalabilidad y gestión de errores. Un ejemplo destacado es Samsara, que renovó sus pruebas basadas en Puppeteer al eliminar la complejidad de mantener una infraestructura especializada. Esto permitió a sus ingenieros centrarse más en desarrollar su producto principal en lugar de preocuparse por las operaciones de backend [1].
A continuación, verá un resumen de lo que convierte a Browserless Chrome en una solución transformadora:
| Función | Impacto empresarial |
|---|---|
| Separación de infraestructura | Evita que los problemas relacionados con Chrome interrumpan todo el servicio [11] |
| Equilibrio de carga integrado | Permite escalar sin esfuerzo y sin configuración adicional |
| Evasión de detección de bots | Aumenta las tasas de éxito de las tareas de automatización web [1] |
| Integración de la API REST | Facilita mucho tareas como la creación de PDF y la generación de capturas de pantalla [1] |
Estas funciones hacen que cambiar a Browserless Chrome sea una opción práctica y eficiente para las necesidades de automatización.
Pasos para empezar
¿Quiere integrar Browserless Chrome en su flujo? Así puede empezar:
- Elija un método de integración: Antes de empezar, pruebe la funcionalidad con el depurador en línea. Después, elija entre Puppeteer, Playwright o Selenium según sus herramientas actuales [7].
- Actualice su configuración: Sustituya el inicio local de Puppeteer conectándose a Browserless. Solo tiene que actualizar su código para usar
puppeteer.connect()con su endpoint de Browserless. - Supervise el rendimiento: Use las herramientas integradas de Browserless, como las comprobaciones de estado y las métricas de cola, para vigilar el rendimiento [1].


