Geschützte Websites

Moderne Websites nutzen fortschrittliche Bot-Erkennung. Diese Anleitung erklärt, wie FourA dir Zugriff auf Seiten verschafft, die Anfragen prüfen, und wie du deine Erfolgsrate steigerst.

Wie Bot-Erkennung funktioniert

Websites nutzen mehrere Schutzebenen:

  • IP-Reputation: Rechenzentren und bekannte Proxy-Adressen werden blockiert
  • Wire-Fingerprinting: Jeder HTTP-Client hat eine eindeutige Handshake-Signatur, die Seiten erkennen können
  • Browser-Fingerprinting: JavaScript prüft auf Indikatoren für Headless-Browser
  • Verhaltensanalyse: Request-Muster, Timing und Navigationsfluss
  • Verifizierungsseiten: Eine visuelle Aufgabe, die der Besucher lösen muss

Die Response nennt das System, das die Prüfung durchgeführt hat; Site checks listet sie auf.

Schnellster Weg: Auto

Wenn du das Schutzlevel noch nicht kennst, rufe /api/auto/ mit einem validate.data.accept-Substring auf, den nur die echte Seite enthält. Auto durchläuft eine kostenbewusste Stufenleiter (ein rotierter Proxy, dann ein Browser über einen Proxy; mit forceProxy: false kommen zuerst ein günstiger direkter Test und ein direktes Browser-Rendering) und stoppt auf der ersten Stufe, die eine Response liefert, die deine Regeln akzeptieren. Bei wiederholten Aufrufen desselben Hosts wird stattdessen eine warme Session wiederverwendet, sodass der zweite Treffer günstig ist.

curl -X POST https://eu.api.foura.ai/api/auto/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://protected-site.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
  }'

Auto erkennt gängige Challenge-Seiten und fährt fort, wenn es auf eine trifft. Dein validate.data.accept-String deckt den Rest ab: eine unbekannte Prüfseite, eine Login-Wall oder eine Seite ohne den gewünschten Inhalt. Die vollständige Anleitung findest du im Smart-Fetch-Guide.

Wie FourA auf jeder Schicht hilft

Realistische Requests auf Netzwerkebene

Der zentrale Endpoint (POST /api/single/) erzeugt Handshake-Eigenschaften, die einem echten Browser entsprechen. Websites antworten wie bei einem echten Browser, ohne den Overhead einer Browser-Instanz.

Aktiviere unblocker, um zusätzlich realistische Browser-Header einzufügen (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). unblocker ist standardmäßig aktiviert; setze false nur, um eine einfache Client-Signatur zu senden.

{
  "method": "GET",
  "url": "https://protected-site.com/data",
  "unblocker": true
}

Echtes Browser-Rendering

Der Browser-Endpoint (POST /api/browser/) führt eine vollständige Chrome-Browser-Instanz aus. Er führt das JavaScript der Seite genau wie der Browser eines Besuchers aus. unblocker auf Browser schließt die Prüfungen ab, die eine Seite vor dem Laden anfordert (Turnstile und ähnliche Gates); lass es aktiviert, es sei denn, du möchtest die Challenge-Seite im Originalzustand zurückerhalten.

Proxy-Rotation

Der Proxy-Endpoint (POST /api/proxy/) rotiert automatisch durch Residential- und Rechenzentrum-Proxys. Wenn eine IP blockiert wird, verwendet der nächste Versuch eine andere. Verwende ignoreProxies bei einem Folgeaufruf, um bereits verbrauchte Exits zu überspringen; nutze maxTries (Standard: 5, Max: 90), um die Anzahl der Versuche zu steuern.

Exits nach Ländern einschränken

