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 fingerprintResponse = await sendClientTelemetry({
email: "user@example.com",
accountId: "1234567890",
});
// O llamarla sin argumentos
// const fingerprintResponse = await sendClientTelemetry();
if (!fingerprintResponse?.ok) {
throw new Error("La solicitud de telemetría de fingerprint falló.");
}
const result = await fingerprintResponse.json();Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
externalIds | Record<string, string> | No | Identificadores 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 la respuesta HTTP de la API /client. Analice el cuerpo JSON para obtener el objeto de respuesta que contiene la cadena del token de sesión:
{
"token": "eyJhbGciOiJIUzI1NiIs..."
}Extraiga result.token como el token de sesión de fingerprint en el navegador y envíe solo esa cadena del token de sesión a su backend.
Recupere datos de fingerprint con el token de sesión en su backend
En su backend, use el token de sesión extraído con el endpoint de token de cside que coincida con los datos que necesita.
if (!sessionToken) {
throw new Error("No se devolvió un token de sesión de fingerprint.");
}
const response = await fetch("https://api.cside.com/token/v1/client", {
method: "POST",
headers: { "Content-Type": "text/plain" },
body: sessionToken,
});
const data = await response.json();Cuerpo de la solicitud
/client devuelve JSON como { "token": "..." }. Extraiga result.token como el token de sesión y envíe esa cadena como cuerpo de la solicitud. No envíe el objeto JSON completo.
Opciones de lookup del token
Puede usar el token de sesión sin procesar con el servicio de fingerprinting de cside de dos maneras:
| Endpoint | Respuesta | Úselo cuando |
|---|---|---|
/token/v1/client | JSON | Necesite la carga completa de la respuesta de fingerprinting. |
/token/v1/clientId | Texto plano | Solo necesite el identificador único del fingerprint. |
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/v1/client", {
method: "POST",
headers: { "Content-Type": "text/plain" },
body: sessionToken,
});
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.
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
| Campo | Tipo | Descripción |
|---|---|---|
linked_id | string | Un identificador que usted asoció con este visitante. |
tags | object | Metadatos personalizados adjuntos al evento. |
timestamp | number | Marca de tiempo Unix (milisegundos) del evento. |
event_id | string | Identificador único para este evento de fingerprinting. |
url | string | La URL de la página donde se recopiló el fingerprint. |
ip_address | string | La dirección IP del visitante. |
user_agent | string | La cadena User-Agent sin procesar del navegador del visitante. |
client_referrer | string | La URL de referencia de la página. |
browser_details
Detalles sobre el navegador y el sistema operativo del visitante.
| Campo | Tipo | Descripción |
|---|---|---|
browser_name | string | Nombre del navegador (por ejemplo, "Chrome"). |
browser_major_version | string | Número de versión principal. |
browser_full_version | string | Cadena de versión completa. |
os | string | Nombre del sistema operativo. |
os_version | string | Versión del sistema operativo. |
device | string | Tipo de dispositivo (por ejemplo, "Other", "Mobile"). |
identification
El resultado de identificación principal del visitante.
| Campo | Tipo | Descripción |
|---|---|---|
visitor_id | string | Un identificador único y estable para este visitante. |
confidence.score | number | Puntuación de confianza entre 0 y 1. |
confidence.version | string | Versión del modelo de confianza utilizado. |
visitor_found | boolean | Si este visitante ha sido visto antes. |
first_seen_at | number | Marca de tiempo Unix (ms) de la primera identificación del visitante. |
last_seen_at | number | Marca 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.
| Campo | Tipo | Descripción |
|---|---|---|
visitor_id | string | Identificador del visitante bajo el modelo de alto recall. |
visitor_found | boolean | Si se encontró al visitante. |
confidence.score | number | Puntuación de confianza entre 0 y 1. |
confidence.version | string | Versión del modelo de confianza utilizado. |
first_seen_at | number | Marca de tiempo Unix (ms) de la primera identificación. |
last_seen_at | number | Marca de tiempo Unix (ms) de la identificación más reciente. |
proximity
Datos de proximidad geográfica del visitante.
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Identificador de ubicación de proximidad. |
precision_radius | number | Radio de precisión en kilómetros. |
confidence | number | Puntuación de confianza para la estimación de proximidad. |
ip_info
Información de la dirección IP del visitante.
| Campo | Tipo | Descripción |
|---|---|---|
v4.address | string | Dirección IPv4. |
v6.address | string | Dirección IPv6. |
ip_blocklist
Si la IP del visitante aparece en listas de bloqueo conocidas.
| Campo | Tipo | Descripción |
|---|---|---|
email_spam | boolean | La IP está asociada con spam de correo electrónico. |
attack_source | boolean | La IP es una fuente de ataque conocida. |
tor_node | boolean | La IP es un nodo de salida de Tor. |
Señales de fraude y entorno
Señales que indican atributos sospechosos o notables del visitante.
| Campo | Tipo | Descripción |
|---|---|---|
bot.result | string | Estado de detección de bot. Use "detected" o "not_detected". |
bot.score | number | Puntuación numérica de bot. |
bot.signal | string[] | Señales que contribuyeron a la detección de bot. |
root_apps | boolean | El dispositivo tiene aplicaciones root/superusuario instaladas. |
emulator | boolean | El dispositivo es un emulador. |
proxy | boolean | El visitante está usando un proxy. |
proxy_confidence | string | Nivel de confianza: "low", "medium" o "high". |
vpn | boolean | El visitante está usando una VPN. |
vpn_confidence | string | Nivel de confianza: "low", "medium" o "high". |
incognito | boolean | El navegador está en modo incógnito/privado. |
tampering | boolean | Los atributos del navegador han sido manipulados. |
jailbroken | boolean | El dispositivo tiene jailbreak. |
frida | boolean | Se detectó el toolkit de instrumentación Frida. |
virtual_machine | boolean | El visitante está ejecutando en una máquina virtual. |
developer_tools | boolean | Las herramientas de desarrollo del navegador están abiertas. |
mitm_attack | boolean | Se detectó un ataque man-in-the-middle. |
replayed | boolean | La solicitud es una repetición de una solicitud anterior. |
high_activity_device | boolean | Número inusualmente alto de identificaciones desde este dispositivo. |
throwawayEmail | boolean | true 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.
| Campo | Tipo | Descripción |
|---|---|---|
math | string | Hash de la salida del motor matemático. |
vendor | string | Cadena 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."
}
} Thanks for your feedback!