Todos los artículos

Presentamos Auto: un endpoint para cualquier objetivo

El endpoint Auto elige Single, Proxy Finder o Browser para cada request, maneja los desafíos anti-bot y devuelve una sesión que tu próxima llamada puede reutilizar.

Novedades

El endpoint /api/auto es ahora la vía más rápida para obtener una response válida para cualquier URL. Apúntalo a un target. Auto elige si procesa la request a través de Single, Proxy Finder o Browser, resuelve los challenges antibot si encuentra alguno y devuelve una sesión que tu siguiente llamada puede reutilizar.

Un solo endpoint. Cualquier target. Sin cambios de modo por tu parte.

Esa es toda la idea. El resto de este post explica cómo funciona, cuánto cuesta y dónde están los casos límite.

Cómo funciona

Bajo Auto opera una escala de niveles (el más económico primero, el más costoso al final). En cada request, Auto asciende por los niveles hasta que uno entrega una response que tus reglas validate aceptan.

Los niveles, en orden:

  1. Sesión en caché. Si Auto tiene una sesión activa para este host procedente de una llamada anterior, la reutiliza primero. Es la vía más económica.
  2. Proxy Finder. Una request con proxy rotativo. Adecuado para sitios protegidos principalmente por reputación de IP.
  3. Browser. Un renderizado completo que ejecuta JavaScript, resuelve challenges antibot y recopila las cookies emitidas por el sitio.

En cuanto un nivel tiene éxito, Auto almacena la sesión obtenida: el proxy id utilizado, las cookies emitidas por el sitio y el User-Agent. En la siguiente llamada al mismo host, Auto prueba esa sesión primero. Si sigue funcionando, pagas el nivel económico, no el costoso.

Una llamada mínima:

curl -X POST "https://api.foura.ai/api/auto" \
  -H "X-API-Key: pk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/data",
    "validate": { "status": { "accept": [200] } }
  }'

Una respuesta recortada:

{
  "status": 200,
  "data": "...",
  "headers": [...],
  "meta": {
    "rung": "cache",
    "solved": false,
    "attempts": 1,
    "credits": 2
  },
  "session": {
    "proxy": "CLN1B8",
    "cookies": [{ "name": "cf_clearance", "value": "..." }],
    "userAgent": "..."
  }
}

Dos campos importan para lo que construyas a continuación. meta.rung te indica qué ruta ganó. session es la tupla que puedes pasar a una llamada de /api/single para reproducir la misma salida tú mismo. El campo proxy es un ID opaco en base36 (sin IPs directas), seguro para registrar en logs y seguro para transferir entre sistemas.

Impacto

Aquí importan dos números.

La primera llamada a un sitio protegido ejecuta el nivel Browser: renderiza, resuelve, recopila cookies y te entrega la página. Eso cuesta unos 10 créditos. Una vez que Auto almacena en caché una sesión válida para ese host, las siguientes llamadas la reutilizan: a través de Single por 2 créditos, o a través de Proxy Finder por 4 cuando las cookies de la sesión funcionan desde cualquier dirección. Así, la segunda llamada es hasta 5 veces más barata que la primera, y todas las posteriores mantienen la tarifa reducida mientras la sesión siga activa. Medimos esto en producción durante el despliegue: las salidas sin cookies (una vez encontradas) se reutilizan a exactamente 2 créditos por llamada, frente a los 10 que solían costar cuando cada request pasaba por Proxy Finder.

El segundo número: los niveles fallidos no se facturan. Si Auto prueba tres proxies y cada uno devuelve un 403 antes de que el cuarto entregue la respuesta, solo se cobran los créditos del cuarto. Pagas por el contenido entregado, no por la búsqueda.

Ese es el valor principal. El nivel costoso se ejecuta una sola vez, el nivel económico se ejecuta indefinidamente después, y no tienes que programar la lógica de almacenamiento en caché por tu cuenta.

Vale la pena destacar otros dos comportamientos porque resuelven problemas reales en producción:

Los objetivos con bloqueo geográfico dejan de desperdiciar salidas. Cuando un sitio devuelve 451 (o una pantalla intermedia de bloqueo legal) para la mayoría de las salidas, Auto aprende qué países realmente entregaron contenido. En la siguiente llamada, obtiene salidas nuevas de esos países primero y distribuye la carga concurrente entre ellas. De este modo, una única salida afortunada no se satura ni sufre rate limit.

