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.
