Zum Inhalt springen
Zurück zum Blog

HTTP-Cookies: Ein Leitfaden für Entwickler zum Auslesen von Sitzungen

Gabriel CiociZuletzt aktualisiert am 12 min read
HTTP-Cookies: Ein Leitfaden für Entwickler zum Auslesen von Sitzungen
TL;DR: HTTP-Cookies ermöglichen es einem Client, den Status zwischen Anfragen zu übertragen, doch ein gespeichertes Cookie ist keine Garantie für eine authentifizierte Sitzung. Verwenden Sie einen Cookie-Jar, halten Sie Konten voneinander getrennt, machen Sie sich mit browserspezifischen Regeln vertraut und überprüfen Sie die zurückgegebene Seite, bevor Sie sie als gescrapte Daten behandeln.

Ihr Scraper fordert eine Katalogseite an und erhält eine erfolgreiche Antwort. Der Parser findet jedoch keine Produkte. In einem Browser funktioniert dieselbe URL. Bevor Sie Selektoren ändern, prüfen Sie, ob es sich bei der Antwort tatsächlich um eine Anmeldeseite, eine Regionsauswahl oder einen Einwilligungsbildschirm handelt.

HTTP-Cookies sind kleine Statusinformationen, die ein Client speichert und möglicherweise mit nachfolgenden Anfragen übermittelt. Sie erklären oft, warum identische URLs unterschiedliche Inhalte zurückgeben. Ein Cookie kann eine Sitzung identifizieren, eine Sprache speichern oder eine Anwendungseinstellung enthalten. Die Bedeutung liegt bei der Anwendung, nicht beim Cookie-Protokoll selbst.

Für Entwickler, die Daten erfassen, ist es wichtig, diesen Status bewusst zu verwalten. Sie müssen wissen, welcher Client ein Cookie erhalten hat, wohin es weitergeleitet werden darf, ob der Server es noch akzeptiert und wie sich Fehler diagnostizieren lassen, ohne dass Anmeldedaten in Protokolle gelangen.

Dieser Leitfaden verfolgt ein Cookie von der Antwort bis zur Anfrage, unterscheidet einen HTTP-Client von einem Browser und zeigt eine lokale Python-Übung, mit der sich das Sitzungsverhalten beobachten lässt. Der Fokus liegt auf Ihren eigenen Anwendungen und Konten, zu deren Nutzung Sie berechtigt sind. Das Kopieren der Sitzung einer anderen Person ist kein legitimer Umweg zum Datenzugriff.

Verfolgen Sie HTTP-Cookies von der Antwort bis zur Anfrage

Ein typischer Austausch beginnt mit einer Serverantwort, die Folgendes enthält Set-Cookie. Der Client verarbeitet das Cookie und seine Attribute und entscheidet dann, ob er das Name-Wert-Paar in einen späteren Cookie Anfrage-Header einzufügen. Dabei handelt es sich um unterschiedliche Header mit unterschiedlichen Aufgaben, nicht um austauschbare Zeichenfolgen.

Die HTTP-Cookie-Spezifikation definiert den zugrunde liegenden Mechanismus zur Zustandsverwaltung. Wichtig ist, dass Anfrage-Cookies nicht alle Attribute enthalten, die in der Antwort vorkamen. Die Tatsache, dass ein Name und ein Wert auf dem Server zu sehen sind, sagt nichts über die ursprüngliche Lebensdauer des Cookies oder den Kontext seiner Erstellung aus.

HTTP/1.1 200 OK
Set-Cookie: preference=compact; Path=/catalog; Secure; SameSite=Lax

GET /catalog/items HTTP/1.1
Host: shop.example
Cookie: preference=compact

In diesem veranschaulichenden Austausch werden nicht zum Thema gehörende Header weggelassen. Die zweite Nachricht enthält den Präferenzwert, nicht Path, Secureoder SameSite. Diese Attribute helfen dem Client bei der Entscheidung, ob er das Cookie senden soll. Es handelt sich nicht um zusätzliche Präferenzwerte, die dein Parser erfassen muss.

