Réutiliser un proxy entre les requêtes

Découvrez comment conserver la même sortie proxy sur vos requêtes suivantes, afin que les rendus JavaScript, les appels API et les récupérations paginées partent tous de la même IP.

Pourquoi réutiliser un proxy

Lorsque vous ciblez une URL pour la première fois, FourA choisit un proxy fonctionnel pour vous. Chaque réponse inclut l'ID du proxy utilisé. Renvoyez cet ID lors des requêtes suivantes et :

  • Les pages suivantes passent par la même sortie, ce qui maintient la cohérence des cookies de session et des rate limits auprès de la cible.
  • Une requête ciblée par pays reste dans votre liste autorisée sans nécessiter une nouvelle sélection.
  • L'endpoint économique POST /api/single/ rejoue la requête via un proxy que vous avez déjà payé pour découvrir, au tarif Single plutôt qu'au tarif Proxy.

L'ID de proxy est une chaîne opaque en base36 (par exemple A1B2C3). Jamais une IP brute.

Où trouver l'ID dans une réponse

Endpoint Field When it's present
POST /api/auto/ session.proxy Lorsque returnSession est true (valeur par défaut)
POST /api/single/ proxy (niveau racine) Uniquement lorsque la requête a fourni un champ proxy
POST /api/proxy/ proxy (niveau racine) Toujours, en cas de succès
POST /api/browser/ proxy (niveau racine) Uniquement lorsque la requête a fourni un champ proxy

Pour obtenir une nouvelle sortie sans en fixer une, commencez par Auto ou Proxy. Tous deux découvrent une sortie fonctionnelle et vous renvoient son ID.

Modèle 1 : Auto découvre, Single rejoue

Idéal lorsque vous traitez une cible que vous ne connaissez pas encore. Auto parcourt l'échelle une fois, puis Single réutilise la session retenue pour chaque page suivante.

import requests

API = "https://eu.api.foura.ai"
H = {"X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json"}

# Step 1: discover a working exit with Auto.
r = requests.post(f"{API}/api/auto/", headers=H, json={
    "url": "https://example.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
}).json()

session = r["session"]
proxy = session["proxy"]
user_agent = session["userAgent"]

# Step 2: paginate with Single, reusing the same exit and User-Agent.
for sku in ("43", "44", "45"):
    p = requests.post(f"{API}/api/single/", headers=H, json={
        "method": "GET",
        "url": f"https://example.com/product/{sku}",
        "proxy": proxy,
        "headers": [["User-Agent", user_agent]],
    }).json()
    print(sku, p["status"])

L'appel Auto coûte ce que son échelle consomme. Chaque appel Single de suivi coûte 2 crédits (Single avec unblocker, la valeur par défaut).

Modèle 2 : Proxy découvre, Browser effectue le rendu via la même sortie

Utilisez ceci lorsque la cible doit voir un pays de sortie spécifique et que le contenu final nécessite JavaScript.

# Step 1: pick a country-scoped exit with Proxy.
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": ["FR", "GB"],
    "request": {"method": "GET", "url": "https://example.com/pricing"}
  }'
# Response includes: "proxy": "A1B2C3", "exitCountry": "FR"

# Step 2: render the JS-heavy page through THAT exit.
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://example.com/pricing",
    "proxy": "A1B2C3",
    "timeout_ms": 20000
  }'

N'appelez pas /api/proxy/ à nouveau pour actualiser la sélection. Un nouvel appel peut choisir une sortie différente et annuler l'intérêt du pinning. Si la sortie épinglée cesse de fonctionner, exécutez un nouvel appel /api/proxy/ pour en choisir une nouvelle, puis continuez avec celle-ci.

Pattern 3 : Ignorer une sortie brûlée

Si une sortie qui fonctionnait commence à renvoyer des refus ou des pages de vérification, indiquez à FourA de l'éviter lors de la prochaine sélection.

{
  "maxTries": 5,
  "ignoreProxies": ["A1B2C3"],
  "request": { "method": "GET", "url": "https://example.com/data" }
}

