Ohne KYC — keine ID, kein Selfie, keine Dokumente. Mit Krypto bezahlen: BTC, USDT, USDC, ETH, SOL, LTC
Sprache: Deutsch
Jetzt starten

Dokumentation · Sessions · Rotation · Keep-Alive

Sticky Sessions & IP Rotation: Session-IDs, TTL und Verbindungswiederverwendung

Rotation passiert pro Verbindung, Stickiness pro Session-ID. Wenn Sie wissen, wie Ihre Bibliothek Verbindungen wiederverwendet, können Sie genau steuern, wann die IP wechselt.

Zuletzt aktualisiert: · 5 Min. Lesezeit

Kurze Antwort

Wie funktionieren Sticky Sessions und IP-Rotation bei einem Residential Proxy?

Bei CrawlRelay erhält ein Benutzername ohne Session-ID bei jeder neuen TCP-Verbindung eine IP aus dem Pool, meist eine andere, und -session-<id>-ttl-<minutes> behält für diese ID eine IP für bis zu 30 Minuten, obwohl die IP auch früher wechseln kann. Die Rotation orientiert sich an Verbindungen, nicht an HTTP-Anfragen, sodass Keep-Alive bestimmt, wann Ihre IP tatsächlich wechselt. Residential-Traffic kostet 0,50 $/GB ab 50 GB. Bezahlen Sie mit Krypto, ohne KYC.

Session-Regeln im Überblick

RotationseinheitEine IP aus dem Pool pro neuer TCP-Verbindung, meist eine andere
Sticky Session-session-<id>-ttl-<minutes>, angehängt an den Benutzernamen
Session-Längebis zu 30 Minuten
Session-ID1–32 Buchstaben oder Ziffern; eine ID pro Flow
Was eine Session vorzeitig beendetDas Residential-Gerät dahinter ist offline
Geteilte IDsClients, die dieselbe ID senden, teilen sich denselben Residential Proxy-Ausgang
KostenKeine: Sessions und Rotation sind im Preis pro GB enthalten

Was passiert am Gateway, wenn ich eine Session-ID sende?

Das Gateway liest bei jeder neuen Verbindung den Benutzernamen. Ohne Session-Teil wählt es für diese Verbindung nur einen Residential Proxy-Ausgang, der Ihrer Zielsetzung entspricht. Mit Session-Teil behält es denselben Residential Proxy-Ausgang für diese ID für die von Ihnen festgelegte TTL bei.

Eine Sticky-IP ist eine echte Haushaltsverbindung, sie kann also vor Ablauf der TTL verschwinden: Das Gerät wird ausgeschaltet, verliert das WLAN oder wechselt das Netz. Lange Flows müssen das aushalten, indem sie die Ausgangs-IP an Checkpoints prüfen und im Fehlerfall ab einem Checkpoint neu starten, anstatt den gesamten Job abzubrechen.

Wie wird in den einzelnen Bibliotheken eine Verbindung mehrfach genutzt?

Wenn eine Bibliothek eine Verbindung offenhält, teilt sich jede Anfrage über dieselbe Verbindung einen Residential Proxy-Ausgang. So erhält man das gewünschte Verhalten bewusst.

BibliothekStandardNeue IP pro AnfrageEine IP für einen Flow
Python requestsSession hält Verbindungen offenHeader Connection: close oder ein neuer Session pro AnfrageEine Session mit Session-ID im Benutzernamen
httpxClient verwaltet Verbindungenhttpx.Limits(max_keepalive_connections=0)Ein Client pro Session-ID
aiohttpTCPConnector verwaltet VerbindungenTCPConnector(force_close=True)Session-ID im Proxy-URL-Benutzernamen
ScrapyVerbindungen pro Proxy-Zugangsdaten und Host verwaltenmeta={"proxy_session": "new"} mit unserem MiddlewareEin fester proxy_session für den Flow
Playwright / PuppeteerChrome verwaltet pro KontextNeuer Kontext pro SeiteEin Kontext pro Session-ID
Node.js undici, axios, gotAgenten halten Sockets offenNeuer Agent pro Anfrage oder Keep-Alive ausEin Agent pro Session-ID
curlEine Verbindung pro BefehlBereits so umgesetztGleiche Session-ID bei jedem Befehl

Welche Session-Strategie passt zu welchem Scraping-Job?

JobStrategieEmpfohlene TTL
Unabhängige Produkt-, Artikel- oder AngebotsseitenRotation: keine Sitzung-ID—
Paginierung, bei der die nächste Seite von einem Cookie oder Cursor abhängtEine sticky Session pro Eintrag10–30 Min
Suchen, dann Ergebnisse, dann DetailseitenEine sticky Session pro Suche10–20 Min
Headless-Browser rendert mehrere Seiten einer WebsiteEine sticky Session pro Browser-KontextLebensdauer des Kontexts, bis zu 30 Min
Überprüfung, was eine Seite in mehreren Städten zeigtEine kurze Session pro Stadt-Check5 Min
Stündliches erneutes Prüfen derselben SeiteRotation—

Wie verwalte ich einen Pool von sticky Sessions in Python?

