Erklärt
Ein Headless-Browser ist ein normaler Browser (Chrome, Firefox, WebKit), der ohne sichtbares Fenster läuft und eine programmatische API für Navigation, DOM-Interaktion und Rendering bereitstellt. Er führt JavaScript aus, wendet CSS an, verarbeitet Cookies und verhält sich nicht von einem normalen Browser zu unterscheiden -- der einzige Unterschied ist, dass es kein UI-Fenster und keine menschliche Eingabe gibt.
Für Scraping sind Headless-Browser notwendig, wenn die gewünschten Daten clientseitig durch JavaScript gerendert werden. Moderne Web-Apps (React, Vue, Angular SPAs) geben oft eine leere HTML-Hülle zurück, die nach dem Ausführen des JS befüllt wird; ein einfacher HTTP-Client wie `requests` oder `axios` würde nur die leere Hülle sehen. Ein Headless-Browser führt den vollständigen Seiten-Lebenszyklus aus und liefert Ihnen das vollständig gerenderte DOM.
Die wichtigsten Treiber sind Playwright (Microsoft, Multi-Browser), Puppeteer (Google, Chrome/Firefox) und Selenium (älteres WebDriver-basiertes, breiteste Sprachunterstützung). Jeder bietet Methoden zum Navigieren, Klicken, Tippen, Warten auf Elemente, Abfangen von Netzwerkanfragen und Extrahieren von Inhalten. Für Automatisierungsarbeiten, die menschlich aussehen müssen, sind Headless-Browser kombiniert mit Stealth-Plugins und Residential-Proxys der Standard-Stack.
So funktioniert es
Wenn Sie einen Headless-Browser über Playwright/Puppeteer/Selenium starten, startet der Treiber einen echten Chromium- (oder Firefox-/WebKit-) Prozess mit dem `--headless`-Flag und verbindet sich über ein Debugging-Protokoll damit (Chrome DevTools Protocol für Playwright/Puppeteer, WebDriver für Selenium). Ihr Skript sendet Befehle über dieses Protokoll -- `page.goto`, `page.click`, `page.evaluate` -- und der Browser führt sie aus, als ob ein menschlicher Nutzer steuern würde.
Der Browser verarbeitet all das, was ein echter Browser tut: TLS-Handshake (mit eigenem Fingerabdruck), HTTP/2- oder HTTP/3-Aushandlung, Cookie-Speicherung, JavaScript-Ausführung, Layout, Paint, Netzwerkanfragen für Unterressourcen. Ihr Skript kann jede davon abfangen, Anfragen/Antworten modifizieren, Skripte einschleusen und Daten aus dem gerenderten DOM extrahieren.