Sitios protegidos

Los sitios web modernos utilizan detección avanzada de bots. Esta guía explica cómo FourA obtiene la página en sitios que verifican quién hace la solicitud y cómo aumentar tu tasa de éxito.

Cómo funciona la detección de bots

Los sitios web utilizan varias capas de protección:

  • Reputación de IP: los centros de datos y las direcciones proxy conocidas se bloquean
  • Wire fingerprinting: cada cliente HTTP tiene una firma de handshake única que los sitios pueden detectar
  • Browser fingerprinting: JavaScript comprueba indicadores de navegadores headless
  • Análisis de comportamiento: patrones de request, tiempos y flujo de navegación
  • Páginas de verificación: una tarea visual que el visitante debe completar

La respuesta indica el sistema que ejecutó la verificación; Site checks los enumera.

La vía más rápida: Auto

Si aún no conoces el nivel de protección, llama a /api/auto/ con una subcadena de validate.data.accept que solo la página real contenga. Auto recorre una escala que optimiza costos (un proxy rotado, luego un navegador a través de un proxy; con forceProxy: false, se prueban primero un sondeo directo económico y un renderizado directo en navegador) y se detiene en el primer nivel que devuelva una respuesta aceptada por tus reglas. En llamadas repetidas al mismo host, se reutiliza una sesión activa en su lugar, por lo que la segunda petición resulta económica.

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 reconoce las páginas de desafío comunes y continúa avanzando cuando encuentra una. Tu cadena validate.data.accept captura el resto: una página de verificación desconocida, un muro de inicio de sesión o una página sin el contenido que necesitas. Consulta la guía de Smart Fetch para ver el recorrido completo.

Cómo ayuda FourA en cada capa

Requests realistas a nivel de red

El endpoint único (POST /api/single/) emite características de handshake que coinciden con las de un navegador real. Los sitios le responden de la misma manera que a un navegador, sin la sobrecarga de ejecutar uno.

Habilita unblocker para inyectar también headers de navegador realistas (User-Agent, Sec-Ch-Ua, Sec-Fetch-*, Accept-Encoding). unblocker está activado por defecto; define false solo para enviar una firma de cliente básica.

{
  "method": "GET",
  "url": "https://protected-site.com/data",
  "unblocker": true
}

Renderizado con navegador real

El endpoint de browser (POST /api/browser/) ejecuta una instancia completa del navegador Chrome. Ejecuta el JavaScript de la página tal como lo hace el navegador de un visitante. unblocker en Browser completa las verificaciones que solicita una página antes de cargar (Turnstile y controles similares); déjalo activado a menos que quieras recibir la página del desafío tal como viene.

Rotación de proxies

El endpoint de proxy (POST /api/proxy/) rota automáticamente entre proxies residenciales y de centros de datos. Si una IP es bloqueada, el siguiente intento usa una diferente. Usa ignoreProxies en una llamada de seguimiento para omitir las salidas que ya consumiste; usa maxTries (por defecto 5, máximo 90) para controlar la cantidad de reintentos.

Salidas delimitadas por país

Envía exitCountries en /api/proxy/ para restringir la selección a proxies cuyo país visible para el destino coincida con una lista de permisos estricta. Los valores son códigos de dos letras (["CZ", "GB"]), recortados, en mayúsculas y sin duplicados. FourA nunca recurre a un país no solicitado; si el grupo actual no tiene coincidencias, la respuesta devuelve code: "no_eligible_proxy" con el alcance normalizado en details.exitCountries para que puedas reintentar más tarde sin relajar el requisito. La delimitación por país está incluida a partir del plan Startup. En un plan que no la incluye, una llamada que envíe exitCountries es rechazada con un 403 y 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 incluye exitCountry cuando se solicitó scoping. Verifica que pertenezca a tu allowlist antes de confiar en el payload, y luego reutiliza el ID proxy devuelto en cualquier llamada posterior de Browser para que el renderizado de JavaScript ocurra a través de la misma salida.

FourA te dice qué te detuvo

No tienes que adivinar qué sistema bloqueó un request. Cuando un objetivo ejecuta una verificación de bots, la response lo nombra.

  • POST /api/single/ y POST /api/proxy/ devuelven un objeto defense: defense.vendor es el sistema, defense.solved indica si se superó la verificación y defense.present lista todo lo reconocido en esa response.
  • POST /api/browser/ devuelve defenseSolved más defenses.present y defenses.cleared.
{
  "status": 200,
  "data": "<!doctype html>...",
  "defense": {
    "vendor": "sgcaptcha",
    "solved": true,
    "present": ["sgcaptcha"],
    "cookie": "_I_=<clearance>"
  }
}

