Skip to main content
Fluxo de integração
Language

Events API

Integre o fingerprinting do cside na sua aplicação. Colete sinais do navegador, gere tokens de sessão e recupere inteligência detalhada de visitantes a partir do seu backend.

Este guia orienta você na integração completa da Events API de fingerprinting do cside: carregando o script do cliente, gerando um token de sessão, enviando-o para o seu backend e interpretando o payload de resposta.

Fluxo de integração

Adicione o script à sua página

Inclua o script de fingerprinting do cside no <head> da sua página. Ele deve ser carregado antes de chamar qualquer função de fingerprinting.

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

Envie a telemetria e receba um token de sessão

Depois que o script for carregado, a função global sendClientTelemetry ficará disponível. Carregar o script não cria um fingerprint de sessão sozinho. Chame sendClientTelemetry(externalIds?) para enviar telemetria para /client e receber um token de sessão. Passe um objeto externalIds opcional se quiser anexar os seus próprios identificadores.

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

// Ou chame sem argumentos
// const fingerprintResponse = await sendClientTelemetry();

if (!fingerprintResponse?.ok) {
  throw new Error("A requisição de telemetria de fingerprint falhou.");
}

const result = await fingerprintResponse.json();
const sessionToken = result.token;

Parâmetros

ParâmetroTipoObrigatórioDescrição
externalIdsRecord<string, string>NãoIdentificadores opcionais que você quer anexar ao fingerprint, como accountId, orderId ou email.

Para receber o sinal throwawayEmail, passe o endereço de e-mail neste objeto usando a chave email.

Valor de retorno

A função retorna a resposta HTTP da API /client. Faça o parse do corpo JSON para obter o objeto de resposta que contém a string do token de sessão:

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

Extraia result.token como o token de sessão de fingerprint no navegador e envie apenas essa string do token de sessão para o seu backend.

Recupere dados de fingerprint com o token de sessão no seu backend

No seu backend, use o token de sessão extraído com o endpoint de token da cside que corresponda aos dados de que você precisa.

if (!sessionToken) {
  throw new Error("O token de sessão de fingerprint não foi retornado.");
}

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();

Corpo da requisição

/client retorna JSON como { "token": "..." }. Extraia result.token como o token de sessão e envie essa string como corpo da requisição. Não envie o objeto JSON completo.

Opções de lookup do token

Você pode usar o token de sessão bruto com o serviço de fingerprinting da cside de duas formas:

EndpointRespostaUse quando
/token/v1/clientJSONVocê precisar da carga completa da resposta de fingerprinting.
/token/v1/clientIdTexto simplesVocê precisar apenas do identificador único do fingerprint.

O endpoint clientId retorna apenas o identificador único do fingerprint em texto simples. Se não existir um identificador único do fingerprint para o token de sessão, ele retorna 404.

Exemplo de requisição no 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 a resposta do backend

Seu backend retorna uma resposta JSON contendo o resultado da identificação e sinais associados. Consulte a referência completa de resposta abaixo.

Referência de resposta

Esta referência de resposta se aplica a /token/v1/client.

A resposta do backend inclui identificação do visitante, detalhes do navegador, inteligência de IP e um conjunto de sinais de detecção de fraude.

Campos de nível superior

CampoTipoDescrição
linked_idstringUm identificador que você associou a este visitante.
tagsobjectMetadados personalizados anexados ao evento.
timestampnumberTimestamp Unix (milissegundos) do evento.
event_idstringIdentificador único para este evento de fingerprinting.
urlstringA URL da página onde o fingerprint foi coletado.
ip_addressstringO endereço IP do visitante.
user_agentstringA string User-Agent bruta do navegador do visitante.
client_referrerstringA URL de referência da página.

browser_details

Detalhes sobre o navegador e sistema operacional do visitante.

CampoTipoDescrição
browser_namestringNome do navegador (ex.: "Chrome").
browser_major_versionstringNúmero da versão principal.
browser_full_versionstringString da versão completa.
osstringNome do sistema operacional.
os_versionstringVersão do sistema operacional.
devicestringTipo de dispositivo (ex.: "Other", "Mobile").

identification

O resultado principal de identificação do visitante.

CampoTipoDescrição
visitor_idstringUm identificador único e estável para este visitante.
confidence.scorenumberPontuação de confiança entre 0 e 1.
confidence.versionstringVersão do modelo de confiança utilizado.
visitor_foundbooleanSe este visitante foi visto anteriormente.
first_seen_atnumberTimestamp Unix (ms) da primeira identificação do visitante.
last_seen_atnumberTimestamp Unix (ms) da identificação mais recente do visitante.

supplementary_id_high_recall

Uma identificação secundária otimizada para maior recall (menos falsos negativos) ao custo de precisão ligeiramente menor.

CampoTipoDescrição
visitor_idstringIdentificador do visitante sob o modelo de alto recall.
visitor_foundbooleanSe este visitante foi encontrado.
confidence.scorenumberPontuação de confiança entre 0 e 1.
confidence.versionstringVersão do modelo de confiança utilizado.
first_seen_atnumberTimestamp Unix (ms) da primeira identificação.
last_seen_atnumberTimestamp Unix (ms) da identificação mais recente.

proximity

Dados de geolocalização de proximidade do visitante.

CampoTipoDescrição
idstringIdentificador de localização de proximidade.
precision_radiusnumberRaio de precisão em quilômetros.
confidencenumberPontuação de confiança para a estimativa de proximidade.

ip_info

Informações do endereço IP do visitante.

CampoTipoDescrição
v4.addressstringEndereço IPv4.
v6.addressstringEndereço IPv6.

ip_blocklist

Se o IP do visitante aparece em listas de bloqueio conhecidas.

CampoTipoDescrição
email_spambooleanIP está associado a spam de e-mail.
attack_sourcebooleanIP é uma fonte de ataque conhecida.
tor_nodebooleanIP é um nó de saída Tor.

Sinais de fraude e ambiente

Sinais indicando atributos suspeitos ou notáveis do visitante.

CampoTipoDescrição
bot.resultstringStatus da detecção de bot. Use "detected" ou "not_detected".
bot.scorenumberPontuação numérica de bot.
bot.signalstring[]Sinais que contribuíram para a detecção de bot.
root_appsbooleanDispositivo tem aplicativos root/superusuário instalados.
emulatorbooleanDispositivo é um emulador.
proxybooleanVisitante está usando um proxy.
proxy_confidencestringNível de confiança: "low", "medium" ou "high".
vpnbooleanVisitante está usando uma VPN.
vpn_confidencestringNível de confiança: "low", "medium" ou "high".
incognitobooleanNavegador está no modo anônimo/privado.
tamperingbooleanAtributos do navegador foram adulterados.
jailbrokenbooleanDispositivo está com jailbreak.
fridabooleanKit de instrumentação Frida detectado.
virtual_machinebooleanVisitante está executando em uma máquina virtual.
developer_toolsbooleanFerramentas de desenvolvedor do navegador estão abertas.
mitm_attackbooleanAtaque man-in-the-middle detectado.
replayedbooleanA requisição é uma repetição de uma requisição anterior.
high_activity_devicebooleanNúmero incomumente alto de identificações deste dispositivo.
throwawayEmailbooleantrue quando o identificador email enviado é um endereço de e-mail descartável ou temporário.

raw_device_attributes

Componentes de fingerprint de baixo nível do navegador.

CampoTipoDescrição
mathstringHash da saída do motor matemático.
vendorstringString do fornecedor de GPU/gráficos.

Exemplo completo de resposta

{
  "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?