Gestion de la protection anti-bot
Les sites web modernes utilisent une détection de bots avancée. Ce guide explique comment FourA gère les systèmes anti-bot et comment maximiser votre taux de réussite.
Comment fonctionne la détection de bots
Les sites web utilisent plusieurs couches de protection :
- Réputation IP : Les centres de données et les adresses proxy connues sont bloqués
- Wire fingerprinting : Chaque client HTTP possède une signature de handshake unique que les sites peuvent détecter
- Browser fingerprinting : JavaScript vérifie les indicateurs de navigateur headless
- Analyse comportementale : Modèles de request, chronométrage et flux de navigation
- CAPTCHAs : Défis visuels comme dernière ligne de défense
Les fournisseurs anti-bot courants incluent Cloudflare, DataDome, PerimeterX et Akamai Bot Manager.
Chemin le 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 vraie page contient. Auto parcourt une échelle sensible aux coûts (sonde économique, proxy rotatif, rendu de navigateur, navigateur via proxy) et s'arrête au premier échelon qui renvoie une response acceptée par vos règles. Lors d'appels répétés au même hôte, une session chaude est rejouée à la place, de sorte que la deuxième requête est peu coûteuse.
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"]}}
}'
Sans validate.data.accept, auto ne peut pas différencier un véritable code 200 d'un interstitiel de défi renvoyé avec le statut 200 et peut renvoyer le défi comme un succès. Consultez le guide Smart Fetch pour la procédure complète.
Comment FourA aide à chaque couche
Requêtes réalistes au niveau du réseau
Le endpoint unique (POST /api/single/) émet des caractéristiques de handshake qui correspondent à un vrai navigateur. Cela permet de passer les vérifications les plus courantes au niveau du réseau sans la surcharge d'exécution d'un navigateur complet.
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 simple signature client.
{
"method": "GET",
"url": "https://protected-site.com/data",
"unblocker": true
}
Rendu de navigateur réel
Le endpoint de navigateur (POST /api/browser/) exécute une instance complète du navigateur Chrome. Combiné à des correctifs anti-détection, il réussit la plupart des vérifications de fingerprinting basées sur JavaScript. unblocker sur le navigateur déclenche le solveur de défense automatique (validation Turnstile et portails similaires); laissez-le activé à moins que vous ne vouliez récupérer la page de défi brute.
Rotation de proxy
Le endpoint de proxy (POST /api/proxy/) effectue une rotation automatique entre les proxys résidentiels et de centre de données. Si une adresse IP est bloquée, la tentative suivante en utilise une différente. Utilisez ignoreProxies lors d'un appel ultérieur pour ignorer les nœuds de sortie que vous avez déjà grillés; utilisez maxTries (par défaut 5, max 90) pour contrôler son niveau d'effort.
Nœuds de sortie ciblés par pays
Passez 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"]), sans espaces inutiles, en majuscules et dédupliqués. FourA ne se rabat jamais sur un pays non demandé; si le pool actuel n'a aucune correspondance, la réponse renvoie code: "no_eligible_proxy" avec la portée normalisée dans details.exitCountries afin que vous puissiez réessayer plus tard sans assouplir l'exigence.
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 réponse inclut exitCountry lorsque le scoping a été demandé. Vérifiez qu'il appartient à votre liste d'autorisation avant de faire confiance au payload, puis réutilisez l'ID proxy renvoyé lors de tout appel de navigateur 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 à deviner quel système a bloqué une requête. Lorsqu'une cible exécute une vérification de bot, la réponse la 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 est reconnu sur cette réponse.POST /api/browser/renvoiedefenseSolvedplusdefenses.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 body peut être le défi, et non la page. FourA ne masque jamais un défi non résolu en contenu, vérifiez donc le flag avant le parsing.- Une résolution vous donne l'autorisation. Lorsque
defense.cookieest présent, renvoyez-le comme headerCookiesur la même sortie avec le même User-Agent et les requêtes suivantes ignorent complètement la vérification.
FourA reconnaît Cloudflare, SiteGround, DataDome, PerimeterX, Akamai, Incapsula, AWS WAF, hCaptcha, reCAPTCHA et le propre défi d'eBay. La reconnaissance est plus large que la résolution : un système que nous pouvons nommer mais pas résoudre est signalé et ne modifie jamais le coût de la requête. Consultez Défenses Anti-Bot pour chaque champ, la répartition actuelle entre la résolution et la détection, et un exemple de rejeu.
Stratégie par niveau de protection
Protection inconnue
Utilisez auto. Il teste d'abord à moindre coût et n'escalade que dans la mesure où la cible l'impose, vous ne payez donc la découverte qu'une seule fois par hôte.
Protection faible (la plupart des sites)
Utilisez le endpoint unique avec unblocker. La correspondance au niveau réseau (wire-level) est suffisante.
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}'
Protection moyenne (Cloudflare, WAF de base)
Utilisez l'endpoint du navigateur pour passer les défis 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}'
Haute protection (DataDome, PerimeterX)
Utilisez l'endpoint proxy avec plusieurs tentatives de réessai :
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 défis WAF enchaînés (Cloudflare "Just a moment", Vercel Security Checkpoint, Akamai Bot Manager) où vous avez besoin de la page rendue une fois le défi passé, consultez les recettes MCP. La recette "Protected page: proxy first, browser when JavaScript is needed" montre le transfert exact du proxy vers le navigateur.
Bonnes pratiques
Commencez par auto pour les cibles inconnues. Transmettez une règle
validate, laissez le système choisir l'échelon le moins cher, puis lisezmeta.rungdans la réponse pour voir quel moteur a fonctionné. Une fois que vous le savez, appelez ce moteur directement pour le trafic répété.Réutilisez la session gagnante. Après un appel auto, les données renvoyées
session(ID de proxy + cookies + userAgent) peuvent être rejouées via/api/single/ou/api/browser/pour les pages suivantes sur le même hôte, au prix de Single.Respectez les rate limits. Même avec la rotation de proxy, l'envoi de centaines de requêtes par seconde à un seul site déclenchera une détection comportementale. Espacez vos requêtes d'au moins 1 à 2 secondes.
Laissez
unblockeractivé. Pour les requêtes Single, Proxy et Browser,unblocker: true(la valeur par défaut) injecte automatiquement des headers de navigateur réalistes. Désactivez-le uniquement si vous avez spécifiquement besoin d'une signature client simple ou d'une page de défi brute.Surveillez les taux de réussite. Consultez les métriques du Tableau de bord pour suivre votre taux de réussite au fil du temps. Une baisse soudaine signifie généralement que le site cible a mis à jour sa protection.
Ignorez les sorties brûlées. Si un appel
/api/proxy/ou/api/auto/a renvoyé un ID de proxy qui a ensuite commencé à échouer, transmettez-le dansignoreProxieslors du prochain appel pour 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 profil de navigateur différent, si vous avez besoin d'un rendu complet, ou si la vérification est de celles que personne ne passe sans un service de résolution.Changez le navigateur que vous présentez. Certaines cibles acceptent un navigateur et en refusent un autre. Définissez
browser,os, ouversionsur Single et Proxy, et lisezGET /api/profilespour le catalogue actuel. Plus de détails dans la référence du endpoint.
Ce que FourA ne peut pas contourner
Certains scénarios nécessitent un traitement supplémentaire en dehors de l'API :
- Contenu protégé par connexion : FourA ne gère pas les connexions à longue durée de vie pour vous. L'endpoint du navigateur accepte
cookiespar requête ; apportez vos propres cookies de session. - CAPTCHAs interactifs : reCAPTCHA et hCaptcha nécessitent un service de résolution. FourA reconnaît les deux et les signale dans
defense.present, mais ne les résout pas. Turnstile est géré par le Browser. - Contenu géo-restreint : utilisez
exitCountriessur/api/proxy/pour restreindre la sélection aux pays autorisés. Les sites qui restreignent en plus par ISP ou ASN (certains bookmakers sous licence nationale, certains services gouvernementaux) peuvent toujours bloquer les sorties résidentielles génériques ; la requête renvoieno_eligible_proxylorsque le pool actuel n'a pas de sortie correspondante. - Sites avec restrictions légales : Assurez-vous toujours 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 blocages par captcha
- Endpoints API : Référence complète des paramètres incluant
exitCountries - Défenses Anti-Bot : Le champ
defense, la liste des fournisseurs, et la relecture de clearance - Recettes MCP : Modèles de workflow incluant la chaîne proxy-first-then-browser