Skip to main content
Flujo de integración
Language

Events API

Integre cside fingerprinting en su aplicación. Recopile señales del navegador, genere tokens de sesión y obtenga inteligencia detallada sobre los visitantes desde su backend.

Esta guía le explica cómo integrar la Events API de cside fingerprinting de principio a fin: cargar el script del cliente, generar un token de sesión, enviarlo a su backend e interpretar la respuesta.

Flujo de integración

Agregue el script a su página

Incluya el script de cside fingerprinting en el <head> de su página. Debe cargarse antes de llamar a cualquier función de fingerprinting.

<script
  src="https://<YOUR_SUBDOMAIN>.csidefd.com/client.js"
  referrerpolicy="origin"
  data-src="6">
</script>

Envíe la telemetría y reciba un token de sesión

Una vez que el script se haya cargado, la función global sendClientTelemetry estará disponible. Cargar el script no crea un fingerprint de sesión por sí solo. Llame a sendClientTelemetry(externalIds?) para enviar telemetría a /client y recibir un token de sesión. Pase un objeto externalIds opcional si quiere adjuntar sus propios identificadores.

const result = await sendClientTelemetry({
  email: "user@example.com",
  accountId: "1234567890",
});

// O llamarla sin argumentos
// const result = await sendClientTelemetry();

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

const token = result.token;

Parámetros

ParámetroTipoRequeridoDescripción
externalIdsRecord<string, string>NoIdentificadores opcionales que quiere adjuntar al fingerprint, como accountId, orderId o email.

Para recibir la señal throwawayEmail, pase la dirección de correo electrónico en este objeto usando la clave email.

Valor de retorno

La función devuelve un objeto JSON (ya analizado, por lo que no necesita llamar a .json() sobre él):

{
  "token": "eyJhbGciOiJIUzI1NiIs..."
}

El campo token contiene el token de sesión de fingerprint. Si la recopilación de telemetría encuentra problemas, el objeto también incluye un array opcional errors que puede registrar. Extraiga result.token y envíe solo esa cadena del token de sesión a su backend.

Recupere datos de fingerprint desde su backend

Genere una clave API de fingerprint solo para backend en el dashboard de cside, guárdela como secreto del servidor y úsela para intercambiar el token de sesión con cside. La clave API se muestra solo una vez y no debe exponerse en código de navegador.

if (!token) {
  throw new Error("No se devolvió un token de sesión de fingerprint.");
}

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 }),
});

const data = await response.json();

Cuerpo de la solicitud

Envíe JSON con la forma { "token": "<token de sesión>" }, donde el valor es result.token del paso anterior.

Opciones de lookup del token

Use el endpoint autenticado para intercambios server-to-server de producción. Los endpoints públicos siguen disponibles cuando una integración necesita específicamente el flujo de lookup no autenticado.

EndpointRespuestaÚselo cuando
/token/v2/verifyJSONNecesite recuperación backend autenticada con una clave API de fingerprint.
/token/v2/device/entriesJSONNecesite evaluaciones completadas para el mismo ID de dispositivo que un token de sesión.
/token/v1/clientJSONNecesite el payload público de respuesta de fingerprinting.
/token/v1/clientIdTexto planoSolo necesite el fingerprint ID estable del flujo público de lookup.

/token/v2/verify devuelve 202 Accepted con { "status": "pending" } mientras procesa, luego 200 OK con el payload completado. /token/v2/device/entries acepta { "token": "...", "limit": 100, "offset": 0 } y devuelve { "device_id": "...", "entries": [...], "next_offset": 100, "has_more": true }, donde cada entrada usa la forma de respuesta de /token/v2/verify. limit es opcional, su valor predeterminado es 500 y el máximo permitido es 500. El endpoint clientId devuelve solo el identificador único del fingerprint como texto plano. Si no existe un identificador único del fingerprint para el token de sesión, devuelve 404.

Ejemplo de solicitud backend

