Skip to main content
Qué detecta cside
Language

Detección de agentes de IA

Detecta agentes de IA, bots y navegadores automatizados en tu sitio con cside Device Intelligence. Lee el veredicto de bot, la probabilidad, la confianza y los motivos desde la respuesta de /token/v2/verify.

Los agentes de IA y los navegadores autónomos representan una parte creciente del tráfico web. OpenAI Operator, Claude for Chrome, Perplexity Comet, Browserbase y otros frameworks de agentes generan sesiones reales en navegadores reales, por lo que las comprobaciones de User-Agent por sí solas no los detectan. cside Device Intelligence expone estos visitantes mediante el objeto bot que devuelve /token/v2/verify en la Events API.

Qué detecta cside

El veredicto de bot combina dos modelos más comprobaciones deterministas:

  • Modelo 1 puntúa el fingerprint del dispositivo y las señales de red: marcadores de headless y automatización (navigator.webdriver, uso de CDP, globales de automatización inyectados), anomalías de renderizado y fuentes, características TCP y TLS, e IPs de centro de datos o hosting
  • Modelo 2 puntúa el comportamiento en la página: movimiento del cursor, timing de eventos, eventos no confiables (despachados por script) y hooks de APIs de JavaScript
  • Agentes conocidos se asocian a un bot_agent_id, como google-googleother, cuando el tráfico encaja con la firma de un crawler o agente conocido

En conjunto identifican agentes de navegador autónomos, navegadores headless (Puppeteer, Playwright, Selenium), runtimes instrumentados controlados por WebDriver o CDP, y crawlers y scrapers clásicos. La detección se ejecuta server-side después de que el navegador envía la telemetría, por lo que cambiar solo los headers no la evita.

Leer el veredicto de bot

Intercambie el token de sesión en /token/v2/verify con su clave API de backend. La respuesta contiene un objeto bot:

{
  "status": "completed",
  "bot": {
    "is_bot": true,
    "bot_probability": 0.94,
    "bot_confidence": 0.88,
    "bot_agent_id": "",
    "reasons": [
      "navigator.webdriver is set",
      "cursor movement scored as automated"
    ],
    "model_1_score": 0.91,
    "model_1_threshold": 0.7,
    "model_2_score": 0.86,
    "model_2_threshold": 0.6,
    "session_event_count": 42
  }
}
CampoTipoSignificado
is_botbooleanEl veredicto. true cuando la probabilidad supera el umbral de decisión o se activa una comprobación determinista.
bot_probabilitynumberProbabilidad de que el visitante sea un bot, de 0 a 1.
bot_confidencenumberGrado de certeza del modelo en esa probabilidad, de 0 a 1. Una confianza baja suele significar que había pocos datos de comportamiento disponibles.
bot_agent_idstringBot o agente identificado cuando el tráfico coincide con una firma conocida. Vacío cuando no hay coincidencia.
reasonsstring[]Explicaciones legibles detrás del veredicto.
model_1_score, model_1_thresholdnumberPuntuación del modelo de fingerprint y red, y el umbral que se le aplica.
model_2_score, model_2_thresholdnumberPuntuación del modelo de comportamiento y su umbral. Ausentes cuando no se recopilaron datos de comportamiento.
session_event_countnumberNúmero de eventos de comportamiento que produjo la sesión.

Tome la decisión con is_bot. Use bot_probability y bot_confidence cuando quiera respuestas graduadas, por ejemplo un challenge entre 0.5 y el umbral y un bloqueo por encima de él.

const { status, bot } = data;

if (status !== "completed" || !bot) {
  // La evaluación está pendiente o falló: fail open
  return allow();
}

if (bot.is_bot) {
  return respondWithChallenge(bot.reasons);
}
El campo `bot` de v1 no es el modelo

En el endpoint público /token/v1/client, bot es una cadena simple derivada únicamente del User-Agent: "detected" cuando contiene bot, crawler, spider o headless, "unknown" cuando no se capturó ningún User-Agent y "not_detected" en caso contrario. No lleva nada de la salida del modelo descrita arriba. Comprobar bot !== "not_detected" también marca todas las sesiones con un User-Agent desconocido. Use /token/v2/verify para las decisiones de bot.

Combine el veredicto con otras señales de la misma respuesta para mayor confianza:

  • Campos de automatización en fingerprint (web_driver, cdp, tamper_injected_global_ids, tamper_probe_blocked) muestran la evidencia de automatización directamente
  • fingerprint.developer_tools_detected es habitual en agentes ejecutados localmente
  • fingerprint.virtual_machine_detected marca sesiones que se ejecutan en una VM o sandbox
  • ip_enrichment.hosting e ip_enrichment.is_datacenter_ip marcan tráfico procedente de proveedores cloud
Confianza por combinación

Ninguna señal individual es definitiva. Use bot.is_bot como indicador principal y los campos de fingerprint e IP como evidencia de refuerzo antes de tomar acción.

Ejemplo de integración

En su JavaScript del lado del cliente, solicite el token de sesión de fingerprint:

const result = await sendClientTelemetry({
  userId: "1234567890",
});

if (result.errors) {
  console.error(result.errors);
  throw new Error("La solicitud de telemetría falló.");
}

const { token: sessionToken } = result;

En su backend, intercambie el token de sesión con https://api.cside.com/token/v2/verify y luego evalúe bot.is_bot:

const response = await fetch("https://api.cside.com/token/v2/verify", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.CSIDE_FINGERPRINT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ token: sessionToken }),
});

const data = await response.json();

if (!response.ok) {
  throw new Error(data.error || "El intercambio de fingerprint falló.");
}

if (data.status !== "completed") {
  // 202 pending o una evaluación fallida: reintente más tarde o fail open
  return allow();
}

if (data.bot?.is_bot) {
  // Bloquee, lance un challenge o registre la solicitud
  return respondWithChallenge();
}

/token/v2/verify devuelve 202 Accepted con { "status": "pending" } mientras la evaluación sigue en proceso. Vuelva a consultar tras una breve espera o aplique fail open.

En el panel

La fila Bot / Agents en la pestaña Overview de una sesión muestra el mismo veredicto con las puntuaciones de los modelos detrás de él. La pestaña Captured metadata enumera las features del modelo de bot cuando se capturó un vector de features.

Casos de uso comunes

  • Proteger formularios y flujos de pago - descarte el tráfico de agentes antes de que llegue al pago o a la creación de cuentas
  • Restringir el scraping de IA en contenido de pago - aplique límites de solicitudes o niveles de acceso distintos cuando se detecten agentes de IA
  • Medir la proporción de tráfico automatizado - registre bot.is_bot, bot_probability, bot_agent_id y la cadena user_agent para informar sobre qué parte de su tráfico está automatizada
  • Evidencia para contracargos y fraude - combine el objeto bot con fingerprint.device_id para crear un registro de auditoría de las sesiones automatizadas

Siguientes pasos

Was this page helpful?