Latenode

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

Entdecken Sie die Unterschiede zwischen Headless- und Headful-Modus in Puppeteer, um Automatisierung, Debugging und Performance für Ihre Projekte zu optimieren.

7 Min. Lesezeit
Puppeteer-Konfiguration für Headless- und Headful-Modus

Puppeteer ermöglicht Ihnen die Automatisierung von Chrome- oder Chromium-Browsern. Die Wahl zwischen dem Headless- und dem Headful-Modus kann Leistung und Debugging erheblich beeinflussen. Hier ist ein kurzer Überblick:

  • Headless-Modus: Schneller, benötigt weniger Ressourcen und eignet sich ideal für Automatisierung und Produktionsaufgaben wie Web-Scraping oder Tests.
  • Headful-Modus: Visuelle Browseroberfläche, besser für Debugging und Entwicklung.

Schneller Vergleich

FunktionHeadless-ModusHeadful-Modus
Visuelle OberflächeKeine GUIVollständige GUI
RessourcennutzungGeringerHöher
AusführungsgeschwindigkeitSchnellerStandard
SpeicherbedarfGeringerHöher
Einfaches DebuggingKonsolenbasiertVisuelles Feedback

Der neue Headless-Modus kombiniert die Leistung des Headless-Modus mit verbesserten Debugging-Tools und ist damit für viele Workflows eine ausgewogene Wahl.

Wählen Sie:

  • Standard Headless für Effizienz in CI/CD oder der Produktion.
  • New Headless für erweitertes Debugging und moderne Funktionen.
  • Headful-Modus für visuelles Debugging und das Testen interaktiver Elemente.

Dieser Leitfaden erläutert, wie Sie die einzelnen Modi konfigurieren, welche Vorteile sie bieten und wann Sie sie einsetzen sollten.

Puppeteer – Headless- und Headful-Modi

1. Standard-Headless-Modus

Der Standard-Headless-Modus ist die Standardkonfiguration von Puppeteer und führt Chrome oder Chromium ohne grafische Benutzeroberfläche (GUI) aus. Da die GUI übersprungen wird, benötigt er weniger Speicher, verarbeitet Seiten schneller und senkt die CPU-Auslastung.

Wichtige Funktionen

Der Standard-Headless-Modus unterstützt eine breite Palette von Browseroperationen, darunter:

FunktionBeschreibung
NutzersimulationVerarbeitet Klicks, Formulareingaben und Navigation
InhaltsbearbeitungFügt JavaScript ein und verändert das DOM
Asset-ErstellungErstellt Screenshots und PDFs
NetzwerküberwachungVerfolgt Anfragen und Antworten
SeitenautomatisierungFührt Skripte aus und extrahiert Inhalte

So verwenden Sie ihn

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

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

Warum er nützlich ist

Der Headless-Modus eignet sich ideal für Aufgaben wie Web-Scraping, automatisierte Tests und die Erstellung von Screenshots oder PDFs. Beispielsweise verkürzte Optimizely seinen Testzyklus durch Headless-Browser-Tests in der Cloud von 24 Stunden auf nur eine Stunde [1].

Herausforderungen, die Sie beachten sollten

Der Headless-Modus ist zwar effizient, bringt jedoch einige Herausforderungen mit sich:

  • Bestimmte Websites können Headless Browser erkennen und blockieren.
  • Debugging ist ohne visuelles Feedback schwieriger.
  • Komplexere Nutzerinteraktionen können zusätzliche Einrichtung erfordern.

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

  • Einen benutzerdefinierten User-Agent-String festlegen.
  • Verzögerungen zwischen automatisierten Aktionen hinzufügen.
  • Robuste Mechanismen zur Fehlerbehandlung verwenden.
  • Sicherstellen, dass die Seite vollständig geladen ist, bevor Sie Daten extrahieren.

Für noch mehr Effizienz bei bestimmten serverseitigen Aufgaben können Sie die Variante chrome-headless-shell in Betracht ziehen. Diese schlanke 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 Operationen und bietet optimierte Leistung.

Als Nächstes betrachten wir den neuen Headless-Modus von Chrome und wie er die Leistung auf ein neues Niveau hebt.

2. Neuer Headless-Modus von Chrome

Chrome hat einen verbesserten Headless-Modus eingeführt, der die Browserautomatisierung auf ein neues Niveau bringt. Anders als die ältere Version basiert dieser Modus auf derselben Codebasis wie der reguläre Chrome-Browser. Das sorgt für mehr Stabilität und Zugriff auf alle Browserfunktionen. Er kombiniert die Effizienz des Headless-Betriebs mit der Funktionalität eines vollständigen Browsers und macht Automatisierung und Debugging deutlich reibungsloser.

