Lägg till SDK:n i ditt projekt med din föredragna pakethanterare.
npm install expressyarn add expresspnpm add expressKom igång med den minimala konfigurationen.
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)Produktionsklara mönster med felhantering, laddningstillstånd och avancerad konfiguration.
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)Alla tillgängliga alternativ för att initiera och konfigurera SDK:n.
publicKeystringDin publika nyckel från dashboarden — säker att skicka med i webbläsarenendpointstringAnpassad endpoint-URL för proxyroutade driftsättningar — en explicit URL vinner över regionregionstringDataregion: us eller eutimeoutMsnumberTimeout för hela getResult()-anropet, i millisekunderlinkedIdstringDitt interna konto-ID för den inloggade användaren, så att besök som delar enhet kan kopplastagstringFritt formulerad etikett kopplad till identifieringsbegäran, t.ex. checkout eller logindebugbooleanLoggar skriptets livscykel och nätverksaktivitet till webbläsarkonsolenscriptUrlstringFullständig åsidosättning av agentskriptets URL — för self-hosting eller Subresource IntegrityGå djupare med den fullständiga API-referensen, webhook-konfiguration och avancerade guider.
Fullständig API-referens, integrationsguider och bästa praxis.
Händelseleverans i realtid, nyttolastschema och signaturverifiering.
Konfigurera händelseaviseringar i realtid för varje enhetsidentifiering.
Lägg till enhetsfingerprinting i din Node.js-applikation på under 5 minuter.