Proxy für mehrere Requests wiederverwenden

Erfahre, wie du denselben Proxy-Exit für nachfolgende Requests beibehältst, damit JavaScript-Renderings, API-Aufrufe und paginierte Abrufe alle von derselben IP ausgehen.

Warum einen Proxy wiederverwenden

Wenn du ein Ziel zum ersten Mal anfragst, wählt FourA einen funktionierenden Proxy für dich aus. Jede Response enthält die verwendete Proxy-ID. Übergib diese ID bei späteren Requests und:

  • Nachfolgende Seiten laufen über denselben Exit, sodass Session-Cookies und Rate Limits für das Ziel kohärent bleiben.
  • Ein auf ein Land beschränkter Abruf bleibt ohne erneute Auswahl innerhalb deiner Allowlist.
  • Der günstige POST /api/single/-Endpoint leitet Requests über einen Proxy weiter, dessen Ermittlung du bereits bezahlt hast, zu den Kosten von Single statt Proxy.

Die Proxy-ID ist ein opaker Base36-String (etwa A1B2C3). Niemals eine reine IP.

Wo sich die ID in einer Response befindet

Endpoint Field When it's present
POST /api/auto/ session.proxy Wenn returnSession auf true steht (Standard)
POST /api/single/ proxy (Top-Level) Nur wenn der Request ein proxy-Feld übergeben hat
POST /api/proxy/ proxy (Top-Level) Immer bei Erfolg
POST /api/browser/ proxy (Top-Level) Nur wenn der Request ein proxy-Feld übergeben hat

Um einen neuen Exit ohne Pinning zu nutzen, starte mit Auto oder Proxy. Beide ermitteln einen funktionierenden Exit und geben dessen ID für dich zurück.

Pattern 1: Auto ermittelt, Single wiederholt

Optimal, wenn du ein Ziel noch nicht kennst. Auto durchläuft die Kaskade einmal, danach nutzt Single die erfolgreiche Session für jede nachfolgende Seite wieder.

import requests

API = "https://eu.api.foura.ai"
H = {"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"}

# Step 1: discover a working exit with Auto.
r = requests.post(f"{API}/api/auto/", headers=H, json={
    "url": "https://example.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
}).json()

session = r["session"]
proxy = session["proxy"]
user_agent = session["userAgent"]

# Step 2: paginate with Single, reusing the same exit and User-Agent.
for sku in ("43", "44", "45"):
    p = requests.post(f"{API}/api/single/", headers=H, json={
        "method": "GET",
        "url": f"https://example.com/product/{sku}",
        "proxy": proxy,
        "headers": [["User-Agent", user_agent]],
    }).json()
    print(sku, p["status"])

Der Auto-Aufruf kostet so viel, wie seine Ladder verbraucht. Jeder nachfolgende Single-Aufruf kostet 2 Credits (Single mit unblocker, der Standard).

Pattern 2: Proxy erkennt, Browser rendert über denselben Exit

Nutze dies, wenn das Ziel ein bestimmtes Exit-Land sehen muss und der finale Inhalt JavaScript benötigt.

# Step 1: pick a country-scoped exit with Proxy.
curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 5,
    "exitCountries": ["FR", "GB"],
    "request": {"method": "GET", "url": "https://example.com/pricing"}
  }'
# Response includes: "proxy": "A1B2C3", "exitCountry": "FR"

# Step 2: render the JS-heavy page through THAT exit.
curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/pricing",
    "proxy": "A1B2C3",
    "timeout_ms": 20000
  }'

Rufe /api/proxy/ nicht erneut auf, um die Auswahl zu aktualisieren. Ein neuer Aufruf wählt möglicherweise einen anderen Exit und macht das Pinning nutzlos. Wenn der gepinnte Exit nicht mehr funktioniert, führe einen neuen /api/proxy/-Aufruf aus, um einen neuen zu wählen, und fahre damit fort.

Pattern 3: Einen verbrannten Exit überspringen

Wenn ein zuvor funktionierender Exit Ablehnungen oder Verifizierungsseiten zurückgibt, weise FourA an, ihn bei der nächsten Auswahl zu meiden.

{
  "maxTries": 5,
  "ignoreProxies": ["A1B2C3"],
  "request": { "method": "GET", "url": "https://example.com/data" }
}

ignoreProxies akzeptiert eine Liste von Proxy-IDs aus früheren Responses. Es funktioniert mit /api/proxy/ und /api/auto/. Die Liste wird bei jedem internen Retry berücksichtigt, sodass ein einzelner Call mit ignoreProxies niemals die verbrannten Exits auswählt.

