Umgang mit Anti-Bot-Schutz

Moderne Websites nutzen fortschrittliche Bot-Erkennung. Diese Anleitung erklärt, wie FourA Anti-Bot-Systeme handhabt und wie du deine Erfolgsquote maximierst.

Wie Bot-Erkennung funktioniert

Websites verwenden 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
  • CAPTCHAs: Visuelle Herausforderungen als letzte Verteidigungslinie

Zu den gängigen Anti-Bot-Anbietern gehören Cloudflare, DataDome, PerimeterX und Akamai Bot Manager.

Schnellster Weg: Auto

Wenn du das Schutzniveau 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 Leiter (günstiger Test, rotierender Proxy, Browser-Rendering, Browser über Proxy) und stoppt bei der ersten Stufe, die eine Response zurückgibt, die deine Regeln akzeptieren. Bei wiederholten Aufrufen desselben Hosts wird stattdessen eine warme Sitzung abgespielt, 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"]}}
  }'

Ohne validate.data.accept kann auto keinen echten 200er-Status von einem Challenge-Interstitial mit Status 200 unterscheiden und gibt die Challenge möglicherweise als Erfolg zurück. Siehe Smart Fetch guide für die vollständige Anleitung.

Wie FourA auf jeder Ebene hilft

Realistische Wire-Level Requests

Der einzelne endpoint (POST /api/single/) sendet Handshake-Eigenschaften, die einem echten Browser entsprechen. Dies besteht die häufigsten Wire-Level-Prüfungen ohne den Overhead eines vollständigen Browsers.

Aktiviere unblocker, um realistische Browser-header (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding) einzufügen. unblocker ist standardmäßig aktiviert. Setze false, um nur 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. Kombiniert mit Anti-Detection-Patches besteht er die meisten JavaScript-basierten Fingerprint-Prüfungen. unblocker beim Browser löst den Auto-Defense-Solver aus (Turnstile-Clearance und ähnliche Gates). Lass es aktiviert, es sei denn, du willst die rohe Challenge-Seite zurückbekommen.

Proxy-Rotation

Der Proxy-Endpoint (POST /api/proxy/) rotiert automatisch durch Residential- und Data-Center-Proxys. Wenn eine IP blockiert wird, verwendet der nächste Versuch eine andere. Verwende ignoreProxies in einem Folgeaufruf, um Exits zu überspringen, die du bereits verbrannt hast. Verwende maxTries (Standard 5, maximal 90), um die Intensität zu steuern.

Länderspezifische Exits

Übergebe 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 Zwei-Buchstaben-Codes (["CZ", "GB"]), getrimmt, in Großbuchstaben umgewandelt und dedupliziert. FourA weicht niemals auf ein nicht angefordertes Land aus. Wenn der aktuelle Pool keinen Treffer enthält, liefert 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 Anforderungen zu lockern.

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. Stelle sicher, dass es zu deiner Allowlist gehört, bevor du dem Payload vertraust. Verwende dann die zurückgegebene proxy ID bei jedem nachfolgenden Browser-Aufruf wieder, damit das JavaScript-Rendering über denselben Exit erfolgt.

FourA sagt 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 benannt.

  • 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 plus 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 tarnt eine ungelöste Challenge niemals als Content, prüfe also das Flag vor dem Parsen.
  2. Eine Lösung gibt dir die Freigabe. Wenn defense.cookie vorhanden ist, sende es als Cookie-Header über denselben Exit und mit demselben User-Agent zurück, und die folgenden Requests überspringen die Prüfung vollständig.

FourA erkennt Cloudflare, SiteGround, DataDome, PerimeterX, Akamai, Incapsula, AWS WAF, hCaptcha, reCAPTCHA und die eigene Challenge von eBay. Erkennen ist weiter gefasst als Lösen: Ein System, das wir benennen, aber nicht lösen können, wird gemeldet und ändert nie die Kosten des Requests. Siehe Anti-Bot Defenses für jedes Feld, die aktuelle Aufteilung zwischen Clear und Detect sowie ein Replay-Beispiel.