Ein kleiner Pool verteilt die Last auf einige stabile Residential-Proxys und schließt jeden nach einer bestimmten Anzahl von Anfragen oder bei Anzeichen eines Ausfalls wie 502 oder 503 aus. Wichtig: Er wechselt die IPs nicht, um an einem 403 oder 429 vorbeizukommen. Das bedeutet, dass die Seite ein verlangsamtes Tempo möchte, daher hebt der Pool diese Codes an deinen Code weiter.

Python: ein Pool von sticky Sessions
import random
import uuid

import requests

GATEWAY = "gw.crawlrelay.com:7777"
BASE_USER, PASSWORD = "USERNAME-country-us", "PASSWORD"


class SlowDown(Exception):
    """The target asked us to slow down (403 or 429): back off, do not rotate."""


class StickySession:
    def __init__(self, ttl=15, max_requests=50):
        self.id = uuid.uuid4().hex[:10]
        self.max_requests, self.used = max_requests, 0
        user = "%s-session-%s-ttl-%d" % (BASE_USER, self.id, ttl)
        proxy = "http://%s:%s@%s" % (user, PASSWORD, GATEWAY)
        self.http = requests.Session()
        self.http.proxies = {"http": proxy, "https": proxy}


class SessionPool:
    EXIT_PROBLEMS = {502, 503, 504}

    def __init__(self, size=5, **options):
        self.options = options
        self.sessions = [StickySession(**options) for _ in range(size)]

    def _replace(self, i):
        self.sessions[i].http.close()
        self.sessions[i] = StickySession(**self.options)

    def get(self, url, **kwargs):
        i = random.randrange(len(self.sessions))
        s = self.sessions[i]
        s.used += 1
        try:
            r = s.http.get(url, timeout=(10, 30), **kwargs)
        except requests.exceptions.RequestException:
            self._replace(i)  # dropped exit or timeout: start a fresh session
            raise
        if r.status_code in (403, 429):
            raise SlowDown("%s returned %d" % (url, r.status_code))
        if r.status_code in self.EXIT_PROBLEMS or s.used >= s.max_requests:
            self._replace(i)
        return r


pool = SessionPool(size=5, ttl=15, max_requests=50)
print(pool.get("https://api.ipify.org").text)

Wie erkenne ich, dass sich eine sticky IP geändert hat?

Frage nach. Fordere einen IP-Echo-Service wie https://api.ipify.org über dieselbe Session am Anfang und an jedem Checkpoint an und vergleiche die Antworten. Eine Änderung bedeutet, dass der Ausgang hinter der Session gewechselt hat: Starte den Flow vom letzten Checkpoint neu oder öffne eine neue Session. Protokolliere das mit der Session-ID, um IP-Wechsel von Seitenverhalten beim Debuggen zu unterscheiden.

Welche Session-Fehler kosten am meisten?

  • Rotation bei jeder Anfrage eines mehrstufigen Flows. Die Seite sieht einen Warenkorb, Cursor oder Such-Token zwischen Ländern springen und setzt es zurück.
  • Eine Session-ID für jeden Worker. Eine Session ist für einen Flow gedacht; gib jedem Worker und Flow eine eigene ID.
  • Sessions viel zu lang für die Aufgabe. Eine TTL von 30 Minuten für einen 2-minütigen Flow bindet eine IP unnötig und erschwert das Loglesen.
  • 429 als IP-Problem behandeln. Eine neue IP ändert die Seitenregel nicht; langsamer machen schon. Siehe 429 Too Many Requests.
  • Annahme von Rotation pro Anfrage. Keep-alive hält den Ausgang; prüfe die obige Tabelle für deine Library.

Sessions und Rotation: Fragen

Wie lange dauert eine sticky Session?

Sticky Sessions halten dieselbe IP für die von Ihnen festgelegte Zeit (TTL, in Minuten) bis zu 30 Minuten. Die IP kann früher wechseln, z. B. wenn das Residential-Gerät offline geht.. Wähle eine TTL etwas länger als der Flow, den sie bedient, und prüfe den Ausgang an Checkpoints.

Kosten sticky Sessions mehr als Rotation?

Nein. CrawlRelay verrechnet Traffic pro GB, und Sessions, Rotation sowie Targeting sind im Preis enthalten. Eine sticky Session kann sogar Traffic sparen, weil eine gehaltene Verbindung den TLS-Handshake pro Anfrage vermeidet.

Ist Rotation bei jeder Anfrage besser fürs Scraping?

Für unabhängige Seiten verteilt Rotation die Last und verhindert, dass eine Seite stundenlang von einer IP erreicht wird. Für alles mit Status, z. B. Paginierung mit Cookie, zerstört es den Flow. Die meisten Crawls mischen beides: Rotation zwischen Items, Sticky Sessions innerhalb eines Flows.

Kann ich die genaue IP auswählen, die ich bekomme?

Nein. Ein Residential Proxy weist Ausgänge aus einem sich ständig ändernden Pool zu, passend zum Targeting in deinem Benutzernamen. Du wählst Land, Stadt, US-Bundesstaat, PLZ oder ASN und kannst eine IP mit einer Session behalten; die Reservierung einer bestimmten IP ist nicht möglich.

Rotation und Sessions sind in jedem Plan enthalten

1,50 $ für 1 GB, 0,50 $/GB ab 50 GB.

Ab 0,50 $/GB · ohne KYC

Jetzt starten