Sites protégés
Les sites web modernes utilisent une détection de bots avancée. Ce guide explique comment FourA vous permet d'obtenir la page sur les sites qui vérifient l'identité du client, et comment augmenter votre taux de réussite.
Fonctionnement de la détection de bots
Les sites web utilisent plusieurs couches de protection :
- Réputation IP : Les datacenters et les adresses de proxy connues sont bloqués
- Empreinte réseau (Wire fingerprinting) : Chaque client HTTP possède une signature de handshake unique que les sites peuvent détecter
- Empreinte navigateur (Browser fingerprinting) : Le code JavaScript recherche les indicateurs de navigateur headless
- Analyse comportementale : Schémas de requêtes, timing et flux de navigation
- Pages de vérification : une tâche visuelle que le visiteur doit accomplir
La réponse indique le système qui a effectué une vérification ; Vérifications de sites les liste.
La voie la plus rapide : Auto
Si vous ne connaissez pas encore le niveau de protection, appelez /api/auto/ avec une sous-chaîne validate.data.accept que seule la véritable page contient. Auto parcourt une échelle optimisée selon les coûts (un proxy tournant, puis un navigateur via un proxy ; avec forceProxy: false, une sonde directe économique et un rendu direct par navigateur sont tentés en premier) et s'arrête au premier échelon renvoyant une réponse conforme à vos règles. Lors d'appels répétés vers le même hôte, une session active est réutilisée, réduisant ainsi le coût de la seconde requête.
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 reconnaît les pages de challenge courantes et poursuit l'exécution lorsqu'il en rencontre une. Votre chaîne validate.data.accept intercepte le reste : une page de vérification inconnue, un mur de connexion ou une page ne contenant pas le contenu souhaité. Consultez le guide Smart Fetch pour obtenir les instructions complètes.
Comment FourA intervient à chaque couche
Requêtes réalistes au niveau réseau
Le endpoint unique (POST /api/single/) émet des caractéristiques de handshake correspondant à celles d'un véritable navigateur. Les sites y répondent comme à un navigateur, sans la surcharge liée à son exécution.
Activez unblocker pour injecter également des headers de navigateur réalistes (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). unblocker est activé par défaut ; définissez false uniquement pour envoyer une signature client brute.
{
"method": "GET",
"url": "https://protected-site.com/data",
"unblocker": true
}
Rendu avec un véritable navigateur
L'endpoint browser (POST /api/browser/) exécute une instance complète du navigateur Chrome. Il exécute le JavaScript de la page exactement comme le ferait le navigateur d'un visiteur. unblocker sur Browser effectue les vérifications demandées par une page avant son chargement (Turnstile et protections similaires); laissez-le activé sauf si vous souhaitez récupérer la page de défi telle quelle.
Rotation de proxy
L'endpoint proxy (POST /api/proxy/) alterne automatiquement entre des proxys résidentiels et de centres de données. Si une adresse IP est bloquée, la tentative suivante en utilise une autre. Utilisez ignoreProxies lors d'un appel ultérieur pour ignorer les sorties déjà consommées; utilisez maxTries (valeur par défaut 5, max 90) pour définir l'intensité des tentatives.
Sorties ciblées par pays
Transmettez exitCountries sur /api/proxy/ pour restreindre la sélection aux proxys dont le pays visible par la cible correspond à une liste d'autorisation stricte. Les valeurs sont des codes à deux lettres (["CZ", "GB"]), nettoyés, mis en majuscules et dédupliqués. FourA ne bascule jamais vers un pays non demandé; si le pool actuel ne contient aucune correspondance, la réponse renvoie code: "no_eligible_proxy" avec le périmètre normalisé dans details.exitCountries afin que vous puissiez réessayer plus tard sans assouplir la contrainte. Le ciblage par pays est inclus à partir du forfait Startup. Sur un forfait qui ne l'inclut pas, un appel envoyant exitCountries est refusé avec un 403 et X-FourA-Limit: plan_limit_feature.
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"}
}'
La response inclut exitCountry lorsque le ciblage a été demandé. Vérifiez qu'il appartient à votre allowlist avant de faire confiance au payload, puis réutilisez l'ID proxy renvoyé lors de tout appel Browser ultérieur afin que le rendu JavaScript s'effectue via la même sortie.
FourA vous indique ce qui vous a bloqué
Vous n'avez pas besoin de deviner quel système a bloqué une request. Lorsqu'une cible exécute une vérification de bot, la response le nomme.
POST /api/single/etPOST /api/proxy/renvoient un objetdefense:defense.vendorest le système,defense.solvedindique si la vérification a été validée, etdefense.presentliste tout ce qui a été reconnu sur cette response.POST /api/browser/renvoiedefenseSolvedainsi quedefenses.presentetdefenses.cleared.
{
"status": 200,
"data": "<!doctype html>...",
"defense": {
"vendor": "sgcaptcha",
"solved": true,
"present": ["sgcaptcha"],
"cookie": "_I_=<clearance>"
}
}
Deux règles en découlent :
solved: falsesignifie que le corps de la réponse peut être le challenge et non la page. FourA ne présente jamais une page de challenge comme du contenu, vérifiez donc cet indicateur avant d'analyser.- Une résolution vous donne l'autorisation d'accès. Lorsque
defense.cookieest présent, renvoyez-le sous forme d'en-têteCookiesur la même sortie avec le même User-Agent, et les requêtes suivantes ignoreront complètement la vérification.
FourA reconnaît les systèmes de vérification courants, y compris les contrôles propriétaires d'eBay, Reddit, Amazon et Google Search. La reconnaissance est plus large que la résolution : un système que nous pouvons identifier mais pas résoudre est signalé et n'augmente jamais le coût de la requête. Lorsque la page renvoyée est la page de contrôle de ce système, même avec un statut HTTP 200, la requête n'est pas facturée et l'en-tête X-FourA-Check-Page la nomme. Consultez Vérifications de site pour chaque champ, la répartition actuelle entre résolution et détection, ainsi qu'un exemple de rejeu.
Stratégie par niveau de protection
Protection inconnue
Utilisez le mode auto. Il teste d'abord les méthodes économiques et n'augmente le niveau que si la cible l'y contraint, vous ne payez ainsi la découverte qu'une seule fois par hôte.
Protection faible (la plupart des sites)
Utilisez l'endpoint unique avec unblocker. La correspondance au niveau du réseau suffit.
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}'
Moyen : une page de challenge ou un pare-feu basique
Utilisez l'endpoint browser pour passer les challenges JavaScript :
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}'
Élevé : vérifications du comportement et de l'empreinte (fingerprint)
Utilisez l'endpoint de proxy avec plusieurs tentatives de rejeu :
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
}
}'
Pour les pages de challenge chaînées (« Just a moment », un point de contrôle de sécurité) où vous avez besoin de la page rendue une fois le challenge résolu, consultez les MCP Recipes. La recette « Protected page: proxy first, browser when JavaScript is needed » détaille le passage exact de proxy à browser.
Bonnes pratiques
Commencez par auto pour les cibles inconnues. Transmettez une règle
validate, laissez l'escalade sélectionner le niveau le moins coûteux, puis lisezmeta.rungdans la réponse pour identifier le moteur qui a fonctionné. Une fois identifié, appelez directement ce moteur pour le trafic récurrent.Réutilisez la session gagnante. Après un appel auto, le
sessionrenvoyé (proxy ID + cookies + userAgent) peut être rejoué via/api/single/ou/api/browser/pour les pages suivantes sur le même hôte, au tarif propre à cet endpoint : 2 crédits sur Single avecunblocker, 5 sur Browser (10 pour une page interactive).Respectez les rate limits. Même avec une rotation de proxy, l'envoi de centaines de requêtes par seconde vers un seul site déclenchera une détection comportementale. Espacez vos requêtes d'au moins 1 à 2 secondes.
Laissez
unblockeractivé. Sur Single et Proxy,unblocker: true(par défaut) envoie une signature de navigateur et des headers réalistes. Sur Browser, il active le solveur de challenge. Ne le désactivez que si vous avez spécifiquement besoin d'une signature client brute ou d'une page de challenge non résolue.Surveillez les taux de réussite. Consultez les métriques du Dashboard pour suivre votre taux de réussite dans le temps. Une baisse soudaine signifie généralement que le site cible a mis à jour sa protection.
Ignorez les sorties bloquées. Si un appel
/api/proxy/ou/api/auto/a renvoyé un proxy ID qui a ensuite commencé à échouer, transmettez-le dansignoreProxieslors de l'appel suivant afin que FourA choisisse une sortie différente.Lisez
defenseavant de réessayer. Le nom du fournisseur vous indique s'il vaut la peine d'essayer un autre profil de navigateur, si vous avez besoin d'un rendu complet, ou si le contrôle nécessite un service de résolution dédié.Modifiez le navigateur présenté. Certaines cibles acceptent un navigateur et en refusent un autre. Définissez
browser,osouversionsur Single et Proxy, et consultezGET /api/profilespour le catalogue actuel. Détails dans la référence des endpoints.
Limites
Certains scénarios nécessitent un traitement supplémentaire en dehors de l'API :
- Contenu protégé par authentification : FourA ne gère pas les connexions persistantes à votre place. L'endpoint browser accepte
cookiespar request ; transmettez vous-même vos cookies de session. - Tâches de vérification interactives : FourA détecte les vérifications visuelles et les signale dans
defense.present, mais ne les résout pas. Turnstile est pris en charge par Browser. - Contenu restreint à certains pays : utilisez
exitCountriessur/api/proxy/pour restreindre la sélection aux pays autorisés. Les sites qui appliquent également des restrictions par FAI ou ASN (certains bookmakers sous licence nationale, certains services gouvernementaux) peuvent toujours bloquer les sorties résidentielles génériques ; la request renvoieno_eligible_proxylorsque le pool actuel ne contient aucune sortie correspondante. - Sites soumis à des restrictions légales : veillez toujours à ce que votre collecte de données respecte les conditions d'utilisation du site cible et les lois applicables.
Étapes suivantes
- Smart Fetch (Auto) : analyse détaillée de
/api/auto/ - Choisir le bon endpoint : guide de décision pour les endpoints
- Problèmes courants : corriger les erreurs 403 et les pages de vérification
- Endpoints API : référence complète des paramètres, y compris
exitCountries - Vérifications du site : le champ
defense, la liste des systèmes et le rejeu de clearance - Recettes MCP : modèles de workflow, y compris la chaîne proxy-first puis browser