Es können mehrere Cookies in separaten Set-Cookie Feldern eintreffen. Behandeln Sie diese Felder nicht als durch Kommas getrennte Liste: Ein Ablaufdatum kann selbst ein Komma enthalten. Nutzen Sie die Cookie-Verarbeitung der HTTP-Bibliothek, anstatt einen einfachen Header-Splitter zu schreiben, der nur bei Ihrer ersten Testantwort funktioniert.

Betrachten Sie einen Erfassungsvorgang eher als Abfolge von Schritten statt als einzelne Anfrage. Die Einstiegsseite legt möglicherweise eine Region fest. Eine spätere Antwort aktualisiert möglicherweise eine Sitzung. Eine Weiterleitung könnte ein weiteres Cookie setzen, bevor die Zielseite geladen wird. Wenn Sie nur die sichtbaren Header der letzten Antwort speichern, könnte der Schritt, der den Status geändert hat, übersehen werden.

Schreiben Sie die erwartete Abfolge für Ihre Integration auf. Zum Beispiel: die zulässige Sitzung einrichten, die ausgewählte Region bestätigen, die Erfassungsseite anfordern und den datenspezifischen Marker überprüfen. Dieses kleine Modell erleichtert es, Fehler von HTML-Änderungen zu unterscheiden.

Der Geltungsbereich von Cookies ist Teil der Korrektheit. Eine für einen bestimmten Pfad vorgesehene Einstellung sollte nicht versehentlich zu einer globalen Annahme für den gesamten Crawler werden. Ebenso können zwei Cookies mit demselben Namen unter unterschiedlichen Geltungsbereichen existieren. Werden sie zu einem einzigen Wörterbuch zusammengefasst, gehen möglicherweise Informationen verloren, die Sie später benötigen.

Die Set-Cookie-Referenz dokumentiert die Attribute und ihr Verhalten im Browser. Die folgende Tabelle dient als praktische Lesehilfe und ist kein Ersatz für die Implementierung des Auswahlalgorithmus des Browsers.

Attribut

Frage, zu deren Beantwortung es beiträgt

Auswirkungen auf den Collector

Domain

Welche Hosts befinden sich im Geltungsbereich?

Beibehaltung des Host-Gültigkeitsbereichs beim Importieren des Status

Path

Welche Anforderungspfade stimmen überein?

Ein Cookie für einen Bereich darf nicht mit einem anderen Bereich einhergehen

Secure

Ist eine verschlüsselte Übertragung erforderlich?

Eine Produktionssitzung nicht auf HTTP herabstufen

HttpOnly

Kann das JavaScript der Seite darauf zugreifen?

Ein fehlender Wert in document.cookie bedeutet nicht, dass es nicht vorhanden ist

Expires / Max-Age

Wann sollte der Client die Speicherung beenden?

Überprüfen Sie die Gültigkeitsdauer, bevor Sie Selektoren dafür verantwortlich machen

SameSite

Ist diese Browseranfrage im Kontext der Website zulässig?

Ein domänenübergreifender Ablauf unterscheidet sich von einer direkten Anfrage

Behandeln Sie diese Tabelle als Checkliste zur Fehlerbehebung. Wenn ein Cookie im Speicher sichtbar ist, aber in der ausgehenden Anfrage fehlt, vergleichen Sie das tatsächliche Ziel und den Kontext mit dessen Gültigkeitsbereich. Erweitern Sie die Domain nicht und entfernen Sie keine Sicherheitsattribute, nur um einen Test zu bestehen. Das verändert das Experiment und kann zu einem Verlust von Anmeldedaten führen.

Ein wichtiger Unterschied besteht zwischen der Lebensdauer des gespeicherten Cookies und der Lebensdauer der serverseitigen Sitzung. Ein Cookie kann weiterhin vorhanden sein, obwohl die zugehörige Sitzung bereits beendet wurde. Umgekehrt kann ein Browser den Sitzungsstatus nach einem Neustart wiederherstellen. „Das Cookie existiert“ und „der Nutzer ist authentifiziert“ sind zwei getrennte Feststellungen.

Unterscheiden Sie außerdem den Cookie-Namen von dem Konto, das er repräsentiert. Ein Name wie session liefert Ihnen keine verlässlichen Informationen über dessen Berechtigungen oder Eigentümer. Halten Sie diese Zuordnung in der kontrollierten Konfiguration Ihres Jobs fest und überprüfen Sie sie, sofern verfügbar, durch eine anwendungsspezifische, nicht sensible Identitätsprüfung.

