Browserless Chrome est un service cloud qui simplifie l’automatisation des navigateurs en exécutant Chrome en mode headless pour des tâches telles que le web scraping, la génération de PDF et les tests. Il élimine le besoin de configurer des navigateurs en local et gère automatiquement les plantages du navigateur, l’isolation des sessions et l’optimisation des ressources. Ses principaux avantages incluent :
- Aucune configuration locale : utilisez Docker ou un déploiement cloud pour démarrer rapidement.
- Performances rapides : captures d’écran en environ 1 seconde, PDF en environ 2 secondes.
- Contournement de la détection des bots : surmonte les bloqueurs tels que Cloudflare pour une automatisation fiable.
- Efficacité des ressources : réduit l’utilisation des proxys et des machines virtuelles jusqu’à 90 %.
Configuration rapide : intégrez des bibliothèques populaires comme Puppeteer, Playwright ou Selenium à l’aide de méthodes de connexion simples. Browserless propose également des API pour le web scraping, le rendu JavaScript et des workflows d’automatisation personnalisés.
Comparaison rapide des fonctionnalités
| Fonctionnalité | Avantage | Exemple |
|---|---|---|
| Nettoyage des sessions | Supprime automatiquement les sessions inactives | Maintient les ressources optimisées |
| Prévention de la détection des bots | Contourne les bloqueurs comme Cloudflare | Fiable pour les tâches de scraping |
| Traitement multitâche | Gère efficacement les requêtes simultanées | Plus de 2 M de sessions traitées chaque semaine |
| API prêtes à l’emploi | Simplifie les tâches d’automatisation | Extraction de données JSON, PDF |
Browserless Chrome est idéal pour les développeurs et les entreprises qui souhaitent simplifier l’automatisation sans gérer une infrastructure complexe.
Guide de configuration
Comment installer
Pour démarrer avec Browserless Chrome, vous pouvez choisir entre deux options d’installation : une configuration locale avec Docker ou un déploiement cloud. Pour une configuration Docker locale, utilisez la commande suivante :
docker run -p 3000:3000 ghcr.io/browserless/chromium
Cette commande récupère la dernière image et la rend accessible sur le port 3000 [3]. Elle fonctionne parfaitement sous Windows, macOS et Linux.
Configuration initiale
Browserless Chrome inclut plusieurs fonctionnalités intégrées pour simplifier le processus de configuration :
| Fonctionnalité | Paramètre par défaut | Objectif |
|---|---|---|
| Nettoyage des sessions | 30 secondes | Supprime automatiquement les sessions inactives |
| Vérifications d’état | Activées | Garantit la stabilité du système |
| File d’attente des requêtes | Configurable | Gère plusieurs connexions simultanées |
| Limites de ressources | Ajustables | Contrôle l’utilisation de la mémoire et du processeur |
Vous pouvez personnaliser l’environnement en définissant ces variables :
MAX_CONCURRENT_SESSIONS=10
CONNECTION_TIMEOUT=30000
MAX_QUEUE_LENGTH=100
Une fois la configuration terminée, vous pouvez vous connecter à Browserless via la méthode d’intégration de votre choix.
Établir votre première connexion
Selon la bibliothèque utilisée, voici comment établir votre première connexion :
- Connexion Puppeteer
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io?token=YOUR-API-TOKEN'
});
- Intégration Playwright
const browser = await playwright.firefox.connect(
`wss://production-sfo.browserless.io/firefox/playwright?token=${TOKEN}&proxy=residential`
);
- Accès à l’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 améliore la fiabilité grâce à deux endpoints régionaux : la côte Ouest des États-Unis (production-sfo.browserless.io) et l’Europe (production-lon.browserless.io). Ces endpoints gèrent l’isolation des sessions, les requêtes simultanées et la récupération après les plantages automatiquement. Ils nettoient également les sessions inactives après 30 secondes en lançant une nouvelle instance de navigateur pour chaque nouvelle session [4].
Fonctionnalités principales
Principes du navigateur headless
Browserless Chrome fonctionne sans interface graphique, en mode headless. Il démarre automatiquement de nouvelles instances de navigateur pour les requêtes entrantes, garantissant une utilisation efficace des ressources.
Voici un aperçu rapide de ses principales fonctionnalités :
| Fonctionnalité | Description | Avantage |
|---|---|---|
| Isolation des sessions | Sessions de navigateur indépendantes | Réduit les coûts d’infrastructure |
| Récupération automatique | Redémarre après les plantages | Maintient les opérations en cours |
| Optimisation des ressources | Utilisation efficace de la mémoire et du processeur | Améliore les performances globales |
Au-delà de ces éléments essentiels, Browserless est conçu pour gérer facilement plusieurs tâches simultanément.
Traitement multitâche
Avec plus de 2 millions de sessions traitées, Browserless Chrome a généré des millions de captures d’écran, de PDF et de résultats de tests [5]. Son système intelligent de gestion des files d’attente garantit le traitement des requêtes sans surcharger les ressources, tout en maintenant des performances constantes. Cela s’est révélé particulièrement utile pour des entreprises telles que Samsara, qui a remplacé son service de tests interne par Browserless afin de bénéficier d’une meilleure scalabilité.
« Browserless propose une gamme de fonctionnalités conçues pour simplifier et accélérer les tâches d’automatisation des navigateurs web. Grâce à sa robuste API et à sa capacité à gérer des opérations parallèles, Browserless se distingue comme un leader de l’automatisation. » – Elest.io
Browserless ne se contente pas d’exceller dans le multitâche : il simplifie également les workflows d’automatisation grâce à des API prêtes à l’emploi.
Fonctions API prêtes à l’emploi
Browserless propose des API adaptées aux besoins d’automatisation courants, renforçant ainsi ses fonctionnalités principales :
- API de web scraping : extrait des données JSON structurées à partir d’éléments de pages web.
- API Unblock : récupère le contenu HTML après l’exécution de JavaScript.
- API Function : exécute du code Puppeteer personnalisé avec des imports de modules ESM.
Ces API ont produit des résultats concrets :
« Nous avons commencé à utiliser les navigateurs headless d’une autre entreprise de scraping pour exécuter des scripts Puppeteer. Mais les temps de récupération étaient lents, ce qui nécessitait une mise à niveau de Vercel, et les proxys ne fonctionnaient pas correctement. J’ai trouvé Browserless et notre code Puppeteer était opérationnel en une heure. Les extractions sont désormais 5 fois plus rapides et coûtent un tiers du prix, sans compter un support excellent. » – Nicklas Smit, développeur Full-Stack, Takeoff Copenhagen [2]
« Nous avons créé un outil de scraping pour entraîner nos chatbots sur des données de sites web publics, mais cela est rapidement devenu complexe en raison des cas particuliers et de la détection des bots. J’ai trouvé Browserless et prévu une journée pour l’intégration, mais cela n’a pris que quelques heures. Je n’ai pas eu besoin de devenir expert en gestion de serveurs proxy ou d’ordinateurs virtuels, ce qui me permet désormais de rester concentré sur les aspects essentiels de l’entreprise. » – Mike Heap, fondateur, My AskAI [2]
Qu’est-ce que browserless ?
sbb-itb-23997f1
Guide d’intégration des bibliothèques
Browserless Chrome fonctionne parfaitement avec les principales bibliothèques d’automatisation, en offrant performances et fiabilité. Voici comment l’intégrer à certains des outils les plus populaires.
Intégration de Puppeteer
Passer à Browserless avec Puppeteer est simple : il suffit de remplacer puppeteer.launch() par puppeteer.connect() [6].
| Type de configuration | Structure du code | Avantages |
|---|---|---|
| Puppeteer traditionnel | Utilise puppeteer.launch() | Consomme des ressources locales |
| Puppeteer avec Browserless | Utilise puppeteer.connect() | Optimisé pour le cloud |
| Browserless amélioré | Arguments de lancement personnalisés | Configurations avancées |
Vous pouvez également transmettre des arguments de lancement personnalisés via l’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}`
});
Cette configuration prend en charge des paramètres avancés tout en restant simple.
Intégration de Playwright
Browserless fonctionne tout aussi bien avec Playwright. Voici un exemple de connexion avec Firefox :
// Firefox implementation with Playwright Protocol
const browser = await playwright.firefox.connect(
'wss://production-sfo.browserless.io/firefox/playwright?token=YOUR_API_TOKEN_HERE'
);
Pour les développeurs utilisant Python, Browserless garantit une expérience cohérente :
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()
Cette compatibilité entre les langages facilite l’intégration de Browserless dans divers workflows.
Intégration de Selenium
Pour Selenium, utilisez la configuration Ruby suivante pour vous connecter à Browserless :
caps = Selenium::WebDriver::Remote::Capabilities.chrome("goog:chromeOptions" => {
"args" => [
"--disable-dev-shm-usage",
"--disable-extensions",
"--headless",
"--no-sandbox"
]
})
Vous pouvez établir la connexion WebDriver à l’aide d’un format d’URL simple :
driver = Selenium::WebDriver.for :remote,
url: "https://[email protected]/webdriver",
desired_capabilities: caps
Cette configuration garantit un fonctionnement sécurisé et efficace, en tirant parti du sandboxing et d’autres fonctionnalités d’économie des ressources. Fermez toujours les instances de navigateur après utilisation afin d’éviter les fuites de mémoire et d’optimiser l’utilisation des ressources.
Conseils de performance
Lorsque vous travaillez avec Browserless Chrome, la gestion des performances est essentielle pour maintenir l’efficacité. La plateforme gérant près de 5 millions de sessions headless par semaine [8], une gestion rigoureuse des ressources et de la sécurité est indispensable pour des opérations fluides à cette échelle.
Gestion des ressources
Une gestion efficace des ressources commence par la manière dont les instances de navigateur sont gérées. Au lieu de créer une nouvelle instance pour chaque tâche, réutilisez les instances existantes afin de réduire la surcharge liée au démarrage de nouvelles sessions :
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io?token=YOUR-TOKEN'
});
// Reuse the instance by disconnecting instead of closing
await browser.disconnect();
Une autre tactique efficace consiste à bloquer les ressources non nécessaires afin de réduire la consommation de ressources. Voici le détail :
| Type de ressource | Impact sur les performances | Action recommandée |
|---|---|---|
| Images | Consomment une bande passante élevée | Bloquer avec page.setRequestInterception() |
| Fichiers CSS | Utilisent de la mémoire supplémentaire | Désactiver sauf s’ils sont essentiels à la mise en page |
| Polices | Ralentissent le chargement | Bloquer les requêtes de polices externes |
Par exemple, Browserless.io a signalé une amélioration des performances en septembre 2024 : le blocage de ces ressources a réduit le temps d’exécution de 2 114 ms à 1 676 ms [10].
Gestion d’un trafic élevé
Une fois les ressources optimisées, l’étape suivante consiste à gérer efficacement un trafic élevé. La mise à l’échelle horizontale est plus fiable que de dépendre de quelques grandes instances.
« Chrome est vraiment très efficace pour utiliser l’ensemble des ressources du système et aime consommer à parts égales le processeur et la mémoire pour la plupart des tâches » [8]
Pour répondre à des besoins à fort volume, envisagez les stratégies suivantes :
- Utilisez Nginx pour répartir la charge entre plusieurs petites instances Browserless.
- Activez les vérifications d’état avant requête avec
PRE_REQUEST_HEALTH_CHECK=trueet limitez les sessions simultanées avecMAX_CONCURRENT_SESSIONS=10. - Assurez une terminaison correcte des processus afin d’éviter les processus « zombies » persistants.
« Quel que soit l’endroit ou la manière dont vous exécutez vos sessions headless, il est important de tuer Chrome avec le feu de mille soleils » [8]
Configuration de la sécurité
Une configuration sécurisée protège non seulement vos données, mais garantit aussi des performances constantes sous de fortes charges. Voici comment sécuriser votre déploiement :
- Stockez les clés API sous forme de valeurs hachées dans des environnements sécurisés.
- Utilisez des restrictions IP pour contrôler l’accès.
- Activez la gestion des accès basée sur les rôles.
- Appliquez une limitation de débit aux endpoints d’API.
Pour les déploiements Docker, définissez des limites de ressources afin d’éviter la surcharge :
docker run -e MAX_CONCURRENT_SESSIONS=10 \
-e CONNECTION_TIMEOUT=30000 \
--memory=2g \
--cpu-shares=1024 \
browserless/chrome
Pour gérer du code non fiable, utilisez le module vm2 afin de créer des environnements isolés. Cette approche prévient les attaques gourmandes en processeur. Depuis le 5 mars 2018, Browserless.io utilise dumb-init dans les conteneurs Docker pour gérer efficacement la terminaison des processus [9].
Résumé
Browserless Chrome simplifie l’automatisation en prenant en charge les tâches d’infrastructure les plus lourdes, qui occupaient auparavant une part importante du temps des développeurs, soit environ 60 %. En isolant Chrome des services principaux, il garantit un meilleur équilibrage de charge, une meilleure scalabilité et une meilleure gestion des erreurs. Un exemple notable est Samsara, qui a modernisé ses tests basés sur Puppeteer en éliminant les contraintes de maintenance d’une infrastructure spécialisée. Cela a permis à ses ingénieurs de se concentrer davantage sur le développement de leur produit principal plutôt que sur les opérations backend [1].
Voici un aperçu de ce qui fait de Browserless Chrome une solution révolutionnaire :
| Fonctionnalité | Impact métier |
|---|---|
| Séparation de l’infrastructure | Empêche les problèmes liés à Chrome de perturber l’ensemble du service [11] |
| Équilibrage de charge intégré | Permet une mise à l’échelle fluide sans configuration supplémentaire |
| Évitement de la détection des bots | Augmente les taux de réussite des tâches d’automatisation web [1] |
| Intégration de l’API REST | Simplifie considérablement les tâches telles que la création de PDF et la génération de captures d’écran [1] |
Ces fonctionnalités font du passage à Browserless Chrome un choix pratique et efficace pour les besoins d’automatisation.
Étapes pour démarrer
Vous souhaitez intégrer Browserless Chrome à votre workflow ? Voici comment commencer :
- Choisissez une méthode d’intégration : avant de vous lancer, testez les fonctionnalités avec le débogueur en ligne. Choisissez ensuite entre Puppeteer, Playwright ou Selenium selon vos outils actuels [7].
- Mettez à jour votre configuration : remplacez le lancement local de Puppeteer par une connexion à Browserless. Mettez simplement votre code à jour pour utiliser
puppeteer.connect()avec votre endpoint Browserless. - Suivez les performances : utilisez les outils intégrés de Browserless, tels que les vérifications d’état et les métriques de file d’attente, pour surveiller les performances [1].


