Une plateforme low-code alliant la simplicité du no-code à la puissance du full-code 🚀
Commencez gratuitement
Configuration du mode sans tête dans Puppeteer : équilibre entre vitesse et fonctionnalités
24 mars 2025
7
min lire

Configuration du mode sans tête dans Puppeteer : équilibre entre vitesse et fonctionnalités

Georges Miloradovitch
Chercheur, rédacteur et intervieweur de cas d'utilisation
Table des matières

Marionnettiste vous permet d'automatiser Chrome or Chromium navigateurs et choisir entre sans tête or tête pleine Le mode peut avoir un impact significatif sur les performances et le débogage. Voici un bref aperçu :

  • Mode sans tête:Plus rapide, utilise moins de ressources, idéal pour les tâches d'automatisation et de production telles que le scraping Web ou les tests.
  • Mode Headful:Interface de navigateur visuelle, meilleure pour le débogage et le développement.

Comparaison rapide

Fonctionnalité Mode sans tête Mode Headful
Interface visuelle Pas d'interface graphique Interface graphique complète
L'utilisation des ressources Coût en adjuvantation plus élevé. Meilleure performance du béton
Vitesse d'exécution Plus rapide Standard
Empreinte mémoire Plus petit Agrandir
Facilité de débogage Basé sur la console Retour visuel

Nouveau mode sans tête combine les performances du headless avec des outils de débogage améliorés, ce qui en fait un choix équilibré pour de nombreux flux de travail.

Choisissez:

  • Standard sans tête pour l'efficacité en CI/CD ou en production.
  • Nouveau sans tête pour un débogage avancé et des fonctionnalités modernes.
  • Mode Headful pour le débogage visuel et le test d'éléments interactifs.

Ce guide explique comment configurer chaque mode, leurs avantages et quand les utiliser.

Marionnettiste - Modes sans tête et avec tête

Marionnettiste

1. Mode sans tête standard

Le mode headless standard est la configuration par défaut de Puppeteer, qui exécute Chrome ou Chromium sans son interface graphique (GUI). En ignorant l'interface graphique, Puppeteer utilise moins de mémoire, traite les pages plus rapidement et réduit la charge du processeur.

Fonctionnalités clés

Le mode headless standard prend en charge une large gamme d'opérations de navigateur, notamment :

Fonctionnalité Ce qu'il fait
Simulation utilisateur Gère les clics, les saisies de formulaires et la navigation
Manipulation de contenu Injecte JavaScript, modifie le DOM
Génération d'actifs Capture des captures d'écran, crée des PDF
Surveillance réseau Suivi des demandes et des réponses
Automatisation des pages Exécute des scripts, extrait du contenu

Comment l'utiliser

Vous pouvez lancer le mode sans tête avec le code suivant :

const browser = await puppeteer.launch(); // Default headless
// OR
const browser = await puppeteer.launch({ headless: true }); // Explicit headless

Pourquoi c'est utile

Le mode sans tête est idéal pour des tâches telles que le web scraping, les tests automatisés et la création de captures d'écran ou de PDF. Par exemple : Optimizely réduire son cycle de test de 24 heures à seulement une heure en tirant parti des tests de navigateur sans tête dans le cloud.

Les défis à garder à l’esprit

Bien qu'efficace, le mode sans tête présente quelques obstacles :

  • Certains sites Web peuvent détecter et bloquer les navigateurs sans tête.
  • Le débogage est plus difficile sans retour visuel.
  • Des interactions utilisateur plus complexes peuvent nécessiter une configuration supplémentaire.

Pour améliorer la fiabilité et éviter la détection, vous pouvez :

  • Définissez une chaîne d’agent utilisateur personnalisée.
  • Ajoutez des délais entre les actions automatisées.
  • Utilisez des mécanismes de gestion des erreurs puissants.
  • Assurez-vous que la page est entièrement chargée avant d'extraire les données.

Pour une efficacité encore plus grande dans des tâches spécifiques côté serveur, vous pouvez envisager l' chrome-headless-shell Variante. Cette option légère est idéale pour les workflows axés sur l'automatisation. Lancez-la avec :

const browser = await puppeteer.launch({ headless: 'shell' });

Ce mode est particulièrement efficace pour les opérations côté serveur, offrant des performances rationalisées.

Ensuite, nous allons plonger dans le nouveau mode sans tête de Chrome et comment il fait passer les performances au niveau supérieur.

2. ChromeNouveau mode sans tête

Chrome