Das Weglassen von Domain wird ein host-only-Cookie erstellt; durch Setzen kann es Subdomains einschließen. Bei Browser-Anfragen SameSite=Strict schließt die siteübergreifende Nutzung aus, während Lax bestimmte Top-Level-Navigationen unter Verwendung sicherer Methoden zulässt, jedoch keine gewöhnlichen siteübergreifenden Abrufe. SameSite=None erfordert Secure, und Einschränkungen des Browsers für Drittanbieter können die Übertragung dennoch verhindern. HttpOnly verhindert, dass JavaScript auf der Seite den Wert ausliest, aber berechtigte, von JavaScript initiierte Anfragen können das Cookie dennoch übertragen. Diese Unterschiede sind der Grund, warum die Überprüfung document.cookie allein ein unvollständiger Test ist.

Für eine praktische Debugging-Vorrichtung notieren Sie sowohl die auslösende Seite als auch die angeforderte URL. Die Aussage „Die Anfrage geht an denselben Endpunkt“ lässt den Kontext außer Acht, der unterschiedliches Browserverhalten erklären könnte. Testen Sie direkte Navigation und eingebettete Anfragen separat, wenn beide zu Ihrem zulässigen Arbeitsablauf gehören, und dokumentieren Sie, welchen Fall der Collector reproduzieren muss.

Wählen Sie zwischen einem HTTP-Client und einem echten Browser

Ein HTTP-Client sendet Anfragen und verarbeitet Antworten. Ein Browser führt zusätzlich Skripte aus und verwaltet den Seitenkontext, in dem Anfragen stattfinden. Dieser Unterschied ist der Grund, warum das Exportieren von HTTP-Cookies aus einem Browser kein universeller Weg ist, um eine Browsersitzung zu reproduzieren.

Beginnen Sie mit dem kleinsten Client, der den genehmigten Workflow unterstützt. Wenn ein dokumentierter Endpunkt oder eine vom Server gerenderte Seite die erforderlichen Daten bereitstellt, reicht oft eine persistente HTTP-Sitzung aus. Wenn die Anwendung skriptgesteuerte Navigation oder Interaktion benötigt, ist möglicherweise ein Browser die geeignete Erfassungsschicht. Unser Leitfaden zu Python-HTTP-Clients hilft Ihnen bei dieser Entscheidung.

Verhalten

HTTP-Sitzungs-Client

Browser-Kontext

Cookies über mehrere Anfragen hinweg beibehalten

Wird in der Regel von einem Cookie-Speicher bereitgestellt

Wird als Browserstatus verwaltet

JavaScript der Seite ausführen

Nicht eigenständig

Ja

Lokalen Speicher verwalten

Nicht automatisch

Innerhalb der Herkunft verfügbar

Browser-Navigationsrichtlinie anwenden

Nicht gleichbedeutend mit einem Browser

Hängt von der Browser-Implementierung und den Einstellungen ab

Anwendungsinteraktion reproduzieren

Explizite Anforderungssequenz

Navigation, Klicks, Formulare und Skriptausführung

Leiten Sie kein identisches Sicherheitsverhalten aus einer Bibliothek ab, die dieselben Cookie-Attribute akzeptiert. Ein universell einsetzbarer Cookie-Jar ist keine Datenschutz-Engine eines Browsers. Insbesondere bietet er nicht denselben Website-Kontext auf oberster Ebene, der zur Analyse von Browseranfragen verwendet wird. Testen Sie den Client, den Sie tatsächlich einsetzen, anstatt Schlussfolgerungen aus einer anderen Laufzeitumgebung zu übernehmen.

Der umgekehrte Fehler besteht darin, jedem Erfassungsauftrag einen Browser hinzuzufügen, ohne die fehlende Funktionalität zu identifizieren. Die Ausführung im Browser führt zu mehr Zuständen und mehr zu diagnostizierenden Aspekten. Halten Sie fest, warum dies erforderlich ist: ein gerendertes Feld, eine Interaktion oder ein von der Anwendung verwalteter Authentifizierungsablauf. „Es hat in meinem Browser funktioniert“ ist eine erste Beobachtung, keine architektonische Entscheidung.