Wichtige Funktionen

Der neue Headless-Modus erstellt Plattformfenster, ohne sie anzuzeigen. So können Sie alle Browserfunktionen nutzen und gleichzeitig von den Leistungsvorteilen des Headless-Betriebs profitieren. So verwenden Sie ihn in Ihrem 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

Debugging-Tools

Dieser Modus enthält außerdem mehrere Tools, die das Debugging erleichtern:

FunktionZweck
Visuelle InspektionBrowserverhalten anzeigen (headless: false festlegen)
Vorgangs-TimingMit der Option slowMo Aktionen verzögern
KonsolenüberwachungKonsolenausgaben zur Analyse erfassen
ProtokollanalyseProtokollierung des DevTools-Protokolls aktivieren
Browserdiagnosedumpio: true für detaillierte Logs verwenden

Erweiterte Fehlerbehebung

1. DevTools für Debugging verwenden

Sie können die integrierten DevTools von Chrome aktivieren, um das Browserverhalten detailliert zu untersuchen:

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

2. Leistungsüberwachung und Fehlerverfolgung

Die gemeinsame Codebasis ermöglicht präzises Leistungsprofiling und eine gezielte Fehlerbehebung. Verwenden Sie diese Konfiguration, um sowohl client- als auch serverseitige Operationen zu überwachen und zu debuggen:

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

Hinweise zur Migration

Obwohl der ältere Headless-Modus (headless: 'old') weiterhin verfügbar ist, empfiehlt sich der Wechsel zur neuen Version. Der Legacy-Modus wird langfristig eingestellt. Ein früher Umstieg sorgt für Konsistenz und bereitet Sie auf zukünftige Updates vor.

Leistungsvorteile

Durch die einheitliche Codebasis liefert der neue Headless-Modus ein 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 benötigt zwar mehr Ressourcen, bietet jedoch bessere Debugging-Tools und visuelles Feedback.

Leistungsaspekte

Der Betrieb 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 Websites mit vielen Bildern verbessert. Darüber hinaus reduziert dieser Modus die Wahrscheinlichkeit einer Bot-Erkennung, da er das Verhalten eines Standardbrowsers nachahmt.

Erweiterte Debugging-Funktionen

Der Anzeigemodus eignet sich ideal zur Fehlerbehebung und bietet sofortiges visuelles Feedback. Hier ist eine nützliche Debugging-Konfiguration:

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

Diese Konfiguration öffnet DevTools automatisch, fügt für eine bessere Untersuchung eine Verzögerung von 250 ms hinzu und verwendet eine Standard-Viewport-Größe für konsistente Tests.

Einsatzszenarien

SzenarioVorteileKonfigurationstipps
Visuelles DebuggingInteraktionen in Echtzeit sehenDevTools aktivieren, slowMo verwenden
GUI-TestsVerhalten der Benutzeroberfläche beobachtenEine feste Viewport-Größe festlegen
Komplexe WorkflowsDetaillierte Interaktionen prüfenMit Konsolenprotokollierung kombinieren

Optimierungstipps

Damit im Anzeigemodus alles reibungslos läuft:

  • Ressourcen verwalten: Schließen Sie nicht verwendete Tabs und Fenster, um Speicher zu sparen.
  • Leistung überwachen: Aktivieren Sie Browser-Logging, um Leistungsmetriken zu verfolgen.
  • GPU-Beschleunigung verwenden: Aktivieren Sie GPU-Funktionen für Aufgaben mit aufwendiger Grafik.

„Manchmal ist es hilfreich zu sehen, was der Browser anzeigt. Statt im Headless-Modus zu starten, starten Sie eine vollständige Browserversion, indem Sie headless auf false setzen.“ – Puppeteer-Dokumentation [2]

Erweiterte Konfiguration

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

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

Diese Konfiguration verbessert die Sichtbarkeit, aktiviert detaillierte Protokollierung und erlaubt Cross-Origin-Zugriffe. Mit diesen Anpassungen sorgen Sie für eine reibungslosere Nutzung und schaffen die Grundlage für den Vergleich von Leistung und Funktionen im nächsten Leitfaden.

Leitfaden zum Modusvergleich

Bei der Einrichtung von Puppeteer bietet jeder Modus eine andere Kombination aus Geschwindigkeit, Ressourcennutzung und Debugging-Funktionen. Welcher Modus der richtige ist, hängt von Ihren konkreten Anforderungen ab.

