Was ist ein Headless-Browser? Sind sie bei der Datenerfassung hilfreich oder eher hinderlich?
Ein Headless-Browser ist ein Webbrowser ohne grafische Benutzeroberfläche (GUI). Er verfügt über kein sichtbares Fenster und keine Elemente der Benutzeroberfläche.
Sie verwenden einfach Skripte, um den Seiteninhalt zu verwalten.
Das bedeutet, dass Sie alle möglichen Unfug treiben können.
Aber heute werden wir uns ausschließlich mit den White-Hat-Themen befassen.
Was ist das Besondere an einem Headless-Browser?
- Schnellere Interaktionen mit Webinhalten – das bedeutet, dass Sie mehr der Daten abrufen können, die Sie benötigen.
- Zum Laden einer Seite sind weder so viel Bandbreite noch so viel Zeit erforderlich – das bedeutet, dass Sie nicht warten müssen.
- Das klingt irgendwie nach „Sleepy Hollow“ – was echt cool ist.

Wozu dient ein Headless-Browser?
Headless-Browser ermöglichen einen einfachen Zugriff auf das DOM (Document Object Model) einer Webseite, was für Frontend-Entwickler, die JavaScript-Frameworks wie AngularJS verwenden, von großem Nutzen ist.
Sie werden zudem häufig dazu verwendet, funktionsfähige Webseiten auf einem Headless-Server während automatisierter Tests zu laden und auszuführen. Dies wird als Headless-Browser-Test bezeichnet.
Testen mit einem Headless-Browser
Das „Headless“-Testen ist eine Technik des automatisierten Testens, die zur Validierung von Webseiten eingesetzt wird. Dabei steuert ein Programm einen Webbrowser mithilfe von Automatisierung, Skripten oder anderen Tools, ohne Grafiken darzustellen oder sichtbare UI-Komponenten auszuführen. Zu den Zielen des „Headless“-Browser-Testens können gehören:
- Überprüfung der Korrektheit von Markup, Inhalt und Formatierung auf einer HTML-/XHTML-Seite.
- Validierung eines Web- oder Anmeldeformulars.
- Auswertung von JavaScript für Ereignisbehandler und AJAX-Vorgänge.
Hiermit soll überprüft werden, ob dynamische Inhalte auf dem Bildschirm korrekt positioniert angezeigt werden usw.
Headless-Browser lassen sich auch gut mit anderer Software kombinieren. Neben dem Testen und der Webentwicklung können sie auch die Datenerfassung erleichtern.
Scraping mit einem Headless-Browser
„Headless Scraping“ ist eine automatisierte Technik zur Datenextraktion, die Sie in Verbindung mit einem Web-Scraper einsetzen können.
Ein Browser im Headless-Modus:
- Es durchsucht Websites und speichert die Webdaten in einem lokalen Verzeichnis auf einer Festplatte.
- Ruft mehrere Seiten von den meisten modernen Websites ab.
- Simuliert ein User-Agent-Profil, das für die Ausführung der JavaScript-Darstellung erforderlich ist.
- Lässt sich mit Befehlszeilenargumenten effizienter ausführen.
Beispielsweise werden Headless-Browser häufig verwendet, um Daten aus Online-Katalogen, Preisinformationen von E-Commerce-Websites oder in die Unternehmenswebsite eingebettete Social-Media-Widgets bzw. -Symbole zu extrahieren.
Welche Headless-Browser sind besonders beliebt?

Headless Chrome
Die Headless-Version des Chrome-Browsers von Google.
Firefox ohne Benutzeroberfläche
Ein Mozilla-Projekt, dessen Ziel es ist, eine „Headless“-Version des neuesten Webbrowsers zu erstellen, die WebGL und JavaScript unterstützt.


HtlmUnit
Ein Framework für Funktionstests, das Headless-Browser zum Laden und Überprüfen von Webseiten nutzt.
SimpleBrowser
Ein mit .NET 4-Software erstellter Headless-Browser, der in der Lage ist, Browser-Automatisierungsaufgaben auszuführen. Er unterstützt kein JavaScript, jedoch können Sie den User-Agent, den Referrer, die Request-Header, Formularwerte und weitere Parameter vor dem Absenden oder der Navigation anpassen.