Isolieren Sie bei der Automatisierung Kontexte nach Konto und Aufgabe. Ein gemeinsam genutzter Browser-Zustand kann die Region, die ausgewählte Organisation oder den Benutzer hinter späteren Anfragen unbemerkt verändern. Unser Playwright-Automatisierungsleitfaden bietet einen umfassenderen Kontext für die Steuerung einer interaktiven Seite.

Das folgende Beispiel aus der Standardbibliothek führt einen winzigen lokalen Server und einen Client in einem Prozess aus. Der Server setzt ein nicht sensibles Demo-Cookie. Der Client speichert es und sendet es bei der zweiten Anfrage zurück. Es sind keine externen Websites, Konten oder Anmeldedaten beteiligt.

Die Dokumentation zu `http.cookiejar` in Python beschreibt das „Cookie-Jar“ und dessen Integration in Request-Handler. Hier ist die automatische Speicherung besonders nützlich: Das Beispiel erstellt niemals manuell einen Cookie Request-Header.

from http.server import BaseHTTPRequestHandler, HTTPServer
from http.cookiejar import CookieJar
from threading import Thread
from urllib.request import build_opener, HTTPCookieProcessor

class Handler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        if self.path == "/start":
            self.send_header("Set-Cookie", "demo=ready; Path=/")
        self.end_headers()
        value = self.headers.get("Cookie", "no cookie")
        self.wfile.write(value.encode("utf-8"))

    def log_message(self, *args):
        pass

server = HTTPServer(("127.0.0.1", 0), Handler)
thread = Thread(target=server.serve_forever, daemon=True)
thread.start()
client = build_opener(HTTPCookieProcessor(CookieJar()))
base = f"http://127.0.0.1:{server.server_port}"
try:
    with client.open(base + "/start", timeout=5) as response:
        response.read()
    with client.open(base + "/check", timeout=5) as response:
        result = response.read().decode("utf-8")
    assert result == "demo=ready"
    print("Cookie retained and returned")
finally:
    server.shutdown()
    server.server_close()
    thread.join()

Der lokale HTTP-Transport dient bewusst einer in sich geschlossenen Demonstration. Dies ist kein Authentifizierungsserver für den Produktiveinsatz, und das Cookie ist kein Geheimnis. Verwenden Sie für Produktionssitzungen HTTPS und die dokumentierten Sicherheitseinstellungen der Anwendung. Kopieren Sie diesen Handler nicht in einen öffentlichen Dienst.

Erweitern Sie die Übung um einen zweiten unabhängigen Opener. Dieser sollte das Cookie des ersten Clients nicht erben. Dieser einfache Test verdeutlicht eine nützliche Eigenschaft in der Produktion: Eine neue Sitzung beginnt ohne den Zustand eines anderen Jobs. Sie können auch den Cookie-Pfad ändern und einen nicht übereinstimmenden Pfad anfordern, um Entscheidungen zum Gültigkeitsbereich in diesem speziellen Client zu beobachten.

Das Beispiel belegt die Cookie-Beibehaltung, nicht die Authentifizierung. Eine echte Integration erfordert eine separate Antwortprüfung für das erwartete Konto oder den erwarteten Seitentyp. Behalten Sie diese Unterscheidung in Ihren Tests bei: Transportzustands-Assertions erklären den Mechanismus, während Anwendungs-Assertions feststellen, ob der zurückgegebene Inhalt für die Extraktion geeignet ist.

Halten Sie die Sitzungseigentümerschaft über alle Worker hinweg explizit

Ein Collector, der mehrere Konten verarbeitet, benötigt für jedes Cookie-Jar einen eindeutigen Eigentümer. Weisen Sie den Status pro genehmigtem Konto und Erfassungskontext zu. Vermeiden Sie eine globale Sitzung, die von nicht miteinander in Zusammenhang stehenden Jobs gemeinsam genutzt wird, selbst wenn jede Anfrage denselben Hostnamen verwendet.