ignoreProxies accepte une liste d'identifiants de proxy issus de réponses précédentes. Il fonctionne sur /api/proxy/ et /api/auto/. La liste est respectée à chaque nouvelle tentative interne, de sorte qu'un seul appel avec ignoreProxies ne sélectionne jamais les sorties grillées.

Durée de validité d'une session épinglée

La sortie elle-même reste active tant que le proxy sous-jacent est sain, généralement de quelques minutes à plusieurs heures. Si une réémission commence à renvoyer des challenges, des blocages ou des redirections inattendues, la sortie a probablement été renouvelée ou la cible a actualisé ses autorisations.

Deux options s'offrent à vous dans ce cas :

  1. Nouvel appel /api/auto/ pour la même URL. Auto découvrira une nouvelle session fonctionnelle ; abandonnez les identifiants précédents.
  2. Nouvel appel /api/proxy/ avec ignoreProxies: ["<burned-id>"] si vous souhaitez continuer l'épinglage manuel.

Les cookies de session issus d'une réponse Auto expirent également selon le calendrier propre à la cible. Certains sites conservent l'autorisation pendant des heures, d'autres pendant quelques minutes. Considérez la session comme un cache et non comme un token permanent.

Quand un identifiant ne peut pas être épinglé

Trois erreurs 400 peuvent être retournées par une valeur proxy, et elles ont des significations différentes :

Erreur Ce qui s'est passé Que faire
Invalid proxy format La valeur n'est pas un identifiant émis par FourA. Une adresse proxy brute aboutit ici. Envoyez la chaîne opaque issue d'une réponse, textuellement.
Proxy not found L'identifiant a été décodé, mais il ne correspond plus à une sortie active. Récupérez une nouvelle sortie depuis un nouvel appel Auto ou Proxy.
Managed exit: this proxy id cannot be pinned to a request L'identifiant est une sortie premium, et le trafic premium de votre forfait pour cette période est épuisé, ou votre forfait n'inclut pas les sorties premium. Exécutez l'appel via POST /api/proxy/ et utilisez la sortie sélectionnée, ou ajoutez du trafic premium et épinglez-le à nouveau.

La troisième erreur provient d'un identifiant fourni lors d'un appel réussi ; vous pouvez donc la rencontrer sans avoir commis d'erreur. Traitez-la comme une session expirée : basculez vers un nouvel appel de découverte plutôt que de réessayer le même identifiant.

Erreurs courantes

  • Réutiliser un ID de proxy entre plusieurs comptes. Ne partagez pas les ID entre vos comptes : un ID qu'un compte peut épingler peut être refusé pour un autre, par exemple une sortie premium sur un forfait sans trafic premium.
  • Tenter de décoder l'ID. La chaîne base36 est opaque. Ne l'analysez pas, ne supprimez aucun caractère, ne la passez pas en minuscules. Renvoyez-la telle quelle.
  • Épingler une sortie soumise à un rate limit. Si la cible applique un rate limit par IP, faire transiter de nombreuses requêtes par une seule sortie déclenchera des blocages plus rapidement. Pour les charges de travail volumineuses, laissez Auto ou Proxy alterner entre plusieurs sorties et n'épinglez que lorsque la cible l'exige réellement.
  • Épingler involontairement une sortie premium. Un ID provenant d'un appel traité par une sortie premium (exitClass: "premium" sur Proxy) épingle cette sortie premium. Chaque rejeu via celle-ci est décompté de votre trafic premium, et la réponse inclut X-FourA-Exit-Class: premium.
  • Envoyer exitCountries sur un forfait sans ciblage géographique. 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.
  • Omettre exitCountries lors du suivi. Si vous épinglez une sortie ciblée géographiquement puis appelez à nouveau Proxy sans exitCountries, la requête suivante peut aboutir via un autre pays. Conservez le ciblage sur chaque appel qui le nécessite.

Pages connexes

Mis à jour : 27 septembre 2026