Hier ist eine Übersicht der Modi:

  • Standard-Headless-Modus
    Dieser Modus ist auf Effizienz und schnelle Starts ausgelegt und damit perfekt für automatisierte Tests oder CI/CD-Pipelines. Er benötigt minimale Systemressourcen und stellt grundlegende Debugging-Ausgaben über die Konsole bereit.
  • New Headless-Modus
    Kombiniert leistungsstarke Debugging-Funktionen mit einer Leistung, die nahe am Standard-Headless-Modus liegt. Er ist eine gute Wahl für Aufgaben, die eine Mischung aus Geschwindigkeit und Funktionalität erfordern.
  • Browser-Anzeigemodus
    Dieser Modus bietet Ihnen vollständigen Zugriff auf Chrome DevTools und visuelles Echtzeit-Feedback. Er ist ideal für detailliertes Debugging oder die Analyse komplexer Workflows. Zwar benötigt er mehr Systemressourcen, unterstützt jedoch Aufgaben, die von Hardwarebeschleunigung und erweiterten Netzwerksteuerungen profitieren.

Puppeteer nutzt das Chrome DevTools Protocol für eine präzise Browsersteuerung, einschließlich Netzwerkinterception und JavaScript-Ausführung. Dadurch können Sie Konfigurationen genau abstimmen.

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

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

Verwenden Sie Standard Headless für schnelle, ressourceneffiziente Automatisierung, den Browser-Anzeigemodus für detailliertes Debugging oder New Headless, wenn Sie ein ausgewogenes Verhältnis von Leistung und Funktionalität benötigen.

Den richtigen Modus auswählen

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 [3]. Die folgende Übersicht hilft Ihnen bei der Entscheidung:

Der 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

Der New Headless-Modus eignet sich 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 Protocol

Der Browser-Anzeigemodus eignet sich für Szenarien mit:

  • Detaillierten Debugging-Anforderungen
  • Visueller Bestätigung von Automatisierungs-Workflows
  • Entwicklung und Tests interaktiver Elemente
  • Nutzung von Hardwarebeschleunigung

Häufige Anwendungsfälle und Empfehlungen:

ProjekttypEmpfohlener ModusWichtigster Vorteil
Tests von CI/CD-PipelinesStandard HeadlessSchnelle Ausführung bei minimalem Ressourcenverbrauch
Entwicklung und DebuggingBrowser-AnzeigemodusVollständiges visuelles Feedback und DevTools
ProduktionsautomatisierungNew HeadlessSolide Kombination aus Funktionen und Leistung

Die API von Puppeteer erleichtert den Wechsel zwischen diesen Modi, wenn sich Ihr Projekt weiterentwickelt.

References

FAQ

Frequently Asked Questions

Im Headless-Modus läuft Chrome oder Chromium ohne sichtbare grafische Benutzeroberfläche, benötigt weniger Ressourcen und wird schneller ausgeführt – ideal für CI/CD, Scraping und Automatisierungen in der Produktion. Der Headful-Modus (headless: false) öffnet ein sichtbares Browserfenster mit vollem Zugriff auf DevTools und eignet sich besser für visuelles Debugging und interaktive Tests.

War das hilfreich? Teile es →

Geschrieben von

Vasiliy Datsenko

Leiter des Kundensupports

Vasiliy Datsenko ist Leiter des Kundensupports bei Latenode und ein produktorientierter Autor zum Thema Automatisierung. Seine Arbeit verbindet Kundengespräche, Workflow-Automatisierungsforschung, KI-Anwendungsfälle und praktische Produktschulungen für Teams, die echte Geschäftsprozesse automatisieren möchten.

Autorenprofil →

Faktencheck von

Oleg Zankov

CEO Latenode, No-code-Experte

Mit einer Philosophie, die auf Innovation, Problemlösung und Benutzererfahrung basiert, konzentriere ich mich darauf, Teams zu befähigen, maßgeschneiderte Integrationen zu erstellen und Arbeitsabläufe einfach und effizient zu automatisieren. Mit umfangreicher Erfahrung in den Bereichen Geschäftsentwicklung, Technologieunternehmertum und Softwareentwicklung erkannte ich den Bedarf an einer zugänglicheren, skalierbareren und anpassungsfähigeren Integrationslösung. So entstand Latenode.com. Mit unserer Plattform können Unternehmen die Macht der Technologie nutzen, ohne umfassende Programmierkenntnisse zu benötigen. Leidenschaftlich daran interessiert, eine Zukunft zu fördern, in der Technologie uns dient und nicht umgekehrt, ist es meine Mission, komplexe Prozesse zu vereinfachen. Ich glaube an die Demokratisierung der Technologie und daran, Teams mit den Werkzeugen auszustatten, um in einer zunehmend digitalen Welt zu innovieren, zu wachsen und erfolgreich zu sein.

Autorenprofil →

Weiterlesen