Wie lange eine gepinnte Session aktiv bleibt

Der Exit selbst bleibt aktiv, solange der zugrunde liegende Proxy intakt ist, typischerweise Minuten bis Stunden. Wenn ein Replay Challenges, Blocks oder unerwartete Redirects zurückgibt, wurde der Exit wahrscheinlich rotiert oder das Ziel hat seine Clearance aktualisiert.

Zwei Optionen in diesem Fall:

  1. Neuer /api/auto/-Call für dieselbe URL. Auto ermittelt eine neue funktionierende Session; verwirf die vorherigen IDs.
  2. Neuer /api/proxy/-Call mit ignoreProxies: ["<burned-id>"], wenn du weiterhin manuell pinnen möchtest.

Session-Cookies aus einer Auto-Response laufen ebenfalls nach dem Zeitplan des Ziels ab. Einige Sites binden Clearance für Stunden, andere für Minuten. Behandle die Session wie einen Cache, nicht wie ein dauerhaftes Token.

Wenn sich eine ID nicht pinnen lässt

Drei 400-Fehler können von einem proxy-Wert zurückkommen, und sie bedeuten unterschiedliche Dinge:

Error What happened What to do
Invalid proxy format Der Wert ist keine von FourA ausgestellte ID. Eine reine Proxy-Adresse landet hier. Sende den opaken String aus einer Response unverändert.
Proxy not found Die ID wurde dekodiert, verweist aber nicht mehr auf einen aktiven Exit. Verwende einen neuen Exit aus einem neuen Auto- oder Proxy-Call.
Managed exit: this proxy id cannot be pinned to a request Die ID ist ein Premium-Exit und der Premium-Traffic deines Plans für diesen Zeitraum ist aufgebraucht, oder dein Plan enthält keine Premium-Exits. Führe den Call über POST /api/proxy/ aus und nimm den ausgewählten Exit, oder füge Premium-Traffic hinzu und pinne ihn erneut.

Der dritte Fehler kann bei einer ID auftreten, die dir ein erfolgreicher Call geliefert hat. Du kannst darauf stoßen, ohne einen Fehler gemacht zu haben. Behandle ihn wie eine abgelaufene Session: Wechsle zu einem neuen Discovery-Call, anstatt dieselbe ID erneut zu versuchen.

Häufige Fehler

  • Wiederverwendung einer Proxy-ID ueber Konten hinweg. Teile keine IDs zwischen Konten: Eine ID, die ein Konto pinnen kann, wird fuer ein anderes moeglicherweise abgelehnt, beispielsweise ein Premium-Exit bei einem Tarif ohne Premium-Traffic.
  • Versuch, die ID zu decodieren. Der Base36-String ist opak. Parse ihn nicht, entferne keine Zeichen und wandle ihn nicht in Kleinbuchstaben um. Uebergib ihn unveraendert zurueck.
  • Pinning ueber einen Exit mit Rate-Limit. Wenn das Ziel ein Rate-Limit pro IP erzwingt, fuehren viele Requests ueber einen einzigen Exit schneller zu Blockaden. Lass Auto oder Proxy bei Workloads mit hohem Volumen ueber viele Exits rotieren und pinne nur dann, wenn das Ziel es wirklich erfordert.
  • Unbeabsichtigtes Pinnen eines Premium-Exits. Eine ID aus einem Aufruf, der ueber einen Premium-Exit bedient wurde (exitClass: "premium" bei Proxy), pinnt diesen Premium-Exit. Jeder Replay darueber wird auf deinen Premium-Traffic angerechnet und die Response enthaelt X-FourA-Exit-Class: premium.
  • Senden von exitCountries in einem Tarif ohne Geo-Targeting. Laender-Scoping ist ab dem Startup-Tarif enthalten. In einem Tarif ohne diese Funktion wird ein Aufruf, der exitCountries sendet, mit 403 und X-FourA-Limit: plan_limit_feature abgelehnt.
  • Ignorieren von exitCountries beim Folgeaufruf. Wenn du einen gescopten Exit pinnst und Proxy anschliessend ohne exitCountries aufrufst, kann der Folgeaufruf ueber ein anderes Land erfolgen. Behalte den Scope bei jedem Aufruf bei, der ihn benoetigt.

Verwandte Themen

Aktualisiert: 27. September 2026