Chrome a introduit un mode headless amélioré qui propulse l'automatisation du navigateur à un niveau supérieur. Contrairement à l'ancienne version, ce mode utilise le même code source que le navigateur Chrome standard, garantissant une meilleure stabilité et un accès optimal à toutes les fonctionnalités du navigateur. Il allie l'efficacité du fonctionnement headless aux fonctionnalités d'un navigateur complet, rendant l'automatisation et le débogage beaucoup plus fluides.

Fonctionnalités clés

Le nouveau mode headless fonctionne en créant des fenêtres de plateforme sans les afficher. Cela vous permet d'exploiter pleinement les fonctionnalités du navigateur tout en bénéficiant des avantages de performance du fonctionnement headless. Voici comment l'utiliser dans votre code :

const browser = await puppeteer.launch({ headless: 'new' }); // Explicitly use new headless mode
// OR
const browser = await puppeteer.launch({ headless: true }); // Defaults to new headless mode

Outils de débogage

Ce mode comprend également plusieurs outils pour faciliter le débogage :

Fonctionnalité Objectif
Inspection visuelle Afficher le comportement du navigateur (définir headless: false)
Moment de l'opération Utilisez l'option slowMo possibilité de retarder les actions
Surveillance de la console Capturer la sortie de la console pour analyse
Analyse du protocole Activer la journalisation du protocole DevTools
Diagnostic du navigateur Utilisez dumpio: true pour les journaux détaillés

Dépannage avancé

1. Utilisation de DevTools pour le débogage

Vous pouvez activer les outils de développement intégrés de Chrome pour inspecter en détail le comportement du navigateur :

const browser = await puppeteer.launch({
  headless: 'new',
  devtools: true
});

2. Surveillance des performances et suivi des erreurs

La base de code partagée permet un profilage précis des performances et la résolution des erreurs. Utilisez cette configuration pour surveiller et déboguer les opérations côté client et côté serveur :

const browser = await puppeteer.launch({
  headless: 'new',
  devtools: true,
  slowMo: 100,
  args: ['--enable-logging', '--v=1']
});

Conseils sur la migration

Bien que l'ancien mode sans tête (headless: 'old') est toujours disponible, il est conseillé de passer à la nouvelle version. Le mode hérité sera progressivement supprimé ; la transition dès maintenant garantit la cohérence et vous prépare aux futures mises à jour.

Avantages en termes de performances

Grâce à une base de code unifiée, le nouveau mode headless offre un comportement cohérent dans différents environnements. Cette cohérence réduit les problèmes spécifiques à chaque environnement et améliore la fiabilité des workflows automatisés.

sbb-itb-23997f1

3. Mode d'affichage du navigateur

Le mode d'affichage Navigateur ouvre une fenêtre de navigateur visible pendant les opérations de Puppeteer. Bien qu'il consomme davantage de ressources, il offre de meilleurs outils de débogage et un retour visuel.

Considérations relatives aux performances

L'exécution en mode affichage augmente l'utilisation des ressources mais offre certains avantages :

const browser = await puppeteer.launch({
  headless: false,
  args: ['--enable-gpu-rasterization'],
  defaultViewport: null
});

Avec un navigateur visible, l'accélération matérielle GPU peut être activée, ce qui améliore les performances sur les sites web riches en images. De plus, ce mode réduit les risques de détection de robots en imitant le comportement standard du navigateur.

Fonctionnalités de débogage améliorées

Le mode d'affichage est idéal pour le dépannage, offrant un retour visuel immédiat. Voici une configuration de débogage utile :

const browser = await puppeteer.launch({
  headless: false,
  devtools: true,
  slowMo: 250,
  defaultViewport: {
    width: 1920,
    height: 1080
  }
});

Cette configuration ouvre automatiquement DevTools, introduit un délai de 250 ms pour une meilleure inspection et utilise une taille de fenêtre d'affichage standard pour des tests cohérents.

Scénarios d'utilisation

Scénario Avantages Conseils de configuration
Débogage visuel Voir les interactions en temps réel Activer DevTools, utiliser slowMo
Test de l'interface graphique Observer les comportements de l'interface utilisateur Définir une taille de fenêtre d'affichage fixe
Flux de travail complexes Vérifier les interactions détaillées Combiner avec la journalisation de la console

Conseils d'optimisation

