English

Ein Headless Browser ist ein Webbrowser, der ohne sichtbare Benutzeroberfläche läuft und per Code oder Kommandozeile gesteuert wird. Er lädt Seiten, führt JavaScript aus und baut das DOM auf wie ein normaler Browser, zeigt das Ergebnis aber nicht an. Mit „Headless“ im Sinn von Headless CMS hat das nichts zu tun.

Wie arbeitet ein Headless Browser?

Gestartet wird er meist über Automatisierungs-Bibliotheken wie Puppeteer, Playwright oder Selenium. Sie öffnen eine URL, warten auf das Laden, lesen den gerenderten HTML-Code aus oder erzeugen Screenshots. Bei Chrome genügt für den Start das Flag --headless.

Chrome hat den Modus mit Version 112 auf denselben Code wie das normale Chrome umgestellt. Die ältere, getrennte Implementierung gibt es seit Version 132 nur noch als eigenes Programm namens chrome-headless-shell.

Was bedeutet das für SEO?

Google rendert Seiten laut eigener Dokumentation mit einem Headless-Chromium. Wer sehen will, wie eine JavaScript-Seite nach dem Rendern aussieht, nutzt deshalb oft selbst einen Headless Browser. SEO-Crawler, die JavaScript-Seiten erfassen, setzen die Technik ebenfalls häufig ein (Einschätzung). Der Unterschied zum reinen HTML-Abruf zeigt sich im Vergleich von Raw HTML und gerendertem HTML.

Auf der Serverseite taucht der Begriff in Logfiles und Bot-Statistiken auf. Headless Browser dienen auch für Scraping und automatisierte Zugriffe, und manche Anbieter beschränken solche Zugriffe (Einschätzung). Ein Besuch aus einem Headless Browser lässt sich am User-Agent oder an Browser-Merkmalen erkennen, muss aber nicht, denn beides kann ein Skript anpassen.

Beispiel

Ein Puppeteer-Skript, das eine Seite rendert und das fertige HTML ausgibt:

JavaScript
import puppeteer from "puppeteer";

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://www.example.com/", { waitUntil: "networkidle0" });
console.log(await page.content());
await browser.close();

page.content() liefert das HTML nach der Ausführung von JavaScript, also die Sicht, die Suchmaschinen beim Rendern bekommen.

Häufige Fehler

  • Eigenen Testlauf mit Googles Rendering gleichsetzen: Googles Web Rendering Service behält laut Dokumentation keinen Zustand zwischen Seitenaufrufen, Local Storage, Session Storage und Cookies werden geleert. Ein Lauf mit gespeichertem Login oder Cookies zeigt deshalb nicht, was Google sieht.
  • Auf Berechtigungen und Echtzeitverbindungen bauen: Funktionen, die eine Nutzerfreigabe brauchen, ergeben für Googlebot keinen Sinn. WebSockets und WebRTC unterstützt Googlebot nicht.
  • Alten und neuen Headless-Modus verwechseln: Seit Chrome 112 teilt sich der Modus den Code mit dem normalen Chrome. Die frühere getrennte Implementierung gibt es seit Chrome 132.0.6793.0 nur noch als chrome-headless-shell.

Häufige Fragen

Ist ein Headless Browser dasselbe wie Googlebot? Nein. Googlebot ist der Crawler. Für das Rendern nutzt Google einen Headless Chromium, so beschreibt es die Dokumentation.

Lässt sich ein Headless Browser erkennen? Teilweise. Der User-Agent oder fehlende Browser-Merkmale können Hinweise geben. Zuverlässig ist das nicht.

Quellen

  1. Headless mode – Chrome for Developersdeveloper.chrome.com
  2. Grundlagen zu JavaScript-SEO – Google Search Centraldevelopers.google.com
  3. Headless browser – Wikipedia (ergänzend)en.wikipedia.org
  4. Fehlerbehebung bei Suchproblemen mit JavaScript – Google Search Centraldevelopers.google.com

Stand: