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/undPOST /api/proxy/geben eindefense-Objekt zurück:defense.vendorist das System,defense.solvedgibt an, ob der Check bestanden wurde, unddefense.presentlistet alles auf, was in dieser Response erkannt wurde.POST /api/browser/gibtdefenseSolvedsowiedefenses.presentunddefenses.clearedzurück.
{
"status": 200,
"data": "<!doctype html>...",
"defense": {
"vendor": "sgcaptcha",
"solved": true,
"present": ["sgcaptcha"],
"cookie": "_I_=<clearance>"
}
}
Daraus folgen zwei Regeln:
solved: falsebedeutet, 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.- Ein Solve liefert dir die Clearance. Wenn
defense.cookievorhanden ist, sende es alsCookie-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
Starte bei unbekannten Zielen mit auto. Übergib eine
validate-Regel, lass die Engine-Leiter die günstigste Stufe wählen und liesmeta.rungin der Response, um zu sehen, welche Engine funktioniert hat. Sobald du es weißt, rufe diese Engine für wiederkehrenden Traffic direkt auf.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 mitunblocker, 5 bei Browser (10 für eine interaktive Seite).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.
Lass
unblockeraktiviert. Bei Single und Proxy sendetunblocker: 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.Ü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.
Ü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 inignoreProxies, damit FourA einen anderen Exit wählt.Lies
defensevor 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.Wechsle den verwendeten Browser. Manche Zielseiten akzeptieren einen bestimmten Browser und blockieren andere. Setze
browser,osoderversionbei Single und Proxy und liesGET /api/profilesfü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
cookiespro 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
exitCountriesauf/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 gibtno_eligible_proxyzurü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
- Smart Fetch (Auto): Details zu
/api/auto/ - Den richtigen Endpoint wählen: Entscheidungshilfe für Endpoints
- Häufige Probleme: 403-Fehler und Verifizierungsseiten beheben
- API-Endpoints: Vollständige Parameter-Referenz inklusive
exitCountries - Website-Prüfungen: Das Feld
defense, die Systemliste und Clearance-Replay - MCP-Rezepte: Workflow-Vorlagen inklusive der Proxy-First-Then-Browser-Kette