SlimerJS
Ein Mozilla-Projekt, dessen Ziel es ist, JavaScript und HTML5 in einer dateisystemähnlichen Umgebung zu ermöglichen. Es nutzt Gecko (die Browser-Engine hinter Firefox) als Kern. Dadurch wird es in der Lage sein, alle JavaScript-APIs vollständig zu unterstützen (z. B. auch dann, wenn diese noch nicht implementiert oder in irgendeiner Weise unvollständig sind).
ZombieJS
Zombie stellt eine JavaScript-API bereit und nutzt Chromium. Chromium kann auf verschiedenen Webseiten ausgeführt werden, wird jedoch hauptsächlich dazu verwendet, die DOM-APIs und das Verhalten von Websites automatisch zu testen.

Wie nutzt man das „Headless Browsing“ zum Web-Scraping?
Der Zweck eines Headless-Browsers ist die Automatisierung (von Funktionstests, Webentwicklung usw.). Aufgrund ihrer einfachen Handhabung und der Fähigkeit, Aufgaben unbeaufsichtigt bzw. ohne menschliches Eingreifen auszuführen, eignen sie sich zudem hervorragend als Werkzeuge für das Web-Scraping.

Wenn Sie Headless-Browser zum Web-Scraping verwenden, müssen Sie dem Browser eine Liste von URLs übermitteln und anschließend warten, bis diese geladen sind. Sobald die Seiten im Headless-Browser geladen sind, lässt sich dieser Vorgang automatisieren, indem Sie Ihrem Headless-Browser Befehle über die Befehlszeile übermitteln.
Damit haben Sie die vollständige Kontrolle darüber, wann und wie URLs in Ihren Headless-Browser geladen werden.
Um Websites mit einem Headless-Browser zu scrapen, müssen Sie Ihrer Anwendung Bibliotheken hinzufügen, damit der Browser mit diesen kommunizieren kann. Diese Kommunikation kann über die Befehlszeile oder durch eine Verbindung zu einem Webserver erfolgen.
Die gängigsten Bibliotheken sind:
Anfragen
Eine unverzichtbare Python-Bibliothek für die Kommunikation mit Webservern über HTTP-Anfragen.


jsdom
Diese Bibliothek benötigt außerdem ein Paket namens „jsdom-global“, das zur Erstellung der vom Headless-Browser benötigten globalen Objekte verwendet wird.
Puppenspieler
Die Puppeteer-Bibliothek erleichtert die Steuerung von Chrome und Chromium im Vergleich zu anderen Bibliotheken wie Selenium/WebDriver. Sie können sie mit npm oder yarn in Node.js-Anwendungen installieren, um Tests durchzuführen oder Daten von Webseiten zu extrahieren. Sie bietet Ihnen Methoden zur Angabe der URL, zum Herunterladen von Ressourcen, zur Verwaltung von Cookies usw.

Wir dürfen nicht vergessen, dass Puppeteer eine Promise-basierte Bibliothek ist: Sie führt asynchrone Aufrufe an die Headless-Chrome-Instanz im Hintergrund aus.

Albtraum
Diese Bibliothek wird für Electron-Anwendungen verwendet. Sie stellt Electron Automatisierungstools zur Verfügung, mit denen eine Anwendung den Browserprozess von Electron über eine Fernverbindung steuern kann.
Selen
Für Headless-JavaScript stehen einige Bibliotheken zur Verfügung, die Selenium-Bindungen wie „webdriver.js“ und „selenium-webdriver“ nutzen.

Vielleicht denken Sie, dass es sicher schwierig sein muss, eine Bibliothek einzurichten, aber das ist es nicht. Schauen wir uns einmal ein Beispiel an.
Einführung in Puppeteer für Anfänger

