Eine Low-Code-Plattform, die die Einfachheit von No-Code mit der Leistung von Full-Code verbindet 🚀
Jetzt kostenlos starten
Headless-Modus in Puppeteer konfigurieren: Geschwindigkeit und Funktionalität ausbalancieren
24. März 2025
7
min lesen

Headless-Modus in Puppeteer konfigurieren: Geschwindigkeit und Funktionalität ausbalancieren

Headless-Modus in Puppeteer konfigurieren: Geschwindigkeit und Funktionalität ausbalancieren 35
Georgi Miloradowitsch
Forscher, Texter und Usecase-Interviewer

Puppenspieler ermöglicht Ihnen die Automatisierung Chrome or Chromium Browser und die Wahl zwischen kopflos or kopflos Der Modus kann die Leistung und das Debugging erheblich beeinträchtigen. Hier ist eine kurze Übersicht:

  • Kopfloser Modus: Schneller, verbraucht weniger Ressourcen, ideal für Automatisierungs- und Produktionsaufgaben wie Web Scraping oder Tests.
  • Headful-Modus: Visuelle Browseroberfläche, besser für Debugging und Entwicklung.

Schneller Vergleich

Merkmal Kopfloser Modus Headful-Modus
Visuelle Schnittstelle Keine GUI Vollständige Benutzeroberfläche
Ressourcennutzung Senken Höher
Ausführungsgeschwindigkeit Schneller Standard
Gedächtnis-Fußabdruck Kleinere Größere
Einfaches Debuggen Konsolenbasiert Visuelles Feedback

Neuer Headless-Modus kombiniert die Leistung von Headless mit verbesserten Debugging-Tools und ist somit eine ausgewogene Wahl für viele Arbeitsabläufe.

Wählen Sie:

  • Standard ohne Kopf für Effizienz bei CI/CD oder Produktion.
  • Neu Headless für erweitertes Debuggen und moderne Funktionen.
  • Headful-Modus zum visuellen Debuggen und Testen interaktiver Elemente.

In dieser Anleitung wird erläutert, wie die einzelnen Modi konfiguriert werden, welche Vorteile sie bieten und wann sie verwendet werden.

Puppenspieler - Headless- und Headful-Modi

Puppenspieler

1. Standard-Headless-Modus

Der standardmäßige Headless-Modus ist die Standardkonfiguration von Puppeteer. Dabei wird Chrome oder Chromium ohne grafische Benutzeroberfläche (GUI) ausgeführt. Durch den Verzicht auf die GUI wird weniger Speicher benötigt, Seiten werden schneller verarbeitet und die CPU-Auslastung reduziert.

Hauptfunktionen

Der standardmäßige Headless-Modus unterstützt eine breite Palette von Browservorgängen, darunter:

Merkmal Was es macht
Benutzersimulation Verarbeitet Klicks, Formulareingaben, Navigation
Inhaltsmanipulation Fügt JavaScript ein und modifiziert das DOM
Asset-Generierung Nimmt Screenshots auf, erstellt PDFs
Network Monitoring Verfolgt Anfragen und Antworten
Seitenautomatisierung Führt Skripte aus und extrahiert Inhalte

Wie man es benutzt

Sie können den Headless-Modus mit dem folgenden Code starten:

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

Warum es nützlich ist

Der Headless-Modus eignet sich ideal für Aufgaben wie Web Scraping, automatisierte Tests und das Erstellen von Screenshots oder PDFs. Beispielsweise: Optimizely seinen Testzyklus von 24 Stunden auf nur eine Stunde verkürzt, indem es Headless-Browsertests in der Cloud nutzte.

Herausforderungen, die es zu beachten gilt

Obwohl er effizient ist, bringt der Headless-Modus einige Hürden mit sich:

  • Bestimmte Websites können Headless-Browser erkennen und blockieren.
  • Ohne visuelles Feedback ist das Debuggen schwieriger.
  • Für komplexere Benutzerinteraktionen sind möglicherweise zusätzliche Einstellungen erforderlich.

Um die Zuverlässigkeit zu verbessern und eine Erkennung zu vermeiden, können Sie:

  • Legen Sie eine benutzerdefinierte User-Agent-Zeichenfolge fest.
  • Fügen Sie Verzögerungen zwischen automatisierten Aktionen hinzu.
  • Verwenden Sie leistungsstarke Fehlerbehandlungsmechanismen.
  • Stellen Sie sicher, dass die Seite vollständig geladen ist, bevor Sie Daten extrahieren.

Für noch mehr Effizienz bei bestimmten serverseitigen Aufgaben könnten Sie Folgendes in Betracht ziehen: chrome-headless-shell Variante. Diese einfache Option eignet sich perfekt für automatisierungsorientierte Workflows. Starten Sie sie mit:

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

Dieser Modus ist besonders effektiv für serverseitige Vorgänge und bietet eine optimierte Leistung.

Als Nächstes tauchen wir in den neuen Headless-Modus von Chrome ein und erfahren, wie er die Leistung auf die nächste Stufe hebt.