const csideResponse = 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 }),
});

const data = await csideResponse.json();

Interprete la respuesta del backend

Su backend devuelve una respuesta JSON que contiene el resultado de identificación y las señales asociadas. Consulte la referencia completa de la respuesta a continuación.

Referencia de la respuesta

Esta referencia de respuesta se aplica a /token/v1/client. El endpoint autenticado /token/v2/verify devuelve un payload JSON plano con status, created_at, updated_at y los campos de enriquecimiento disponibles, como vpn_evaluation, fingerprint, geo_data, ip_enrichment, bot, network_client_metrics y fingerprint_enrichment. El endpoint autenticado /token/v2/device/entries devuelve un device_id, un array entries con esos mismos payloads planos para evaluaciones completadas asociadas a ese ID de dispositivo y campos de paginación como limit, offset, next_offset y has_more.

La respuesta del backend incluye identificación del visitante, detalles del navegador, inteligencia IP y un conjunto de señales de detección de fraude.

Campos de nivel superior

CampoTipoDescripción
linked_idstringUn identificador que usted asoció con este visitante.
tagsobjectMetadatos personalizados adjuntos al evento.
timestampnumberMarca de tiempo Unix (milisegundos) del evento.
event_idstringIdentificador único para este evento de fingerprinting.
urlstringLa URL de la página donde se recopiló el fingerprint.
ip_addressstringLa dirección IP del visitante.
user_agentstringLa cadena User-Agent sin procesar del navegador del visitante.
client_referrerstringLa URL de referencia de la página.

browser_details

Detalles sobre el navegador y el sistema operativo del visitante.

CampoTipoDescripción
browser_namestringNombre del navegador (por ejemplo, "Chrome").
browser_major_versionstringNúmero de versión principal.
browser_full_versionstringCadena de versión completa.
osstringNombre del sistema operativo.
os_versionstringVersión del sistema operativo.
devicestringTipo de dispositivo (por ejemplo, "Other", "Mobile").

identification

El resultado de identificación principal del visitante.

CampoTipoDescripción
visitor_idstringUn identificador único y estable para este visitante.
confidence.scorenumberPuntuación de confianza entre 0 y 1.
confidence.versionstringVersión del modelo de confianza utilizado.
visitor_foundbooleanSi este visitante ha sido visto antes.
first_seen_atnumberMarca de tiempo Unix (ms) de la primera identificación del visitante.
last_seen_atnumberMarca de tiempo Unix (ms) de la identificación más reciente del visitante.

supplementary_id_high_recall

Una identificación secundaria optimizada para mayor recall (menos falsos negativos) a costa de una precisión ligeramente menor.

CampoTipoDescripción
visitor_idstringIdentificador del visitante bajo el modelo de alto recall.
visitor_foundbooleanSi se encontró al visitante.
confidence.scorenumberPuntuación de confianza entre 0 y 1.
confidence.versionstringVersión del modelo de confianza utilizado.
first_seen_atnumberMarca de tiempo Unix (ms) de la primera identificación.
last_seen_atnumberMarca de tiempo Unix (ms) de la identificación más reciente.

proximity

Datos de proximidad geográfica del visitante.

CampoTipoDescripción
idstringIdentificador de ubicación de proximidad.
precision_radiusnumberRadio de precisión en kilómetros.
confidencenumberPuntuación de confianza para la estimación de proximidad.

ip_info

Información de la dirección IP del visitante.

CampoTipoDescripción
v4.addressstringDirección IPv4.
v6.addressstringDirección IPv6.

ip_blocklist

Si la IP del visitante aparece en listas de bloqueo conocidas.

CampoTipoDescripción
email_spambooleanLa IP está asociada con spam de correo electrónico.
attack_sourcebooleanLa IP es una fuente de ataque conocida.
tor_nodebooleanLa IP es un nodo de salida de Tor.

Señales de fraude y entorno

Señales que indican atributos sospechosos o notables del visitante.