Pour que tout fonctionne correctement en mode affichage :

  • Gérer les ressources:Fermez les onglets et les fenêtres inutilisés pour économiser de la mémoire.
  • Les performances du moniteur: Activez la journalisation du navigateur pour suivre les mesures de performances.
  • Utiliser l'accélération GPU: Activez les fonctionnalités du GPU pour les tâches impliquant des graphiques lourds.

Il est parfois utile de voir ce que le navigateur affiche. Au lieu de lancer le navigateur en mode headless, lancez une version complète du navigateur avec le mode headless défini sur false." - Documentation du marionnettiste

Une configuration avancée

Pour les tâches plus exigeantes, vous pouvez améliorer le mode d'affichage avec des paramètres supplémentaires :

const browser = await puppeteer.launch({
  headless: false,
  args: [
    '--enable-gpu-rasterization',
    '--window-size=1920,1080',
    '--disable-web-security'
  ],
  dumpio: true
});

Cette configuration améliore la visibilité, permet une journalisation détaillée et un accès multi-origines. Ces ajustements garantissent une expérience plus fluide et préparent le terrain pour la comparaison des performances et des fonctionnalités dans le prochain guide.

Guide de comparaison des modes

Lors de la configuration de Puppeteer, chaque mode offre une combinaison différente de vitesse, d'utilisation des ressources et de capacités de débogage. Le choix du mode le plus adapté dépend de vos besoins spécifiques.

Voici une répartition des modes :

  • Mode sans tête standard
    Ce mode est conçu pour l'efficacité et un démarrage rapide, ce qui le rend idéal pour les tests automatisés ou les pipelines CI/CD. Il utilise un minimum de ressources système et fournit des résultats de débogage de base via la console.
  • Nouveau mode sans tête
    Combine de puissantes fonctionnalités de débogage avec des performances proches du mode sans tête standard. C'est un excellent choix pour les tâches nécessitant un mélange de rapidité et de fonctionnalités.
  • Mode d'affichage du navigateur
    Ce mode vous donne un accès complet aux outils de développement Chrome et offre un retour visuel en temps réel. Il est idéal pour un débogage détaillé ou l'analyse de workflows complexes. Bien qu'il exige davantage de ressources système, il prend en charge les tâches qui bénéficient de l'accélération matérielle et de contrôles réseau avancés.

Le marionnettiste exploite le Protocole Chrome DevTools pour un contrôle précis du navigateur, y compris l'interception du réseau et l'exécution JavaScript, vous permettant d'affiner les configurations.

Par exemple, voici comment vous pouvez optimiser le nouveau mode sans tête :

const browser = await puppeteer.launch({
  headless: 'new',
  args: [
   '--disable-gpu',
   '--no-sandbox',
   '--disable-setuid-sandbox'
  ]
});

Utilisez Standard Headless pour une automatisation rapide et économe en ressources, Browser Display pour un débogage détaillé ou New Headless lorsque vous avez besoin d'un équilibre entre performances et fonctionnalités.

Choisir le bon mode

Lors du choix d'un mode dans Puppeteer, tenez compte des objectifs et exigences spécifiques de votre projet. Puppeteer privilégie la rapidité, la sécurité, la stabilité et la simplicité. Voici un aperçu pour vous aider à choisir :

Mode sans tête standard est idéal si vous avez besoin :

  • Des performances maximales en utilisant un minimum de ressources
  • Aucun débogage visuel ni rendu de navigateur
  • Une option fiable pour les environnements CI/CD

Nouveau mode sans tête fonctionne mieux lorsque vous avez besoin de :

  • Outils de débogage avancés sans sacrifier les performances
  • Compatibilité avec les fonctionnalités Web modernes
  • Un équilibre entre l'utilisation des ressources et la fonctionnalité
  • Accès à la plupart des fonctionnalités du protocole Chrome DevTools

Mode d'affichage du navigateur est adapté aux scénarios qui impliquent :

  • Besoins de débogage détaillés
  • Confirmation visuelle des flux de travail d'automatisation
  • Développement et test d'éléments interactifs
  • L'utilisation de l'accélération matérielle

Cas d'utilisation courants et recommandations :

Type de projet Mode recommandé Avantage clé
Tests de pipeline CI/CD Standard sans tête Exécution rapide avec une utilisation minimale des ressources
Développement et débogage Affichage du navigateur Retour visuel complet et outils de développement
Automatisation de la production Nouveau sans tête Un mélange solide de fonctionnalités et de performances

L'API de Puppeteer permet de basculer facilement entre ces modes à mesure que votre projet évolue.

articles similaires

Blogs connexes

Cas d'utilisation

Soutenu par