Für Python-Integrationen wird im „Requests Advanced Guide“ dokumentiert, dass eine „Session“ Cookies beibehält und Verbindungen wiederverwendet. Diese Annehmlichkeiten bestimmen nicht Ihre Richtlinie zur Kontoisolierung. Gestalten Sie den Lebenszyklus der Session entsprechend Ihrem Workflow, anstatt ihn versehentlich durch ein langlebiges globales Objekt definieren zu lassen.

Stellen Sie sich zwei Worker vor, die im Rahmen desselben Dienstes Berichte für verschiedene Organisationen sammeln. Wenn sie sich einen veränderbaren Authentifizierungsstatus teilen, kann eine Anmeldung oder ein Organisationswechsel den anderen beeinträchtigen. Der Fehler kann darin bestehen, dass plausible Daten dem falschen Kunden zugeordnet werden, was schwerer zu erkennen ist als eine Ausnahme. Beziehen Sie die erwartete Organisation in den Validierungsvertrag ein, nicht nur die erwarteten Spaltennamen.

Verwenden Sie einen logischen Verantwortlichen für die Aktualisierung einer Sitzung. Wenn jeder Worker unabhängig auf das Ablaufen der Sitzung reagiert, kann es in der Gruppe zu redundanten Anmeldungen kommen oder dazu, dass ein neuerer Zustand durch einen älteren überschrieben wird. Ein kontrollierter Aktualisierungsschritt kann abhängige Aufgaben unterbrechen, einen gültigen Zustand herstellen und erst nach bestandener Identitätsprüfung fortsetzen.

Vermeiden Sie es, Thread-Sicherheit anzunehmen, wenn eine Client-Bibliothek diese nicht zugesichert hat. Separate Transportobjekte sind oft leichter nachzuvollziehen als die gleichzeitige Änderung einer gemeinsam genutzten JAR-Datei. Wenn Ihre Architektur die Arbeit auf verschiedene Prozesse verteilt, legen Sie fest, wie der Zustand übertragen wird, wie lange er gültig bleibt und welche Komponente ihn ersetzen darf.

Bewahren Sie den Nicht-Authentifizierungs-Kontext zusammen mit dieser Zuständigkeit auf. Ländereinstellungen und Währungseinstellungen können gescrapte Werte verändern, ohne die Kontoidentität zu ändern. Ein nützlicher Job-Datensatz identifiziert die Quelle, den erwarteten Kontogeltungsbereich, die Region und die Kennung zur Zustandsgenerierung. Er sollte nicht die geheimen Cookie-Werte selbst enthalten.

Fehlerhafte Sitzungen debuggen, ohne deren Werte offenzulegen

Wenn ein Job die Datenextraktion unterbricht, klassifizieren Sie zunächst die Antwort. Überprüfen Sie die endgültige URL, den Status, den Inhaltstyp, die erwartete Seitenmarkierung und die Umleitungssequenz. Eine erfolgreiche HTTP-Antwort, die ein Anmeldeformular enthält, stellt für Ihren Collector einen Anwendungsfehler dar, auch wenn die Netzwerkanfrage abgeschlossen wurde.

Protokollieren Sie nur die minimalen Informationen, die zur Identifizierung der fehlerhaften Phase erforderlich sind. Cookie-Namen, Domänen im Gültigkeitsbereich, Pfade und Beobachtungen zum Ablaufdatum können ausreichend sein. Schwärzen Sie Werte in Anforderungsprotokollen, Ausnahmberichten, Screenshots und gespeicherten Browser-Traces. Ein Debug-Bundle sollte kein übertragbares Anmeldepaket werden.

Symptom

Erste Überprüfung

Vermeiden

Anmeldeseite mit Status 200 zurückgegeben

Endgültige URL und Marker für authentifizierte Seite

Den Status allein als Erfolg werten

Cookie gespeichert, aber nicht gesendet

Zielhost, Pfad, Transport, Ablauf

Das JAR-Datei flach machen und alle Werte erzwingen

Browser funktioniert, aber Skript schlägt fehl

Erforderliche Interaktionen und sonstige Speicherung

Annahme, dass Cookies die gesamte Sitzung abdecken

Falsche Ländereinstellung oder Kontodaten

Sitzungsinhaber und Anwendungskontext

Gemeinsame Nutzung einer globalen JAR-Datei