Übergib exitCountries an /api/proxy/, um die Auswahl auf Proxys zu beschränken, deren für das Ziel sichtbares Land einer strikten Allowlist entspricht. Werte sind zweistellige Ländercodes (["CZ", "GB"]), getrimmt, in Großbuchstaben umgewandelt und dedupliziert. FourA weicht niemals auf ein nicht angefordertes Land aus; wenn der aktuelle Pool keine Übereinstimmung hat, gibt die Response code: "no_eligible_proxy" mit dem normalisierten Scope in details.exitCountries zurück, sodass du es später erneut versuchen kannst, ohne die Anforderung zu lockern. Country Scoping ist ab dem Startup-Plan enthalten. Bei einem Plan ohne dieses Feature wird ein Call mit exitCountries mit 403 und X-FourA-Limit: plan_limit_feature abgelehnt.

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": ["CZ", "GB"],
    "request": {"method": "GET", "url": "https://target.example/pricing"}
  }'

Die Response enthält exitCountry, wenn Scoping angefordert wurde. Prüfe vor der Verarbeitung der Payload, ob sie zu deiner Allowlist gehört, und verwende die zurückgegebene proxy-ID für nachfolgende Browser-Aufrufe wieder, damit das JavaScript-Rendering über denselben Exit erfolgt.

FourA zeigt dir, was dich blockiert hat

Du musst nicht raten, welches System einen Request blockiert hat. Wenn ein Ziel einen Bot-Check durchführt, wird dieser in der Response genannt.

  • POST /api/single/ und POST /api/proxy/ geben ein defense-Objekt zurück: defense.vendor ist das System, defense.solved gibt an, ob der Check bestanden wurde, und defense.present listet alles auf, was in dieser Response erkannt wurde.
  • POST /api/browser/ gibt defenseSolved sowie defenses.present und defenses.cleared zurück.
{
  "status": 200,
  "data": "<!doctype html>...",
  "defense": {
    "vendor": "sgcaptcha",
    "solved": true,
    "present": ["sgcaptcha"],
    "cookie": "_I_=<clearance>"
  }
}

Daraus folgen zwei Regeln:

  1. solved: false bedeutet, dass der Body die Challenge sein kann, nicht die Seite. FourA gibt eine Challenge-Seite niemals als Inhalt aus, prüfe das Flag also vor dem Parsen.
  2. Ein Solve liefert dir die Clearance. Wenn defense.cookie vorhanden ist, sende es als Cookie-Header über denselben Exit mit demselben User-Agent zurück, und nachfolgende Requests überspringen die Prüfung vollständig.

FourA erkennt die gängigen Prüfsysteme, einschließlich der First-Party-Checks von eBay, Reddit, Amazon und Google Search. Erkennen geht weiter als Lösen: Ein System, das wir benennen, aber nicht lösen können, wird gemeldet und erhöht die Kosten des Requests nicht. Wenn die zurückgegebene Seite die Check-Seite dieses Systems ist, selbst bei HTTP 200, wird der Request nicht abgerechnet und der Header X-FourA-Check-Page nennt das System. Siehe Site checks für alle Felder, die aktuelle Clear-versus-Detect-Aufteilung und ein Replay-Beispiel.

Strategie nach Schutzlevel

Unbekannter Schutz

Nutze auto. Es prüft zuerst die günstige Variante und eskaliert nur so weit, wie das Ziel es erzwingt, sodass du die Erkennung nur einmal pro Host zahlst.

Niedriger Schutz (die meisten Websites)

Nutze den einzelnen Endpoint mit unblocker. Der Abgleich auf Protokollebene reicht aus.

curl -X POST https://eu.api.foura.ai/api/single/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'

Mittel: eine Challenge-Seite oder eine einfache Firewall

Nutze den Browser-Endpoint, um JavaScript-Challenges zu bestehen:

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://protected-site.com/data", "timeout_ms": 15000}'

Hoch: Verhaltens- und Fingerprint-Prüfungen

Nutze den Proxy-Endpoint mit mehreren Retry-Versuchen:

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 10,
    "request": {
      "method": "GET",
      "url": "https://heavily-protected.com/prices",
      "unblocker": true
    }
  }'