2. ChromeDer neue Headless-Modus

Chrome

Chrome hat einen verbesserten Headless-Modus eingeführt, der die Browserautomatisierung auf ein neues Niveau hebt. Im Gegensatz zur älteren Version verwendet dieser Modus die gleiche Codebasis wie der reguläre Chrome-Browser und gewährleistet so bessere Stabilität und Zugriff auf alle Browserfunktionen. Er kombiniert die Effizienz des Headless-Betriebs mit der Funktionalität eines vollwertigen Browsers und sorgt so für deutlich reibungslosere Automatisierung und Debugging.

Hauptfunktionen

Der neue Headless-Modus erstellt Plattformfenster, ohne sie anzuzeigen. So können Sie die volle Funktionalität des Browsers nutzen und gleichzeitig von den Leistungsvorteilen des Headless-Betriebs profitieren. So können Sie ihn in Ihrem Code verwenden:

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

Debugging-Tools

Dieser Modus enthält auch mehrere Tools, die das Debuggen erleichtern:

Merkmal Sinn
Visuelle Inspektion Browserverhalten anzeigen (einstellen headless: false)
Betriebszeitsteuerung Verwenden Sie das slowMo Option zum Verzögern von Aktionen
Konsolenüberwachung Erfassen Sie die Konsolenausgabe zur Analyse
Protokollanalyse Aktivieren Sie die DevTools-Protokollprotokollierung
Browserdiagnose Wasser dumpio: true für detaillierte Protokolle

Erweiterte Fehlerbehebung

1. Verwenden von DevTools zum Debuggen

Sie können die in Chrome integrierten DevTools aktivieren, um das Browserverhalten im Detail zu untersuchen:

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

2. Leistungsüberwachung und Fehlerverfolgung

Die gemeinsame Codebasis ermöglicht präzises Performance-Profiling und Fehlerbehebung. Verwenden Sie dieses Setup, um sowohl clientseitige als auch serverseitige Vorgänge zu überwachen und zu debuggen:

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

Migrationsleitfaden

Obwohl der ältere Headless-Modus (headless: 'old') noch verfügbar ist, empfiehlt es sich, auf die neue Version umzusteigen. Der Legacy-Modus wird irgendwann auslaufen. Daher gewährleistet die Umstellung jetzt Konsistenz und bereitet Sie auf zukünftige Updates vor.

Leistungsvorteile

Durch die Verwendung einer einheitlichen Codebasis bietet der neue Headless-Modus konsistentes Verhalten in verschiedenen Umgebungen. Diese Konsistenz reduziert umgebungsspezifische Probleme und erhöht die Zuverlässigkeit automatisierter Workflows.

sbb-itb-23997f1

3. Browser-Anzeigemodus

Der Browser-Anzeigemodus öffnet während Puppeteer-Operationen ein sichtbares Browserfenster. Er verbraucht zwar mehr Ressourcen, bietet aber bessere Debugging-Tools und visuelles Feedback.

Leistungsüberlegungen

Die Ausführung im Anzeigemodus erhöht die Ressourcennutzung, bietet aber einige Vorteile:

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

Mit einem sichtbaren Browser kann die GPU-Hardwarebeschleunigung aktiviert werden, was die Leistung auf bildlastigen Websites verbessert. Darüber hinaus verringert dieser Modus das Risiko einer Bot-Erkennung, indem er das Standard-Browserverhalten nachahmt.

Verbesserte Debugging-Funktionen

Der Anzeigemodus eignet sich ideal zur Fehlerbehebung und bietet sofortiges visuelles Feedback. Hier ist ein nützliches Debugging-Setup:

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

Diese Konfiguration öffnet DevTools automatisch, führt eine Verzögerung von 250 ms zur besseren Überprüfung ein und verwendet eine Standard-Ansichtsfenstergröße für konsistente Tests.

Anwendungsfälle

Szenario Das bringt das Programm Konfigurationstipps
Visuelles Debuggen Interaktionen in Echtzeit sehen Aktivieren Sie DevTools, verwenden Sie slowMo
GUI-Tests Beobachten Sie das Verhalten der Benutzeroberfläche Festlegen einer festen Ansichtsfenstergröße
Komplexe Arbeitsabläufe Überprüfen Sie detaillierte Interaktionen Kombinieren mit Konsolenprotokollierung

Optimierungstipps

Damit im Anzeigemodus alles reibungslos läuft:

  • Ressourcen verwalten: Schließen Sie nicht verwendete Tabs und Fenster, um Speicherplatz zu sparen.
  • Monitor Leistung: Aktivieren Sie die Browserprotokollierung, um Leistungsmetriken zu verfolgen.
  • GPU-Beschleunigung verwenden: Aktivieren Sie GPU-Funktionen für Aufgaben mit hoher Grafikleistung.

„Manchmal ist es nützlich zu sehen, was der Browser anzeigt. Anstatt im Headless-Modus zu starten, starten Sie eine Vollversion des Browsers mit Headless-Einstellung auf false." - Puppenspieler-Dokumentation