Wiederholte Fehler beim Ablauf

Aktualisierung des Lebenszyklus und Ablehnung durch den Server

Eine unbegrenzte Anmeldeschleife

Behalten Sie, sofern zulässig, eine kleine, redigierte Fehler-Fixture bei. Diese kann zeigen, dass ein Selektor nun mit einem Anmeldefeld übereinstimmt, ohne die Identität oder das Token des Benutzers preiszugeben. Testen Sie Ihren Antwortklassifikator anhand dieser Fixture, damit derselbe Fehler nicht unbemerkt erneut in den Datensatz gelangt.

Sitzungs-Cookies sind nicht das einzige sensible Element bei der Browser-Automatisierung. Die Playwright-Authentifizierungsdokumentation warnt davor, dass gespeicherte Authentifizierungszustände eine Identitätsfälschung ermöglichen können und daher nicht in Repositorys committet werden sollten. Behandeln Sie exportierte Zustände wie Anmeldedaten mit eingeschränktem Zugriff und einer festgelegten Löschrichtlinie.

Melden Sie im Falle einer Eskalation, was sich geändert hat, anstatt alles zu übermitteln: die Lauf-ID, die letzte erfolgreiche Identitätsprüfung, die Fehlerkategorie und die geschwärzten Antwortnachweise. Dies ermöglicht dem nächsten Entwickler eine reproduzierbare Untersuchung, während der Zugriff auf das Konto aus dem Issue-Tracker ferngehalten wird.

Wichtige Erkenntnisse

  • Verwenden Sie zur Verwaltung von HTTP-Cookies ein „Cookie-Jar“, anstatt Roh-Header zwischen Anfragen zu kopieren.
  • Unterscheiden Sie zwischen gespeichertem Status, Anfrageberechtigung und serverseitiger Sitzungsgültigkeit.
  • Wählen Sie einen Browser nur dann, wenn der Workflow Browserfunktionen benötigt.
  • Isolieren Sie den Konto- und Regionsstatus über alle Erfassungs-Worker hinweg.
  • Überprüfen Sie die Seitenidentität und schwärzen Sie Authentifizierungsdaten, bevor Sie Fehler protokollieren.

FAQ

Sind Cookies ausführbare Programme?

Nein. Ein Cookie ist gespeicherte Daten, kein ausführbarer Code. Sein Wert kann dennoch sensibel sein, und eine Anwendung kann sich unterschiedlich verhalten, wenn sie diesen Wert erhält. Bewerten Sie, was das Cookie darstellt und wohin es übertragen wird, anstatt alle Cookies entweder als harmlose Einstellungen oder als von Natur aus bösartige Dateien zu behandeln.

Werden durch das Löschen eines Cookies bereits erfasste Daten gelöscht?

Nein. Das Entfernen des lokalen Status löscht keine Datensätze, die zuvor von Ihrem Collector oder einem anderen Dienst gespeichert wurden. Für diese Datensätze sind eigene Aufbewahrungs- und Löschkontrollen erforderlich. Trennen Sie die Bereinigung von Sitzungen und das Datenlebenszyklusmanagement voneinander, damit ein erfolgreiches Abmelden nicht fälschlicherweise als Beweis dafür gewertet wird, dass nachgelagerte Datensätze gelöscht wurden.

Kann ich einen personalisierten Preis reproduzieren, indem ich nur die URL speichere?

Nicht zuverlässig. Eine URL lässt möglicherweise Kontextinformationen außer Acht, die das angezeigte Angebot beeinflusst haben, darunter die Berechtigung des Kontos, die Ländereinstellung oder frühere Auswahlentscheidungen. Erfassen Sie den nicht sensiblen Beobachtungskontext, der für die Interpretation erforderlich ist. Fügen Sie keine Authentifizierungsdaten in einen gemeinsam genutzten Datensatz ein, nur um ihn reproduzierbar zu machen; nutzen Sie stattdessen einen kontrollierten Wiederholungsprozess.

Fazit