Strategie nach Schutzlevel

Unbekannter Schutz

Verwende auto. Es testet zuerst günstig und eskaliert nur so weit, wie es das Ziel erzwingt, sodass du für die Entdeckung einmal pro Host bezahlst.

Niedriger Schutz (die meisten Seiten)

Verwende den einzelnen Endpoint mit unblocker. Der Wire-Level Match 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}'

Mittlerer Schutz (Cloudflare, einfache WAF)

Verwende 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}'

Hoher Schutz (DataDome, PerimeterX)

Verwende den proxy endpoint mit mehreren Wiederholungsversuchen:

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 WAF-Herausforderungen (Cloudflare "Just a moment", Vercel Security Checkpoint, Akamai Bot Manager), bei denen du die gerenderte Seite nach dem Lösen der Herausforderung benötigst, siehe die MCP-Rezepte. Das Rezept "Protected page: proxy first, browser when JavaScript is needed" zeigt die genaue Übergabe vom Proxy zum Browser.

Best Practices

  1. Starte mit auto für unbekannte Ziele. Übergebe eine validate-Regel, lass die Ladder die günstigste Stufe wählen und lies dann meta.rung in der Response, um zu sehen, welche Engine funktioniert hat. Sobald du das weißt, rufe diese Engine für wiederholten Traffic direkt auf.

  2. Nutze die erfolgreiche Session wieder. Nach einem auto-Aufruf können die zurückgegebenen session (Proxy-ID + Cookies + User-Agent) über /api/single/ oder /api/browser/ für Folgeseiten auf demselben Host zum Single-Preis wiederverwendet werden.

  3. Beachte Rate Limits. Selbst mit Proxy-Rotation löst das Senden von Hunderten Requests pro Sekunde an eine einzige Website eine Verhaltenserkennung aus. Lass zwischen deinen Requests mindestens 1 bis 2 Sekunden Abstand.

  4. Lass unblocker aktiviert. Bei Single-, Proxy- und Browser-Requests injiziert unblocker: true (der Standardwert) automatisch realistische Browser-Header. Schalte es nur aus, wenn du explizit eine einfache Client-Signatur oder eine rohe Herausforderungsseite benötigst.

  5. Überwache Erfolgsraten. Überprüfe die Metriken im Dashboard, um deine Erfolgsrate im Laufe der Zeit 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ückgab, die dann fehlschlug, übergebe sie beim nächsten Aufruf in ignoreProxies, damit FourA einen anderen Exit wählt.

  7. Lies defense vor einem Retry. Der Name des Anbieters sagt dir, ob es sich lohnt, ein anderes Browser-Profil zu versuchen, ob du ein vollständiges Rendering benötigst oder ob es eine Prüfung ist, die ohne einen Solving-Service nicht bestanden wird.

  8. Wechsle den präsentierten Browser. Einige Ziele akzeptieren einen Browser und lehnen einen anderen ab. Setze browser, os oder version bei Single und Proxy und lies GET /api/profiles für den aktuellen Katalog. Details in der Endpoint-Referenz.

Was FourA nicht umgehen kann

Einige Szenarien erfordern zusätzliches Handling außerhalb der API:

  • Login-geschützte Inhalte: FourA verwaltet keine langlebigen Logins für dich. Der Browser-Endpoint akzeptiert cookies pro Request; übergib deine Session-Cookies selbst.
  • Interaktive CAPTCHAs: reCAPTCHA und hCaptcha erfordern einen Solving-Service. FourA erkennt beide und meldet sie in defense.present, löst sie aber nicht. Turnstile wird vom Browser verarbeitet.
  • Geobeschränkte Inhalte: Nutze exitCountries auf /api/proxy/, um die Auswahl auf erlaubte Länder einzugrenzen. Websites, die zusätzlich nach ISP oder ASN filtern (einige länderspezifische Buchmacher, bestimmte Regierungsdienste), blockieren möglicherweise immer noch 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 geltendem Recht entspricht.

Nächste Schritte

Aktualisiert: 12. August 2026