Fortgeschrittene Konfiguration

Für anspruchsvollere Aufgaben können Sie den Anzeigemodus mit zusätzlichen Einstellungen verbessern:

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

Dieses Setup verbessert die Sichtbarkeit, ermöglicht detailliertes Logging und ermöglicht Cross-Origin-Zugriff. Diese Optimierungen sorgen für ein reibungsloseres Erlebnis und legen den Grundstein für den Vergleich von Leistung und Funktionalität im nächsten Leitfaden.

Leitfaden zum Modusvergleich

Beim Einrichten von Puppeteer bietet jeder Modus eine unterschiedliche Kombination aus Geschwindigkeit, Ressourcennutzung und Debugging-Funktionen. Die Wahl des richtigen Modus hängt von Ihren spezifischen Anforderungen ab.

Hier ist eine Aufschlüsselung der Modi:

  • Standard-Headless-Modus
    Dieser Modus ist auf Effizienz und schnellen Start ausgelegt und eignet sich daher ideal für automatisierte Tests oder CI/CD-Pipelines. Er nutzt nur minimale Systemressourcen und bietet grundlegende Debug-Ausgaben über die Konsole.
  • Neuer Headless-Modus
    Kombiniert leistungsstarke Debugging-Funktionen mit einer Leistung, die dem Standard-Headless-Modus nahekommt. Es eignet sich gut für Aufgaben, die eine Kombination aus Geschwindigkeit und Funktionalität erfordern.
  • Browser-Anzeigemodus
    Dieser Modus bietet Ihnen vollen Zugriff auf die Chrome DevTools und visuelles Feedback in Echtzeit. Er eignet sich ideal für detailliertes Debugging oder die Analyse komplexer Workflows. Obwohl er mehr Systemressourcen benötigt, unterstützt er Aufgaben, die von Hardwarebeschleunigung und erweiterten Netzwerkkontrollen profitieren.

Puppeteer nutzt die Chrome DevTools-Protokoll für eine präzise Browsersteuerung, einschließlich Netzwerkabfang und JavaScript-Ausführung, sodass Sie Konfigurationen feinabstimmen können.

So können Sie beispielsweise den neuen Headless-Modus optimieren:

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

Verwenden Sie Standard Headless für eine schnelle, ressourceneffiziente Automatisierung, Browser Display für detailliertes Debugging oder New Headless, wenn Sie ein Gleichgewicht zwischen Leistung und Funktionalität benötigen.

Auswahl des richtigen Modus

Berücksichtigen Sie bei der Auswahl eines Puppeteer-Modus die spezifischen Ziele und Anforderungen Ihres Projekts. Puppeteer legt Wert auf Geschwindigkeit, Sicherheit, Stabilität und Einfachheit. Hier ist eine Übersicht, die Ihnen die Entscheidung erleichtert:

Standard-Headless-Modus ist ideal, wenn Sie Folgendes benötigen:

  • Maximale Leistung bei minimalem Ressourcenverbrauch
  • Kein visuelles Debugging oder Browser-Rendering
  • Eine zuverlässige Option für CI/CD-Umgebungen

Neuer Headless-Modus funktioniert am besten, wenn Sie Folgendes benötigen:

  • Erweiterte Debugging-Tools ohne Leistungseinbußen
  • Kompatibilität mit modernen Webfunktionen
  • Ein Gleichgewicht zwischen Ressourcennutzung und Funktionalität
  • Zugriff auf die meisten Funktionen des Chrome DevTools-Protokolls

Browser-Anzeigemodus eignet sich für Szenarien, die Folgendes beinhalten:

  • Detaillierte Debugging-Anforderungen
  • Visuelle Bestätigung von Automatisierungs-Workflows
  • Entwicklung und Test interaktiver Elemente
  • Die Verwendung der Hardwarebeschleunigung

Häufige Anwendungsfälle und Empfehlungen:

Projekttyp Empfohlener Modus Entscheidender Vorteil
CI/CD-Pipeline-Tests Standard ohne Kopf Schnelle Ausführung bei minimalem Ressourcenverbrauch
Entwicklung und Debugging Browseranzeige Umfassendes visuelles Feedback und DevTools
Produktionsautomatisierung Neu Headless Eine solide Mischung aus Funktionen und Leistung

Die API von Puppeteer erleichtert den Wechsel zwischen diesen Modi im Verlauf Ihres Projekts.

Zusammenhängende Artikel

Verwandte Blogs

Anwendungsfall

Unterstützt von
Headless-Modus in Puppeteer konfigurieren: Geschwindigkeit und Funktionalität ausbalancieren 40
Headless-Modus in Puppeteer konfigurieren: Geschwindigkeit und Funktionalität ausbalancieren 41
Headless-Modus in Puppeteer konfigurieren: Geschwindigkeit und Funktionalität ausbalancieren 42
Headless-Modus in Puppeteer konfigurieren: Geschwindigkeit und Funktionalität ausbalancieren 43