Eine zuverlässige Sitzungsverwaltung beginnt mit einer kleinen Reihe expliziter Fragen: Welchem Client gehört dieser Zustand, wohin kann er übertragen werden und woran lässt sich erkennen, dass die Antwort zum beabsichtigten Workflow gehört? HTTP-Cookies helfen bei der Beantwortung eines Teils dieser Fragen, ersetzen jedoch nicht die Anwendungsvalidierung.

Beginnen Sie mit einem lokalen Aufbewahrungstest und prüfen Sie anschließend die zulässige Anmelde- und Erfassungssequenz der tatsächlichen Integration. Behalten Sie einen einzigen Sitzungsinhaber bei, identifizieren Sie die erwartete Antwort und behandeln Sie das Ablaufen der Sitzung als begrenzten Zustandsübergang. Wenn das Verhalten vom Browser abweicht, untersuchen Sie die fehlende Browserfunktion, anstatt Cookie-Schutzmaßnahmen aufzuheben oder ein gesamtes Profil zu kopieren.

Wenn das Abrufen von Seiten einen separaten betrieblichen Aufwand darstellt, prüfen Sie die Scraper-API der WebScrapingAPI für diese Ebene, während Sie die Kontoautorisierung und die Sitzungsinhaberschaft in Ihrer Anwendung explizit beibehalten. Ein Abrufdienst wandelt Anmeldedaten nicht in Berechtigungen um. Der fertige Collector sollte seinen Zustand nachvollziehbar machen, ohne diesen Zustand öffentlich zu machen.

Über den Autor

Gabriel Cioci, Full-Stack-Entwickler @ WebScrapingAPI

Gabriel Cioci

Full-Stack-Entwickler

Gabriel Cioci ist Full-Stack-Entwickler bei WebScrapingAPI und verantwortlich für die Entwicklung und Wartung der Websites, des Benutzerportals sowie der wichtigsten benutzerseitigen Komponenten der Plattform.

Web-Scraping mit AWS Lambda: Leitfaden für Python und Java 2026
Anleitungen

Web-Scraping mit AWS Lambda: Leitfaden für Python und Java 2026

TL;DR: Kurz gesagt: Web-Scraping mit AWS Lambda funktioniert am besten, wenn jeder Aufruf kurz, begrenzt und unabhängig wiederholbar ist. Beginnen Sie mit direktem HTTP, AWS SAM und S3 und fügen Sie erst dann SQS, Container, Browser-Rendering, Proxys oder eine verwaltete Abrufebene hinzu, wenn sich im Rahmen der Arbeitslast herausstellt, dass diese erforderlich sind.

Suciu Dan26 min read
Artikel lesen
So verwenden Sie GoSpider: Crawlen, URLs bereinigen und Daten extrahieren
Anleitungen

So verwenden Sie GoSpider: Crawlen, URLs bereinigen und Daten extrahieren

TL;DR: GoSpider ist ein Befehlszeilen-Crawler zum Auffinden von URLs, kein vollständiger Scraper für strukturierte Daten. Diese Anleitung zur Verwendung von GoSpider zeigt einen begrenzten Crawl, die saubere Verarbeitung der Ausgabe, die Übergabe von Colly an CSV sowie einen Diagnosepfad für 403-Antworten oder Seiten, die eine JavaScript-Darstellung erfordern.

Suciu Dan20 min read
Artikel lesen
Wie man Redfin scrappt: Python-Leitfaden für Immobiliendaten
Anleitungen

Wie man Redfin scrappt: Python-Leitfaden für Immobiliendaten

TL;DR: Redfin stellt versteckte API-Endpunkte zur Verfügung, die strukturiertes JSON für Immobilienangebote zurückgeben, wodurch das fragile HTML-Parsing vollständig übersprungen werden kann. Diese Anleitung führt Sie durch den Aufbau eines Python-Scrapers, der Miet- und Verkaufsdaten extrahiert, nach Standort sucht, neue Angebote über XML-Sitemaps überwacht und saubere Ergebnisse in CSV oder JSON exportiert.

Suciu Dan11 min read
Artikel lesen

Los geht’s

Sind Sie bereit, Ihre Datenerfassung zu erweitern?

Schließen Sie sich den über 2.000 Unternehmen an, die WebScrapingAPI nutzen, um Webdaten im Unternehmensmaßstab ohne zusätzlichen Infrastrukturaufwand zu extrahieren.