Gestión de protección contra bots

Los sitios web modernos utilizan una detección avanzada de bots. Esta guía explica cómo FourA maneja los sistemas antibot y cómo maximizar 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 son bloqueados
  • Wire fingerprinting: Cada cliente HTTP tiene una firma de handshake única que los sitios pueden detectar
  • Browser fingerprinting: JavaScript verifica los indicadores de navegadores headless
  • Análisis de comportamiento: Patrones de request, tiempos y flujo de navegación
  • CAPTCHAs: Desafíos visuales como última línea de defensa

Los proveedores comunes de antibot incluyen Cloudflare, DataDome, PerimeterX y Akamai Bot Manager.

La ruta más rápida: Auto

Si aún no conoces el nivel de protección, llama a /api/auto/ con una subcadena validate.data.accept que solo contiene la página real. Auto recorre una escala consciente de los costos (prueba económica, proxy rotado, renderizado de navegador, navegador a través de proxy) y se detiene en el primer peldaño que devuelve un response que tus reglas aceptan. En llamadas repetidas al mismo host, se reproduce una sesión cálida en su lugar, por lo que el segundo intento es económico.

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

Sin validate.data.accept, auto no puede distinguir un 200 real de un desafío intersticial devuelto con estado 200 y puede devolver el desafío como un éxito. Consulta la guía de Smart Fetch para ver el proceso completo.

Cómo ayuda FourA en cada capa

Solicitudes realistas a nivel de red

El único endpoint (POST /api/single/) emite características de handshake que coinciden con las de un navegador real. Esto supera las comprobaciones más comunes a nivel de red sin la sobrecarga de ejecutar un navegador completo.

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

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

Renderizado de navegador real

El endpoint del navegador (POST /api/browser/) ejecuta una instancia completa del navegador Chrome. Combinado con parches de antidetección, supera la mayoría de las validaciones de huellas digitales basadas en JavaScript. unblocker en el navegador activa el solucionador automático de defensas (aprobación de Turnstile y barreras similares); déjalo activado a menos que quieras recibir la página de desafío sin procesar.

Rotación de proxy

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 posterior para omitir las salidas que ya quemaste; usa maxTries (predeterminado 5, máximo 90) para controlar el nivel de esfuerzo.

Salidas restringidas por país

Pasa exitCountries en /api/proxy/ para limitar la selección a proxies cuyo país visible por el destino coincida con una lista de permitidos estricta. Los valores son códigos de dos letras (["CZ", "GB"]), sin espacios en blanco, en mayúsculas y deduplicados. 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 volver a intentar más tarde sin flexibilizar el requisito.

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

El response incluye exitCountry cuando se solicitó el scoping. Verifica que pertenezca a tu lista de permitidos antes de confiar en el payload y luego reutiliza el ID proxy devuelto en cualquier llamada posterior al 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, el 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 enumera todo lo reconocido en ese 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 cuerpo puede ser el desafío, no la página. FourA nunca disfraza un desafío no resuelto como contenido, así que verifica el flag antes de analizarlo.
  2. Una resolución te da 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 los requests de seguimiento omitirán la verificación por completo.

FourA reconoce Cloudflare, SiteGround, DataDome, PerimeterX, Akamai, Incapsula, AWS WAF, hCaptcha, reCAPTCHA y el propio desafío de eBay. Reconocer es más amplio que resolver: un sistema que podemos nombrar pero no resolver es reportado y nunca cambia lo que cuesta el request. Consulta Defensas Anti-Bot para cada campo, la división actual entre resolver y detectar, y un ejemplo de repetición.

Estrategia por nivel de protección

Protección desconocida

Usa auto. Primero hace pruebas económicas y solo escala hasta donde el objetivo lo obliga, por lo que pagas por el descubrimiento una 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}'

Protección media (Cloudflare, WAF básico)

Usa el endpoint del navegador para superar los desafíos 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}'

Alta protección (DataDome, PerimeterX)

Usa el endpoint del proxy con múltiples reintentos:

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 los desafíos de WAF encadenados (Cloudflare "Just a moment", Vercel Security Checkpoint, Akamai Bot Manager) 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 transición exacta de proxy a navegador.

Mejores prácticas

  1. Empieza con auto para objetivos desconocidos. Pasa una regla validate, deja que la jerarquía elija el nivel más barato y luego lee meta.rung en la response 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 auto, el session devuelto (ID de proxy + cookies + userAgent) se puede reproducir a través de /api/single/ o /api/browser/ para las páginas siguientes en el mismo host, al precio de Single.

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

  4. Mantén unblocker activado. Para las requests de Single, Proxy y Browser, unblocker: true (el valor predeterminado) inyecta headers de navegador realistas automáticamente. Desactívalo solo cuando necesites específicamente una firma de cliente simple o una página de desafío sin procesar.

  5. Supervisa 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 significar que el sitio objetivo ha actualizado su protección.

  6. Omite las salidas quemadas. Si una llamada /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 la comprobación es una que nadie supera sin un servicio de resolución externo.

  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 ver el catálogo actual. Tienes más detalles en la referencia del endpoint.

Qué no puede eludir FourA

Algunos escenarios requieren un manejo adicional fuera de la API:

  • Contenido protegido por inicio de sesión: FourA no gestiona inicios de sesión de larga duración por ti. El endpoint del navegador acepta cookies por solicitud; transfiere tus cookies de sesión tú mismo.
  • CAPTCHAs interactivos: reCAPTCHA y hCaptcha necesitan un servicio de resolución. FourA reconoce ambos y los reporta en defense.present, pero no los resuelve. Turnstile es manejado por el navegador.
  • Contenido con restricción geográfica: usa exitCountries en /api/proxy/ para fijar la selección a 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 recopilación de datos cumpla con los términos de servicio del sitio objetivo y las leyes aplicables.

Próximos pasos

Actualizado: 12 de agosto de 2026