Reutiliza un proxy entre peticiones
Aprende cómo mantener la misma salida de proxy en requests de seguimiento, de manera que el renderizado de JavaScript, las llamadas a la API y las peticiones paginadas salgan de la misma IP.
Por qué reutilizar un proxy
Cuando visitas un objetivo por primera vez, FourA selecciona un proxy funcional para ti. Cada response incluye el ID del proxy que se utilizó. Pasa ese ID en los requests posteriores y:
- Las páginas de seguimiento llegan a través de la misma salida, por lo que las cookies de sesión y los rate limits se mantienen coherentes para el objetivo.
- Una petición limitada por país se mantiene dentro de tu lista de permitidos sin una nueva selección.
- El endpoint económico
POST /api/single/se repite a través de un proxy que ya pagaste por descubrir, al coste de Single en lugar del coste de Proxy.
El ID del proxy es una cadena opaca en base36 (algo como A1B2C3). Nunca una IP en bruto.
Dónde se encuentra el ID en un response
| Endpoint | Campo | Cuándo está presente |
|---|---|---|
POST /api/auto/ |
session.proxy |
Cuando returnSession es true (por defecto) |
POST /api/single/ |
proxy (nivel superior) |
Solo cuando el request proporcionó un campo proxy |
POST /api/proxy/ |
proxy (nivel superior) |
Siempre, en caso de éxito |
POST /api/browser/ |
proxy (nivel superior) |
Solo cuando el request proporcionó un campo proxy |
Para obtener una nueva salida sin fijar una, comienza con Auto o Proxy. Ambos descubren una salida funcional y devuelven su ID para ti.
Patrón 1: Auto descubre, Single repite
Ideal cuando tienes un objetivo que aún no conoces. Auto recorre la escalera una vez, luego Single reutiliza la sesión ganadora para cada página de seguimiento.
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"])
La llamada Auto cuesta lo que gaste su escalera. Cada llamada Single de seguimiento cuesta 2 créditos (Single con unblocker, por defecto).
Patrón 2: El proxy descubre, el navegador renderiza a través de la misma salida
Usa esto cuando el objetivo deba ver un país de salida específico y el contenido final necesite 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
}'
No llames a /api/proxy/ de nuevo para actualizar la selección. Una nueva llamada puede elegir una salida diferente y anular el propósito de la fijación. Si la salida fijada deja de funcionar, ejecuta una nueva llamada a /api/proxy/ para elegir una nueva, y luego continúa con esa.
Patrón 3: Omitir una salida quemada
Si una salida que solía funcionar comienza a devolver bloqueos o CAPTCHAs, dile a FourA que la evite en la siguiente selección.
{
"maxTries": 5,
"ignoreProxies": ["A1B2C3"],
"request": { "method": "GET", "url": "https://example.com/data" }
}
ignoreProxies acepta una lista de IDs de proxy de respuestas anteriores. Funciona en /api/proxy/ y /api/auto/. La lista se respeta en cada reintento interno, por lo que una sola llamada con ignoreProxies nunca elige las salidas quemadas.
Cuánto tiempo se mantiene activa una sesión anclada
La salida en sí vive mientras el proxy subyacente esté en buen estado, normalmente de minutos a horas. Si un replay comienza a devolver desafíos, bloqueos o redireccionamientos inesperados, probablemente la salida fue rotada o el objetivo actualizó su autorización.
Dos opciones cuando eso sucede:
- Nueva llamada
/api/auto/para la misma URL. Auto descubrirá una nueva sesión que funcione; descarta los IDs anteriores. - Nueva llamada
/api/proxy/conignoreProxies: ["<burned-id>"]si quieres seguir anclando manualmente.
Las cookies de sesión de una respuesta de Auto también expiran en el propio horario del objetivo. Algunos sitios mantienen la autorización durante horas; otros durante minutos. Trata la sesión como una caché, no como un token duradero.
Errores comunes
- Reutilizar un ID de proxy entre cuentas. Los IDs de proxy son identificadores por respuesta. Pasar un ID de una clave API a otra no garantiza que se resuelva a la misma salida.
- Intentar decodificar el ID. La cadena base36 es opaca. No la analices, no le quites caracteres ni la conviertas a minúsculas. Devuélvela tal cual.
- Anclar a través de una salida con rate limit. Si el objetivo tiene un rate limit por IP, canalizar muchas solicitudes a través de una sola salida desencadenará bloqueos más rápido. Para cargas de trabajo de alto volumen, permite que Auto o Proxy roten a través de múltiples salidas y ancla solo donde el objetivo lo requiera genuinamente.
- Ignorar
exitCountriesen el seguimiento. Si anclas una salida con alcance específico y luego llamas a Proxy de nuevo sinexitCountries, el seguimiento podría llegar a través de un país diferente. Mantén el alcance en cada llamada que lo necesite.
Relacionado
- Endpoints de API: Referencia completa de parámetros y respuestas
- Smart Fetch (Auto): Cómo Auto construye la sesión para hacer replay
- Manejo de protección Anti-Bot: Cuándo ayuda anclar y cuándo es mejor rotar
- Problemas comunes:
no_eligible_proxyy otros errores de proxy