Für verkettete Challenge-Seiten ("Just a moment", ein Sicherheits-Checkpoint), bei denen du die gerenderte Seite nach dem Lösen der Challenge benötigst, siehe die MCP-Rezepte. Das Rezept "Protected page: proxy first, browser when JavaScript is needed" zeigt die genaue Übergabe von Proxy zu Browser.

Best Practices

  1. Starte bei unbekannten Zielen mit auto. Übergib eine validate-Regel, lass die Engine-Leiter die günstigste Stufe wählen und lies meta.rung in der Response, um zu sehen, welche Engine funktioniert hat. Sobald du es weißt, rufe diese Engine für wiederkehrenden Traffic direkt auf.

  2. Verwende die erfolgreiche Session wieder. Nach einem Auto-Aufruf kann die zurückgegebene session (Proxy-ID + Cookies + User-Agent) über /api/single/ oder /api/browser/ für Folgeseiten auf demselben Host wiederverwendet werden, zum regulären Preis dieses Endpoints: 2 Credits bei Single mit unblocker, 5 bei Browser (10 für eine interaktive Seite).

  3. Beachte Rate Limits. Auch mit Proxy-Rotation löst das Senden von Hunderten Requests pro Sekunde an eine einzelne Website eine verhaltensbasierte Erkennung aus. Halte zwischen deinen Requests mindestens 1 bis 2 Sekunden Abstand.

  4. Lass unblocker aktiviert. Bei Single und Proxy sendet unblocker: true (Standard) eine realistische Browser-Signatur und Header. Bei Browser aktiviert es den Challenge-Solver. Deaktiviere es nur, wenn du explizit eine einfache Client-Signatur oder eine unveränderte Challenge-Seite benötigst.

  5. Überwache Erfolgsraten. Prüfe die Metriken im Dashboard, um deine Erfolgsrate im Zeitverlauf zu verfolgen. Ein plötzlicher Abfall bedeutet meist, dass die Zielseite ihren Schutz aktualisiert hat.

  6. Überspringe verbrannte Exits. Wenn ein /api/proxy/- oder /api/auto/-Aufruf eine Proxy-ID zurückgegeben hat, die danach fehlschlägt, übergib sie beim nächsten Aufruf in ignoreProxies, damit FourA einen anderen Exit wählt.

  7. Lies defense vor dem erneuten Versuch. Der Vendor-Name zeigt dir, ob sich der Versuch mit einem anderen Browser-Profil lohnt, ob du ein vollständiges Rendering benötigst oder ob die Prüfung ohne Solving-Dienst nicht bestanden werden kann.

  8. Wechsle den verwendeten Browser. Manche Zielseiten akzeptieren einen bestimmten Browser und blockieren andere. Setze browser, os oder version bei Single und Proxy und lies GET /api/profiles für den aktuellen Katalog. Details findest du in der Endpoint-Referenz.

Limits

Manche Szenarien erfordern eine zusätzliche Handhabung außerhalb der API:

  • Login-geschützte Inhalte: FourA verwaltet keine langlebigen Logins für dich. Der Browser-Endpoint akzeptiert cookies pro Request; übermittle deine Session-Cookies selbst.
  • Interaktive Verifizierungsaufgaben: FourA erkennt visuelle Aufgaben und meldet sie in defense.present, löst sie jedoch nicht. Turnstile wird von Browser verarbeitet.
  • Auf bestimmte Länder beschränkte Inhalte: Verwende exitCountries auf /api/proxy/, um die Auswahl auf erlaubte Länder festzulegen. Websites, die zusätzlich nach ISP oder ASN einschränken (einige länderspezifisch lizenzierte Buchmacher, bestimmte Behördendienste), blockieren möglicherweise weiterhin generische Residential-Exits; der Request gibt no_eligible_proxy zurück, wenn der aktuelle Pool keinen passenden Exit hat.
  • Websites mit rechtlichen Einschränkungen: Stelle immer sicher, dass deine Datenerfassung den Nutzungsbedingungen der Ziel-Website und den geltenden Gesetzen entspricht.

Nächste Schritte

Aktualisiert: 27. September 2026