Monatelang hat DealMonitor stark auf Headless-Chrome-Browser gesetzt, um Preise aus Online-Shops zu extrahieren. Das funktionierte, war aber langsam, ressourcenhungrig und zunehmend fragil, weil immer mehr Shops Bot-Erkennung einsetzen. Mit v0.12 überdenken wir grundlegend, wie wir Preise abrufen. Die neue HTTP-First-Pipeline liefert Ergebnisse in Millisekunden statt Sekunden, und Headless-Browser starten nur noch, wenn sie wirklich benötigt werden.
Warum HTTP-First?
Für jeden Preischeck eine Headless-Chrome-Instanz zu starten, ist wie mit dem LKW zum Bäcker zu fahren. Die meisten Shops liefern ihre Produktseiten als einfaches HTML aus, mit Preisen direkt im Markup oder in strukturierten Daten. Eine einfache HTTP-Anfrage reicht, um alles Nötige zu bekommen.
Das Problem waren nie die Shops selbst. Es war die Bot-Erkennung. Dienste wie Cloudflare analysieren eingehende Anfragen auf TLS-Ebene und prüfen, ob die Verbindung von einem echten Browser oder einem Skript stammt. Ein normaler Python-HTTP-Client fällt bei dieser Prüfung sofort durch, weil sein TLS-Fingerprint nicht wie Chrome aussieht.
Hier kommt curl_cffi ins Spiel.
Chrome-TLS-Fingerprint-Impersonation
Jeder Browser hinterlässt während des TLS-Handshakes einen einzigartigen Fingerprint: die unterstützten Cipher-Suites, die Reihenfolge ihrer Präsentation, die verhandelten Extensions. Cloudflare und ähnliche Dienste pflegen eine Datenbank bekannter Browser-Fingerprints. Wenn deine Verbindung keinem entspricht, wirst du blockiert.
curl_cffi ist eine Python-Bibliothek, die libcurl mit der Fähigkeit erweitert, bestimmte Browser-Versionen auf TLS-Ebene nachzuahmen. Wenn DealMonitor eine HTTP-Anfrage über curl_cffi sendet, ist die Verbindung für den empfangenden Server nicht von einem echten Chrome-Browser zu unterscheiden. Die Cipher-Suites, die ALPN-Protokolle, die TLS-Extensions sind exakt das, was Chrome senden würde.
Das bedeutet, dass wir jetzt Seiten von Cloudflare-geschützten Shops abrufen können, ohne einen Browser zu starten. Die Anfrage ist in unter einer Sekunde abgeschlossen, statt der 5-15 Sekunden, die eine Selenium-Session braucht.
Die Pipeline in Aktion
So funktioniert die neue Scrape-Pipeline bei jedem Preischeck:
- HTTP-Versuch zuerst: Wir senden eine Anfrage über curl_cffi mit einem Chrome-TLS-Fingerprint. Wenn der Shop eine gültige HTML-Seite mit erkennbaren Preisen zurückgibt, sind wir fertig. Kein Browser nötig.
- Intelligente Header-Rotation: Jede Anfrage verwendet Header, die zum Ziel-Shop passen. User-Agent, Referer und Accept-Language-Header werden rotiert und für die Domain und das Land des Shops lokalisiert. Ein deutscher Shop bekommt deutsche Header; ein US-Shop bekommt amerikanisches Englisch.
- Selenium-Fallback: Wenn die HTTP-Antwort auf eine Challenge-Seite oder JavaScript-gerenderten Inhalt hindeutet, den wir nicht statisch parsen können, übernimmt im Hintergrund eine Headless-Chrome-Session.
Das Ergebnis ist beeindruckend. In unseren Tests werden etwa 70% aller Shops jetzt allein per HTTP aufgelöst. Das bedeutet schnellere Ergebnisse für dich und deutlich reduzierte Serverlast für uns.
Shop-Scrape-Modus-Lernen
Das System merkt sich, was funktioniert. Nach fünf aufeinanderfolgenden erfolgreichen HTTP-Only-Scrapes für eine Shop-Domain wird dieser Shop automatisch als HTTP-Only markiert. Zukünftige Checks überspringen den Selenium-Fallback komplett und sparen noch mehr Ressourcen. Wenn ein HTTP-Only-Shop später eine Challenge-Seite zurückgibt, setzt das System zurück und versucht Selenium erneut.
Dieses adaptive Verhalten bedeutet, dass die Pipeline mit der Zeit klüger wird, ohne manuelle Konfiguration.
Flugpreis-Tracking
v0.12 führt auch etwas ein, das unsere Nutzer seit dem ersten Tag wünschen: Flugpreis-Tracking. Flug- und Reisebuchungsseiten gehören zu den aggressivsten geschützten Websites im Internet. Scraping ist dort selbst mit Headless-Browsern praktisch unmöglich. Stattdessen haben wir den API-Ansatz gewählt.
DealMonitor integriert jetzt die Amadeus- und Kiwi.com-Flug-APIs. Hinweis: Flug-Tracking ist derzeit experimentell — Flugpreise sind extrem volatil und die API-Verfügbarkeit kann sich ändern. Wenn du eine URL von Expedia, Google Flights, Kayak, Skyscanner oder Momondo hinzufügst, extrahieren wir die Routen- und Datumsparameter und fragen die zugrundeliegende API direkt ab. Das liefert uns zuverlässige Echtzeit-Preise, ohne die Website zu berühren.
Flugpreise sind notorisch volatil und ändern sich mehrmals täglich. Mit API-basiertem Tracking können wir die Preise viel häufiger prüfen als es unser Standard-12-Stunden-Scrape-Zyklus für normale Shops erlaubt.
JSON-LD-Deduplizierung
Ein subtiles, aber wichtiges Fix in v0.12 behebt ein langjähriges Problem mit strukturierten Daten. Viele Shops betten Preisinformationen sowohl in sichtbaren HTML-Elementen als auch in JSON-LD-Blöcken ein. Unsere Kandidatenerkennung hat beides erfasst, was manchmal zu doppelten Kandidaten mit leicht unterschiedlichen Konfidenzwerten führte.
Die neue Pipeline dedupliziert Kandidaten: Wenn ein JSON-LD-Preis einem HTML-Kandidaten entspricht, hat die JSON-LD-Version Vorrang. Strukturierte Daten sind konstruktionsbedingt maschinenlesbar und weitaus weniger fehleranfällig als gescrapeter Text. Das verbessert die Erkennungsgenauigkeit insgesamt.
Code-Qualität
Hinter den Kulissen haben wir ruff über alle 60 Backend-Python-Dateien laufen lassen, um PEP-8-Konformität durchzusetzen. Imports sind sortiert, Whitespace ist konsistent, ungenutzter Code ist entfernt. Das ist zwar nicht nutzer-sichtbar, aber eine saubere Codebasis ist eine zuverlässige Codebasis. Es erleichtert uns auch, Features schneller mit weniger Bugs auszuliefern.
Was das für dich bedeutet
Die HTTP-First-Pipeline ist die größte architektonische Änderung seit dem Start von DealMonitor. Hier ist, was du bemerken wirst:
- Schnellere Preischecks: Die meisten Shops antworten jetzt in unter einer Sekunde statt in 5-15 Sekunden.
- Bessere Zuverlässigkeit: TLS-Fingerprinting umgeht viele Bot-Erkennungssysteme, die zuvor unsere Checks blockiert haben.
- Flug-Tracking: Füge URLs von großen Reiseportalen hinzu und verfolge Flugpreise neben deinen normalen Produkt-Trackern.
- Klügere Erkennung: JSON-LD-Deduplizierung bedeutet weniger Fehlalarme und genauere Preise.
Wir arbeiten mit jeder Version daran, Preis-Tracking schneller, zuverlässiger und umfassender zu machen. Wenn du DealMonitor noch nicht ausprobiert hast, erstelle dein kostenloses Konto und erlebe den Unterschied der HTTP-First-Pipeline. Und wenn du bereits Preise verfolgst, profitieren deine bestehenden Tracker bereits von diesen Verbesserungen.
Das vollständige technische Changelog findest du auf unserer Changelog-Seite.