De esto se derivan dos reglas:

  1. solved: false significa que el body puede ser el challenge, no la página. FourA nunca presenta una página de challenge como contenido, así que comprueba el flag antes de parsear.
  2. Una resolución te entrega la autorización. Cuando defense.cookie está presente, envíalo de vuelta como un header Cookie en la misma salida con el mismo User-Agent y las requests posteriores se saltarán la comprobación por completo.

FourA reconoce los sistemas de comprobación habituales, incluidos los propios de eBay, Reddit, Amazon y Google Search. Reconocer abarca más que resolver: un sistema que podemos identificar pero no resolver se reporta y nunca incrementa el costo de la request. Cuando la página devuelta es la página de comprobación de ese sistema, incluso con HTTP 200, la request no se factura y el header X-FourA-Check-Page la identifica. Consulta Comprobaciones del sitio para ver cada campo, la división actual entre resolución y detección, y un ejemplo de reproducción.

Estrategia por nivel de protección

Protección desconocida

Usa auto. Primero sondea de forma económica y solo escala según lo exija el objetivo, por lo que pagas por el descubrimiento una sola vez por host.

Protección baja (la mayoría de los sitios)

Usa el endpoint único con unblocker. La coincidencia a nivel de red es suficiente.

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}'

Medio: una página de challenge o un firewall básico

Usa el endpoint de browser para superar challenges de 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}'

Alto: verificaciones de comportamiento y huella digital

Usa el endpoint de proxy con múltiples intentos de reintento:

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
    }
  }'

Para páginas con desafíos encadenados ("Just a moment", un control de seguridad) donde necesitas la página renderizada después de superar el desafío, consulta las recetas de MCP. La receta "Protected page: proxy first, browser when JavaScript is needed" muestra la transferencia exacta de proxy a browser.

Best Practices

  1. Comienza con auto para objetivos desconocidos. Envía una regla validate, deja que la escala elija el nivel más económico y luego lee meta.rung en la respuesta para ver qué motor funcionó. Una vez que lo sepas, llama a ese motor directamente para el tráfico repetido.

  2. Reutiliza la sesión ganadora. Después de una llamada con auto, el session devuelto (ID de proxy + cookies + userAgent) se puede reproducir mediante /api/single/ o /api/browser/ para páginas de seguimiento en el mismo host, al precio propio de ese endpoint: 2 créditos en Single con unblocker, 5 en Browser (10 para una página interactiva).

  3. Respeta los rate limits. Incluso con rotación de proxy, enviar cientos de requests por segundo a un solo sitio activará la detección de comportamiento. Espacia tus requests al menos de 1 a 2 segundos.

  4. Mantén activado unblocker. En Single y Proxy, unblocker: true (el valor predeterminado) envía una firma de navegador y headers realistas. En Browser, activa el solucionador de desafíos. Desactívalo solo cuando necesites específicamente una firma de cliente básica o una página de desafío sin procesar.

  5. Monitorea las tasas de éxito. Revisa las métricas del Dashboard para rastrear tu tasa de éxito a lo largo del tiempo. Una caída repentina suele indicar que el sitio objetivo actualizó su protección.

  6. Omite las salidas quemadas. Si una llamada a /api/proxy/ o /api/auto/ devolvió un ID de proxy que luego comenzó a fallar, pásalo en ignoreProxies en la siguiente llamada para que FourA elija una salida diferente.

  7. Lee defense antes de reintentar. El nombre del proveedor te indica si vale la pena probar un perfil de navegador diferente, si necesitas un renderizado completo o si el control es de los que nadie supera sin un servicio de resolución.

  8. Cambia el navegador que presentas. Algunos objetivos aceptan un navegador y rechazan otro. Configura browser, os o version en Single y Proxy, y lee GET /api/profiles para consultar el catálogo actual. Más detalles en la referencia de endpoints.

Límites

Algunos escenarios requieren un manejo adicional fuera de la API:

  • Contenido protegido por inicio de sesión: FourA no gestiona sesiones iniciadas de larga duración por ti. El endpoint browser acepta cookies por cada request; incluye tus propias cookies de sesión.
  • Tareas de verificación interactivas: FourA reconoce las visuales y las reporta en defense.present, pero no las completa. Turnstile es gestionado por Browser.
  • Contenido limitado a ciertos países: usa exitCountries en /api/proxy/ para fijar la selección a los países permitidos. Los sitios que además restringen por ISP o ASN (algunas casas de apuestas con licencia nacional, ciertos servicios gubernamentales) aún pueden bloquear salidas residenciales genéricas; la request devuelve no_eligible_proxy cuando el pool actual no tiene una salida coincidente.
  • Sitios con restricciones legales: Asegúrate siempre de que tu recolección de datos cumpla con los términos de servicio del sitio de destino y las leyes aplicables.

Pasos siguientes

Actualizado: 27 de septiembre de 2026