Primește și verifică webhook-urile de identificare în Node.js și Express. Adaugă identificarea vizitatorilor, detecția boților și smart signals în aplicația ta Node.js în câteva minute.
Adaugă SDK-ul în proiectul tău cu managerul de pachete preferat.
npm install expressyarn add expresspnpm add expressDevii operațional cu configurarea minimă.
import express from 'express'const app = express()// Capture the raw body so the signature can be verified byte-for-byte.app.use(express.json({ verify: (req, _res, buf) => ((req as any).rawBody = buf) }))// Identification events are pushed here in real timeapp.post('/webhook/tracio', (req, res) => { const event = req.body console.log(event.visitorId, event.bot.result) res.status(200).send('OK')})app.listen(3000)Tipare gata de producție, cu gestionarea erorilor, stări de încărcare și configurare avansată.
import express from 'express'import crypto from 'crypto'const app = express()app.use(express.json({ verify: (req, _res, buf) => ((req as any).rawBody = buf) }))// Recompute the HMAC-SHA256 over "<t>.<rawBody>" and compare it.function verify(rawBody: Buffer, header: string, secret: string): boolean { const p = Object.fromEntries(header.split(',').map((kv) => kv.split('=') as [string, string])) const signed = Buffer.concat([Buffer.from(`${p.t}.`), rawBody]) const expected = crypto.createHmac('sha256', secret).update(signed).digest('hex') const a = Buffer.from(p.v1, 'hex') const b = Buffer.from(expected, 'hex') return a.length === b.length && crypto.timingSafeEqual(a, b)}app.post('/webhook/tracio', (req, res) => { const sig = req.headers['x-tracio-signature'] as string if (!verify((req as any).rawBody, sig, process.env.TRACIO_WEBHOOK_SECRET!)) { return res.status(401).json({ error: 'Invalid signature' }) } const event = req.body if (event.bot.result === 'bot') { return res.status(200).json({ action: 'blocked', visitorId: event.visitorId }) } if (event.decision.riskScore > 50) { return res.status(200).json({ action: 'review', visitorId: event.visitorId }) } res.status(200).json({ action: 'allow', visitorId: event.visitorId })})app.listen(3000)Toate opțiunile disponibile pentru inițializarea și configurarea SDK-ului.
publicKeystringCheia ta publică din dashboard — sigură de folosit în browserendpointstringURL de endpoint personalizat pentru implementările direcționate prin proxy — un URL explicit are prioritate față de regiuneregionstringRegiunea datelor: us sau eutimeoutMsnumberTimeout pentru întregul apel getResult(), în milisecundelinkedIdstringID-ul tău intern de cont pentru utilizatorul autentificat, ca vizitele de pe același dispozitiv să poată fi corelatetagstringEtichetă liberă atașată cererii de identificare, de ex. checkout sau logindebugbooleanÎnregistrează ciclul de viață al scriptului și activitatea de rețea în consola browseruluiscriptUrlstringSuprascriere completă a URL-ului scriptului agent — pentru self-hosting sau Subresource IntegrityAprofundează cu referința API completă, configurarea webhookurilor și ghiduri avansate.
Referință API completă, ghiduri de integrare și bune practici.
Livrarea evenimentelor în timp real, schema payloadului și verificarea semnăturii.
Configurează notificări în timp real pentru fiecare identificare a unui dispozitiv.
Adaugă fingerprinting de dispozitiv în aplicația ta Node.js în mai puțin de 5 minute.