Validate se ejecuta en cada nivel. Una página con contenido erróneo (un bloqueo geográfico que devuelve status 200 con un aviso legal en el body) nunca cuenta como un acierto. Si tu validate.data.fail contiene "legal reasons", Auto sigue intentándolo hasta que un nivel lo supere. No el nivel en caché. Ningún nivel. Si nada pasa la validación, recibes un fallo transparente con el motivo real.

Para usuarios avanzados

Algunos ajustes clave cuando envías volumen a través de Auto.

timeout_ms es un presupuesto para toda la operación, no para cada nivel por separado. El valor por defecto es 120 segundos. Auto lo distribuye: cada sub-llamada recibe min(su timeout natural, el presupuesto restante), y la secuencia deja de lanzar nuevos niveles cuando queda demasiado poco tiempo. Configura 20,000 para casos con latencia interactiva. Deja el valor por defecto para rastreos masivos que toleran colas más largas.

forceProxy está activo por defecto. Auto nunca interactúa con el objetivo desde la IP de origen de FourA a menos que configures forceProxy: false. Una advertencia: algunos sitios (Cloudflare interactivo con control por reputación de IP) funcionan mejor desde una IP de centro de datos limpia que desde una salida residencial de baja confianza. Por lo tanto, forceProxy: false puede facilitar el acceso a ciertos objetivos en lugar de dificultarlo. Si observas desafíos repetidos en un host específico, vale la pena probar a desactivar esta opción.

ignoreProxies es una lista de exclusión del cliente. Pasa los proxy IDs que sabes que están quemados (de una session.proxy previa que recibió un rate limit de tu lado), y Auto los omite en todas partes: reutilización de warm sessions, búsqueda de salida y la subllamada a Proxy Finder. De este modo, Auto no volverá a seleccionar la salida que acabas de indicarle que evite.

meta también te permite crear tus propios dashboards encima: qué hosts llegaron al nivel de navegador hoy, promedio de intentos por entrega, proporción de peticiones con challenge resuelto frente a peticiones limpias. Si un host específico sube repentinamente de 2 créditos a 10, esa es una señal de degradación de sesión sobre la que puedes actuar antes de que tu factura aumente.

Un ejemplo que combina los cuatro:

import requests

r = requests.post(
    "https://api.foura.ai/api/auto",
    headers={"X-API-Key": "pk_live_..."},
    json={
        "url": "https://example.com/product/9876",
        "timeout_ms": 30000,
        "forceProxy": True,
        "ignoreProxies": ["CLN1B8", "K7X9AB"],
        "validate": {
            "status": {"accept": [200]},
            "data":   {"accept": ['"price":'], "fail": ["captcha", "legal reasons"]}
        }
    }
).json()

# If Auto delivered, keep the session for the next call to this host
if r.get("status") == 200 and "session" in r:
    session = r["session"]                              # {proxy, cookies, userAgent}
    print(r["meta"]["rung"], r["meta"]["credits"], r["meta"]["attempts"])

Para el esquema validate en sí, consulta la guía anterior en Validate Rules Now Decide What Counts as Success.

Próximos pasos

Hay dos cosas en el roadmap de Auto ahora mismo.

La inspección de sesiones llegará próximamente al Dashboard. En este momento, las sesiones que Auto mantiene por host residen dentro del servicio y no hay nada que puedas revisar cuando estés depurando un consumo elevado desde tu lado. Estamos integrando una vista de sesiones por host para que puedas ver las sesiones en caché, su antigüedad, cuánto tiempo les queda de vida y el historial de niveles detrás de cada una. Además, añadiremos un botón para descartar una sesión manualmente cuando tu objetivo cambie y sepas que la caché no es válida.

Después de eso, controles de costos más estrictos. Un límite estricto de créditos por request (no gastes nunca más de X en esta llamada y falla de forma clara si fuera a superarse) y un modo "single-only" para equipos cuyos objetivos nunca necesitan el nivel de navegador. Ambas opciones están hoy bajo feature flags.

El objetivo de Auto es que no tengas que pensar a qué producto llamar. Eso no significa que no puedas inspeccionar lo que ocurrió. Cada response incluye el nivel que tomó y la sesión que creó. Lee esos dos campos y sabrás con exactitud por qué tus llamadas cuestan lo que cuestan.