Recevez et vérifiez les webhooks d'identification en Node.js et Express. Ajoutez l'identification des visiteurs, la détection des bots et les smart signals à votre application Node.js en quelques minutes.
Ajoutez le SDK à votre projet avec votre gestionnaire de packages préféré.
npm install expressyarn add expresspnpm add expressDevenez opérationnel avec la configuration minimale.
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)Des modèles prêts pour la production avec gestion des erreurs, états de chargement et configuration avancée.
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)Toutes les options disponibles pour initialiser et configurer le SDK.
publicKeystringVotre clé publique depuis le tableau de bord — sans risque dans le navigateurendpointstringURL d'endpoint personnalisée pour les déploiements routés par proxy — une URL explicite prime sur regionregionstringRégion des données : us ou eutimeoutMsnumberDélai d'expiration de l'appel getResult() complet, en millisecondeslinkedIdstringVotre ID de compte interne pour l'utilisateur connecté, afin de lier les visites partageant un appareiltagstringLibellé libre attaché à la requête d'identification, par ex. checkout ou logindebugbooleanJournalise le cycle de vie du script et l'activité réseau dans la console du navigateurscriptUrlstringRemplacement complet de l'URL du script agent — pour l'auto-hébergement ou Subresource IntegrityAllez plus loin avec la référence API complète, la configuration des webhooks et les guides avancés.
Référence API complète, guides d'intégration et bonnes pratiques.
Livraison d'événements en temps réel, schéma de la charge utile et vérification de signature.
Configurez des notifications d'événements en temps réel pour chaque identification d'appareil.
Ajoutez le device fingerprinting à votre application Node.js en moins de 5 minutes.