Général

Georges Miloradovitch
Chercheur, rédacteur et intervieweur de cas d'utilisation
28 février 2025
Chrome sans navigateur est un service basé sur le cloud qui simplifie l'automatisation du navigateur en exécutant Chrome sans interface utilisateur pour des tâches telles que le scraping Web, la génération de PDF et les tests. Il élimine le besoin de configurations de navigateur locales et gère automatiquement les pannes de navigateur, l'isolation des sessions et l'optimisation des ressources. Les principaux avantages sont les suivants :
Installation rapide: Intégrez-vous aux bibliothèques populaires telles que Marionnettiste, Dramaturge, ou Sélénium en utilisant des méthodes de connexion simples. Browserless propose également des API pour le scraping Web, le rendu JavaScript et les flux de travail d'automatisation personnalisés.
Fonctionnalité | Bénéfice | Exemple |
---|---|---|
Nettoyage de session | Supprime automatiquement les sessions inactives | Maintient les ressources optimisées |
Prévention de la détection des robots | Contourne les bloqueurs comme Cloudflare | Fiable pour les tâches de scraping |
Traitement multitâche | Gère efficacement les demandes simultanées | Plus de 2 millions de sessions traitées chaque semaine |
API prêtes à l'emploi | Simplifie les tâches d'automatisation | Extraction de données JSON, PDF |
Chrome sans navigateur est idéal pour les développeurs et les entreprises qui cherchent à rationaliser l'automatisation sans gérer une infrastructure complexe.
Pour commencer à utiliser Chrome sans navigateur, vous pouvez choisir entre deux options d'installation : une configuration locale à l'aide de Docker ou un déploiement dans le cloud. Pour une configuration Docker locale, utilisez la commande suivante :
docker run -p 3000:3000 ghcr.io/browserless/chromium
Cette commande extrait la dernière image et la rend accessible sur le port 3000. Elle fonctionne parfaitement sous Windows, macOS et Linux.
Chrome sans navigateur inclut plusieurs fonctionnalités intégrées pour simplifier le processus de configuration :
Fonctionnalité | Paramètres par défaut | Objectif |
---|---|---|
Nettoyage de session | en 30 secondes | Supprime automatiquement les sessions inactives |
Bilans de santé | Activé | Assure la stabilité du système |
File d'attente des demandes | configurable | Gère plusieurs connexions simultanées |
Limites de ressources | Ajustable | 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 configuré, vous pouvez vous connecter à Browserless en utilisant votre méthode d'intégration préférée.
Selon la bibliothèque que vous utilisez, voici comment vous pouvez établir votre première connexion :
const browser = await puppeteer.connect({
browserWSEndpoint: 'wss://chrome.browserless.io?token=YOUR-API-TOKEN'
});
const browser = await playwright.firefox.connect(
`wss://production-sfo.browserless.io/firefox/playwright?token=${TOKEN}&proxy=residential`
);
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é avec deux points de terminaison régionaux : la côte ouest des États-Unis (production-sfo.browserless.io) et l'Europe (production-lon.browserless.io). Ces points de terminaison gèrent l'isolation des sessions, gèrent les demandes simultanées et récupèrent automatiquement après les pannes. Ils nettoient également les sessions inactives après 30 secondes en lançant une nouvelle instance de navigateur pour chaque nouvelle session.
Chrome sans navigateur fonctionne sans interface graphique et fonctionne en mode headless. Il démarre automatiquement de nouvelles instances de navigateur pour les requêtes entrantes, garantissant ainsi une utilisation efficace des ressources.
Voici un bref aperçu de ses principales fonctionnalités :
Fonctionnalité | Description | Bénéfice |
---|---|---|
Isolement de session | Sessions de navigation indépendantes | Réduit les coûts d'infrastructure |
Récupération automatique | Redémarrages après crash | Maintient les opérations en cours |
Optimisation des ressources | Utilisation efficace de la mémoire et du processeur | Augmente les performances globales |
Au-delà de ces éléments essentiels, Browserless est conçu pour gérer plusieurs tâches en même temps en toute simplicité.
Avec plus de 2 millions de sessions gérées, Browserless Chrome a généré des millions de captures d'écran, de PDF et de résultats de tests. Son système de gestion de file d'attente intelligent garantit que les demandes sont traitées sans surcharger les ressources, en maintenant des performances constantes. Cela s'est avéré particulièrement utile pour des entreprises comme Samsara, qui est passé d'un service de test interne à Browserless pour une meilleure évolutivité.
« Browserless propose une gamme de fonctionnalités conçues pour simplifier et accélérer les tâches d'automatisation du navigateur Web. Grâce à son API robuste et à sa capacité à gérer des opérations parallèles, Browserless se distingue comme un leader dans le domaine de l'automatisation. » – Elest.io
Browserless n'excelle pas seulement dans le multitâche : il simplifie également les flux de travail d'automatisation avec des API prêtes à l'emploi.
Browserless propose des API adaptées aux besoins d'automatisation courants, améliorant ainsi ses fonctionnalités principales :
Ces API ont fourni des résultats concrets :
« Nous avons commencé à utiliser les navigateurs headless d'une autre société de scraping pour exécuter les scripts Puppeteer. Mais il a fallu une mise à niveau de Vercel en raison des temps de récupération lents et les proxys ne fonctionnaient pas correctement. J'ai trouvé Browserless et j'ai fait fonctionner notre code Puppeteer en une heure. Les scrapings sont maintenant 5 fois plus rapides et 1/3 du prix, et le support a été excellent. » – Nicklas Smit, développeur Full-Stack, Takeoff Copenhagen
« Nous avons créé un outil de scraping pour former nos chatbots sur les données des sites Web publics, mais cela s'est rapidement compliqué en raison des cas extrêmes et de la détection des robots. J'ai trouvé Browserless et j'ai réservé une journée pour l'intégration, mais cela n'a pris que quelques heures. Je n'avais pas besoin de devenir un expert dans la gestion des serveurs proxy ou des ordinateurs virtuels, donc maintenant je peux me concentrer sur les parties essentielles de l'entreprise. » – Mike Heap, fondateur, My AskAI
Chrome sans navigateur fonctionne parfaitement avec les principales bibliothèques d'automatisation, offrant performances et fiabilité. Voici comment vous pouvez l'intégrer à certains des outils les plus populaires.
Passer au mode sans navigateur dans Puppeteer est simple : il suffit de remplacer puppeteer.launch()
avec puppeteer.connect()
.
Type de configuration | Structure du code | Avantages |
---|---|---|
Marionnettiste traditionnel | Utilisations puppeteer.launch() |
Consomme les ressources locales |
Marionnettiste sans navigateur | Utilisations puppeteer.connect() |
Optimisé pour le cloud |
Navigateur sans navigateur amélioré | Arguments de lancement personnalisés | Configurations avancées |
Vous pouvez également transmettre des arguments de lancement personnalisés via le point de terminaison 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 les configurations avancées tout en conservant la simplicité.
Browserless fonctionne également bien avec Playwright. Voici un exemple de connexion à l'aide de 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é interlinguistique facilite l’intégration de Browserless dans divers flux de travail.
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ûr et efficace, en tirant parti du sandboxing et d'autres fonctionnalités d'économie de ressources. Fermez toujours les instances du navigateur après utilisation pour éviter les fuites de mémoire et optimiser l'utilisation des ressources.
Lorsque vous travaillez avec Chrome sans navigateur, la gestion des performances est essentielle pour maintenir l'efficacité. La plateforme gérant près de 5 millions de sessions headless chaque semaine, une gestion minutieuse des ressources et de la sécurité est essentielle pour des opérations fluides à cette échelle.
La gestion efficace des ressources commence par la manière dont les instances du navigateur sont gérées. Au lieu de créer une nouvelle instance pour chaque tâche, réutilisez les instances existantes pour réduire la charge de travail 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 inutiles pour réduire l'utilisation des ressources. Voici une analyse détaillée :
Type de ressource | Impact sur les performances | Action recommandée |
---|---|---|
Images | Consomme beaucoup de bande passante | Bloquer en utilisant page.setRequestInterception() |
Fichiers CSS | Utilise de la mémoire supplémentaire | Désactiver sauf si cela est critique pour la mise en page |
Polices | Ralentit le chargement | Bloquer les demandes de polices externes |
Par exemple, Browserless.io a signalé une amélioration des performances en septembre 2024, où le blocage de ces ressources a réduit le temps d'exécution de 2,114 1,676 ms à XNUMX XNUMX ms.
Une fois les ressources optimisées, l'étape suivante consiste à gérer efficacement le trafic élevé. La mise à l'échelle horizontale est plus fiable que le recours à quelques grandes instances.
"Chrome est vraiment vraiment bon pour utiliser toutes les ressources du système et aime utiliser des parts égales de CPU et de mémoire pour la plupart des choses"
Pour gérer des demandes volumineuses, envisagez les stratégies suivantes :
PRE_REQUEST_HEALTH_CHECK=true
et limiter les sessions simultanées en utilisant MAX_CONCURRENT_SESSIONS=10
.« Peu importe où et comment vous exécutez vos sessions headless, il est important de tuer Chrome au feu de mille soleils"
Une configuration sécurisée protège non seulement vos données, mais garantit également des performances constantes en cas de charges importantes. Voici comment sécuriser votre déploiement :
Pour les déploiements Docker, définissez des limites de ressources pour éviter la surcharge :
docker run -e MAX_CONCURRENT_SESSIONS=10 \
-e CONNECTION_TIMEOUT=30000 \
--memory=2g \
--cpu-shares=1024 \
browserless/chrome
Pour gérer le code non fiable, utilisez le vm2
module pour créer des environnements isolés. Cette approche empêche les attaques gourmandes en CPU. Depuis le 5 mars 2018, Browserless.io utilise dumb-init
au sein des conteneurs Docker pour gérer efficacement la fin des processus.
Chrome sans navigateur simplifie l'automatisation en prenant en charge les tâches lourdes d'infrastructure, qui occupaient auparavant une part importante du temps des développeurs (environ 60 %). En isolant Chrome des services principaux, il garantit un meilleur équilibrage de charge, une meilleure évolutivité et une meilleure gestion des erreurs. Samsara en est un exemple notable : elle a remanié ses tests basés sur Puppeteer en supprimant les tracas liés à la maintenance d'une infrastructure spécialisée. Cela a permis à ses ingénieurs de se concentrer davantage sur la création de leur produit principal au lieu de se soucier des opérations en arrière-plan.
Voici un aperçu de ce qui fait de Chrome sans navigateur une solution révolutionnaire :
Fonctionnalité | Impact sur les entreprises |
---|---|
Séparation des infrastructures | Empêche les problèmes liés à Chrome de perturber l'ensemble du service |
Équilibrage de charge intégré | Permet une mise à l'échelle sans effort et sans configuration supplémentaire |
Évitement de la détection des robots | Augmente les taux de réussite des tâches d'automatisation Web |
Intégration de l'API REST | Facilite grandement les tâches telles que la création de PDF et la génération de captures d'écran |
Ces fonctionnalités font du passage à Chrome sans navigateur un choix pratique et efficace pour les besoins d'automatisation.
Vous souhaitez intégrer Chrome sans navigateur à votre flux de travail ? Voici comment vous pouvez commencer :
puppeteer.connect()
avec votre point de terminaison sans navigateur.