Zunächst müssen Sie Puppeteer im Projektverzeichnis installieren.
Installation von Puppeteer
Um Puppeteer in einem Headless-Browser zu verwenden, führen Sie folgenden Befehl aus:
npm i puppeteer
# or "yarn add puppeteer"
Oder führen Sie für eine Lite-Version von Puppeteer folgenden Befehl aus:
npm i puppeteer-core
# or "yarn add puppeteer-core"
Wie oben bereits erwähnt, wird der gesamte Puppeteer-Code in NodeJS ausgeführt. Sie exportieren ihn als Factory-Funktion, die ein Objekt mit Methoden zur Steuerung von Chrome zurückgibt. Damit können Sie über die Methode „launch“ neue Browser-Instanzen erstellen, zu URLs navigieren, Ereignisse verarbeiten usw.
Der folgende Codeausschnitt ist für ein Puppeteer-Skript bestimmt.
Wenn Sie aufrufen möchten, navigieren Sie zu https://example.com und speichern Sie einen Screenshot als„example.png“:
Speichern Sie die Datei unter dem Namen„example.js“
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
await page.screenshot({ path: 'example.png' });
await browser.close();
})();
Führen Sie das Skript über die Befehlszeile aus:
node example.js
Wenn Sie eine PDF-Datei erstellen möchten:
Speichern Sie die Datei unter dem Namen„hn.js“.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {
waitUntil: 'networkidle2',
});
await page.pdf({ path: 'hn.pdf', format: 'a4' });
await browser.close();
})();
Ein Kinderspiel, nicht wahr?
Das obige Beispiel ist nur ein Codeausschnitt. Ein ausführliches Puppeteer-Tutorial mit weiteren Informationen finden Sie hier.
Welche Einschränkungen gibt es bei der Verwendung eines Web-Scrapers mit einem Headless-Browser?
Bei einem Headless-Server haben Sie in der Regel weniger Kontrolle, da viele Aufgaben zusätzliche Plugins oder Konfigurationen erfordern, die von einem Standard-Webbrowser übernommen werden. Beispielsweise unterstützen einige Headless-Browser keine CSS-Selektoren, was das Extrahieren von Daten aus dem DOM erschwert.
Auch wenn ein Headless-Browser effizient ist, können Websperren Ihre Arbeit verlangsamen. Je nachdem, wie viele Seiten Sie auslesen möchten, sollten Sie die Nutzung eines Proxy-Dienstes in Betracht ziehen. Ein Proxy-Dienst hilft Ihnen dabei, Ihre IP-Adresse vor einer möglichen Sperrung zu schützen.
Die besten Proxys für den Headless-Modus
Sollten alle Ihre API-Aufrufe und HTTP-Anfragen von derselben IP-Adresse aus erfolgen, wird der gesamte Vorgang unterbrochen.
Die besten Proxys für den Einsatz mit Web-Scrapern sind rotierende Proxys. Auf diese Weise verfügt jede Browser-Instanz über eine andere IP-Adresse.
Rotierende Privat-Proxys, auch als Backconnect-Proxys bezeichnet, eignen sich ideal für automatisierte Tests und Webanwendungen, die Daten erfassen.
Möchten Sie mehr über Proxys für das Web-Scraping mit einem Headless-Browser erfahren? Lesen Sie diesen Artikel darüber, wie viele Proxys Sie benötigen.