CampoTipoDescripción
bot.resultstringEstado de detección de bot. Use "detected" o "not_detected".
bot.scorenumberPuntuación numérica de bot.
bot.signalstring[]Señales que contribuyeron a la detección de bot.
root_appsbooleanEl dispositivo tiene aplicaciones root/superusuario instaladas.
emulatorbooleanEl dispositivo es un emulador.
proxybooleanEl visitante está usando un proxy.
proxy_confidencestringNivel de confianza: "low", "medium" o "high".
vpnbooleanEl visitante está usando una VPN.
vpn_confidencestringNivel de confianza: "low", "medium" o "high".
incognitobooleanEl navegador está en modo incógnito/privado.
tamperingbooleanLos atributos del navegador han sido manipulados.
jailbrokenbooleanEl dispositivo tiene jailbreak.
fridabooleanSe detectó el toolkit de instrumentación Frida.
virtual_machinebooleanEl visitante está ejecutando en una máquina virtual.
developer_toolsbooleanLas herramientas de desarrollo del navegador están abiertas.
mitm_attackbooleanSe detectó un ataque man-in-the-middle.
replayedbooleanLa solicitud es una repetición de una solicitud anterior.
high_activity_devicebooleanNúmero inusualmente alto de identificaciones desde este dispositivo.
throwawayEmailbooleantrue cuando el identificador email enviado es una dirección de correo electrónico desechable o temporal.

raw_device_attributes

Componentes de bajo nivel del fingerprint del navegador.

CampoTipoDescripción
mathstringHash de la salida del motor matemático.
vendorstringCadena del proveedor de GPU/gráficos.

Ejemplo completo de respuesta

{
  "linked_id": "somelinkedId",
  "tags": {},
  "timestamp": 1708102555327,
  "event_id": "1708102555327.NLOjmg",
  "url": "http://www.example.com/login",
  "ip_address": "61.127.217.15",
  "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) ...",
  "client_referrer": "https://example.com/blog/my-article",
  "browser_details": {
    "browser_name": "Chrome",
    "browser_major_version": "74",
    "browser_full_version": "74.0.3729",
    "os": "Windows",
    "os_version": "7",
    "device": "Other"
  },
  "identification": {
    "visitor_id": "Ibk1527CUFmcnjLwIs4A9",
    "confidence": { "score": 0.97, "version": "1.1" },
    "visitor_found": false,
    "first_seen_at": 1708102555327,
    "last_seen_at": 1708102555327
  },
  "supplementary_id_high_recall": {
    "visitor_id": "3HNey93AkBW6CRbxV6xP",
    "visitor_found": true,
    "confidence": { "score": 0.97, "version": "1.1" },
    "first_seen_at": 1708102555327,
    "last_seen_at": 1708102555327
  },
  "proximity": {
    "id": "w1aTfd4MCvl",
    "precision_radius": 10,
    "confidence": 0.95
  },
  "bot": {
    "result": "not_detected",
    "score": 0,
    "signal": []
  },
  "root_apps": false,
  "emulator": false,
  "ip_info": {
    "v4": { "address": "94.142.239.124" },
    "v6": { "address": "2001:db8:3333:4444:5555:6666:7777:8888" }
  },
  "ip_blocklist": {
    "email_spam": false,
    "attack_source": false,
    "tor_node": false
  },
  "proxy": true,
  "proxy_confidence": "low",
  "vpn": false,
  "vpn_confidence": "high",
  "incognito": false,
  "tampering": false,
  "jailbroken": false,
  "frida": false,
  "virtual_machine": false,
  "developer_tools": false,
  "mitm_attack": false,
  "replayed": false,
  "high_activity_device": false,
  "throwawayEmail": false,
  "raw_device_attributes": {
    "math": "5f030fa7d2e5f9f757bfaf81642eb1a6",
    "vendor": "Google Inc."
  }
}
Was this page helpful?