In diesem Artikel haben wir erläutert, was Headless-Browser sind und warum sie für diejenigen hilfreich sein können, die sie als Tool zum Web-Scraping nutzen möchten.
Sollten Sie weitere Fragen zu Headless-Browsern oder zu anderen Themen rund um das Web-Scraping haben, können Sie gerne unten einen Kommentar hinterlassen!
Häufig gestellte Fragen
Wie fange ich an?
Wählen Sie einfach einen Headless-Browser aus, der Ihren Anforderungen an die Webautomatisierung entspricht. Es stehen verschiedene Headless-Browser zur Verfügung, wie beispielsweise Headless Chromium und SlimerJS. Außerdem benötigen Sie eine Bibliothek. Wenn Sie beispielsweise Chrome verwenden möchten, müssen Sie die Puppeteer-Bibliothek installieren.
Warum der Name „Headless“-Browser?
Ein Headless-Browser verfügt über keine grafische Benutzeroberfläche (GUI); während der Ausführung sehen Sie lediglich eine Befehlszeilenschnittstelle (CLI). Webentwickler nutzen dies, um automatisierte Aufgaben wie Funktionstests und Web-Scraping auszuführen.
Über die Befehlszeilenschnittstelle (CLI) Ihres Headless-Browsers können Sie unter anderem Websites laden und mit diesen interagieren. Sie fungiert im Wesentlichen als hochgradig konfigurierbarer Proxy zwischen Ihnen und den Websites, die Sie auf Ihrem Headless-Server laden. Falls Sie noch keine Erfahrung mit Web-Scraping oder Headless-Browsern haben, vermittelt Ihnen dieser Artikel die Grundlagen. Er kann Ihnen beim Einstieg hilfreich sein.
Wer hat „Headless Chrome“ entwickelt?
„Headless Chrome“ ist ein von Google geleitetes Open-Source-Projekt.
Kann ich es für andere Zwecke als das automatisierte Web-Scraping verwenden?
Ja! Sie können ihn für automatisierte und funktionale Tests nutzen. Sie sollten alle Ihre Optionen abwägen, bevor Sie entscheiden, welcher Headless-Server Ihren Anforderungen am besten entspricht.
Da sie auf Automatisierung ausgelegt sind, eignen sich Headless-Browser hervorragend als Scraping-Tools, insbesondere in Verbindung mit einer Befehlszeilenschnittstelle.
Kann ich Headless-Browser über die Befehlszeile ausführen?
Ja. Bei vielen Headless-Servern haben Sie die Möglichkeit, diese über die jeweilige Befehlszeilenschnittstelle (CLI) oder über eine Web-Benutzeroberfläche, beispielsweise Chrome, zu bedienen. In einigen Fällen müssen Sie möglicherweise beide Optionen nutzen, um die vollständige Kontrolle über Ihren Headless-Browser zu erlangen.
Wie kann ich feststellen, ob ein Headless-Browser auf meinem Rechner läuft?
Sie können nachsehen, auf welcher Architektur Ihr lokales System läuft, und diese mit der Architektur der Headless-Browser vergleichen, die Sie verwenden möchten. Einige Headless-Server sind plattformübergreifend oder unterstützen mehrere Architekturen, doch dies gilt nicht für alle. Sie sollten dies vor der Verwendung überprüfen.
Stimmt es, dass Headless-Browser keine CSS-Selektoren unterstützen?
Dies gilt für einige (aber nicht alle) Headless-Server; insbesondere unterstützt PhantomJS keine CSS-Selektoren, während Headless Chrome diese sehr wohl unterstützt. Die Entwickler der einzelnen Headless-Browser können jederzeit verschiedene Funktionen hinzufügen und/oder entfernen, weshalb Sie sich stets vergewissern sollten, bevor Sie irgendwelche Annahmen treffen.
Funktionieren Headless-Browser mit JavaScript-Code?
In den meisten Fällen haben Headless-Browser keine Probleme bei der Ausführung von JavaScript-Code. Viele Webentwickler nutzen Headless-Browser zur Automatisierung ihrer Aufgaben und benötigen hierfür eine vollständige JavaScript-Unterstützung, um ihre Ziele zu erreichen.
Da nicht alle Headless-Browser JavaScript unterstützen, müssen Sie jeden einzelnen prüfen und feststellen, ob er Ihren spezifischen Anforderungen entspricht oder nicht.
Stimmt es, dass einige Headless-Server über APIs verfügen?
Ja! Einige Headless-Server verfügen über APIs, die es Ihnen ermöglichen, sie auf andere Weise zu nutzen, als lediglich Websites über einen Proxy-Server zu laden. Sie können in der jeweiligen Dokumentation nachlesen, welche Arten von APIs ein bestimmter Headless-Browser bietet. Dies ist eine gute Möglichkeit, um festzustellen, ob Sie diese mit Web-Scrapern verwenden sollten oder nicht, insbesondere wenn eine Proxy-API verfügbar ist.
Welche Headless-Browser unterstützen CSS-Selektoren?
Headless Chrome unterstützt derzeit CSS-Selektoren, die WebKit-Engine von PhantomJS hingegen nicht. Weitere Informationen zu den Systemvoraussetzungen finden Sie auf dieser Website.
Warum gelten nicht alle Web-Scraping-Tools als Headless-Browser?
Web-Scraping-Tools wie Scrapy ahmen die Benutzeroberfläche (UI) eines herkömmlichen Webbrowsers nach, um Daten von Websites zu extrahieren. Da diese Tools Seiten jedoch nicht in einem eigenen Fenster laden, stufen wir sie nicht als headless Browser ein.
Stimmt es, dass man mit Headless-Browsern keine mobilen Websites scrapen kann?
Es ist nicht garantiert, dass Headless-Browser auf allen Webseiten funktionieren, doch die meisten lassen sich damit problemlos ausführen. Für Mobilgeräte optimierte Websites werden auf Headless-Servern in der Regel nicht korrekt geladen, selbst wenn die Seite angezeigt werden kann.
Kann ich meine eigenen Headless-Browser testen?
Das sollte möglich sein, allerdings gibt es keine Garantie dafür, dass der Headless-Browser funktioniert. Da jeder Headless-Server unterschiedliche Funktionen und Eigenschaften aufweist, müssen Sie möglicherweise Ihr eigenes Tool anpassen, bevor es ordnungsgemäß läuft.
Ein einfaches Beispiel: Headless Chrome benötigt JavaScript, während PhantomJS CORS-Header benötigt, damit Webseiten korrekt geladen werden können.
Welche bewährten Vorgehensweisen kann ich beim Web-Scraping mit einem Headless-Browser anwenden?
Das Ziel des Web-Scrapings besteht in der Regel darin, Daten aus vollständig oder teilweise unzugänglichen Websites zu extrahieren, ohne Webdaten manuell in Formulare oder über Schaltflächen einzugeben.
Wenn Sie mehr darüber erfahren möchten, wie Web-Scraping funktioniert, lesen Sie diesen Artikel.
Sie müssen Ihren Headless-Browser auf ethische Weise nutzen. Die Möglichkeit, Daten aus vollständig oder teilweise unzugänglichen Seiten zu extrahieren, ist nicht unbedingt etwas Schlechtes. Dies kann jedoch der Fall sein, wenn der Betreiber der Website dies nicht wünscht.
Bitte überprüfen Sie alle Nutzungsbedingungen und Datenschutzrichtlinien sorgfältig, bevor Sie Daten von einer Website abrufen, da sich diese Bestimmungen ohne Vorankündigung ändern können.
Welche Headless-Browser eignen sich am besten für das Web-Scraping?
Headless Chrome und PhantomJS sind hervorragende Optionen für das Web-Scraping, da sie einfach zu bedienen und relativ schnell sind.
Warum ziehen es manche Entwickler vor, einen Headless-Browser anstelle eines herkömmlichen Browsers zu verwenden?
Manchmal kann es notwendig oder praktischer sein, einen Headless-Browser anstelle eines herkömmlichen Browsers zu verwenden, doch dies hängt in der Regel von den Besonderheiten des jeweiligen Projekts ab. Nehmen wir beispielsweise an, Sie möchten Daten von Websites auslesen, die Javascript benötigen, um ordnungsgemäß zu funktionieren. In diesem Fall ist die Arbeit mit Headless Chrome einfacher als mit dem herkömmlichen Google Chrome.
Headless Chrome bietet bessere Tracking-Funktionen als andere ähnliche Tools; dies ist bei der Arbeit an mehreren Projekten von Vorteil.
