Les Smart Signals sont des signaux d'enrichissement côté serveur calculés à partir des empreintes numériques du navigateur, de l'IP Intelligence et de l'analyse comportementale. Ils fournissent un contexte approfondi sur chaque visiteur sans collecter aucune information personnelle identifiable.
Les Smart Signals — les signaux enrichis de décision, de risque, de réseau et de bot — parviennent à votre serveur par deux voies : ils vous sont poussés sous forme de webhooks (voir Webhooks) et se lisent à la demande via la Server API. Ils sont par ailleurs affichés dans le tableau de bord. Les exemples ci-dessous consomment la forme du payload de webhook ; les mêmes champs apparaissent lors de la lecture d'une session depuis l'API.
Une visite se résout en 35+ smart signals couvrant le réseau, le navigateur, l'appareil et l'analyse comportementale. La référence ci-dessous nomme ceux que vous utiliserez le plus souvent, dont :
| Signal | Description | Réponse | Plateforme |
|---|---|---|---|
| VPN Detection | Signale l'usage d'un VPN à partir de l'IP Intelligence | network.vpn: boolean | Web |
| Proxy Detection | Identifie l'usage de proxys datacenter et résidentiels | network.proxy: boolean | Web |
| Tor Detection | Compare l'IP aux nœuds de sortie Tor connus | network.tor: boolean | Web |
| Datacenter | Signale les IP appartenant à des fournisseurs cloud/hébergement connus | network.datacenter: boolean | Web |
| IP Geolocation | Géolocalisation au niveau de la ville + FAI et ASN à partir de l'adresse IP | geo.{ country, city, timezone }, network.{ isp, asn } | Web |
| Signal | Description | Réponse | Disponibilité |
|---|---|---|---|
| Browser Tampering | Détecte un User-Agent falsifié, un navigator modifié, l'injection d'extensions | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Note les builds de navigateur qui falsifient l'empreinte via des sondes CSS et de propriétés | bot.antidetectScore: number (0–100, Pro+) | Web |
| Privacy Settings | Détecte les configurations de navigateur axées sur la confidentialité (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Détecte lorsque les DevTools du navigateur sont ouverts | { result: boolean } | Web — Business & Enterprise |
| Incognito | Déduit la navigation privée sur Chromium, Firefox et Safari | identification.incognito: boolean | Web |
| Signal | Description | Disponibilité |
|---|---|---|
| Emulator | Détecte les émulateurs Android (BlueStacks, Genymotion, Nox, Android SDK) via le renderer GPU et les marqueurs UA | Web — toutes les offres |
Détections natives uniquement. La détection de root, jailbreak, applications clonées/dupliquées et instrumentation Frida dépend de signaux que seul un SDK mobile natif peut collecter. TRACIO fournit des SDK navigateur : ces détections ne sont donc pas effectives dans l'agent web — appuyez-vous plutôt sur les verdicts d'automatisation, headless, anti-détection, émulateur et comportement.
| Signal | Description | Réponse | Plateforme |
|---|---|---|---|
| Bot Detection | Identifie les frameworks d'automatisation et les navigateurs headless | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web |
| Risk Score | Risque agrégé pour la requête, sur l'objet decision du webhook | decision.riskScore: number, decision.suspectScore: number, decision.action: "real"|"fake"|"suspicious" | Web |
Les indicateurs VPN, proxy, Tor et datacenter sont résolus côté serveur à partir
de l'IP du visiteur à l'aide de bases d'IP Intelligence commerciales (IP2Location /
MaxMind). Le payload public du webhook expose les résultats combinés sous forme de
booléens sur l'objet network — network.vpn, network.proxy, network.tor,
network.datacenter — sans détail par méthode ni chaîne de confiance. Voir
IP Intelligence pour les détails.
La navigation privée est déduite sur Chromium, Firefox et Safari, et vous parvient
sous la forme de identification.incognito. Aucune API du navigateur ne la signale :
le verdict provient donc d'un vote pondéré sur le comportement du stockage dans une
fenêtre privée — les erreurs de l'origin private file system, la durabilité du
stockage et les particularités propres à chaque plateforme y contribuent chacune.
C'est un signal probabiliste, pas une certitude : traitez-le comme une entrée parmi
d'autres plutôt que comme un fait sur lequel agir seul. Comme les fenêtres privées
suppriment également le cookie _vid_t, une visite en navigation privée est
identifiée uniquement à partir des signaux, et sa identification.confidence est
d'autant plus basse.
Le détecteur d'altération identifie les visiteurs qui ont modifié leur navigateur pour déformer leur identité :
navigator en comparant les prototypes de gettersPluginArray.prototype et MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor et d'autres fonctions critiques ont été remplacées par des ProxiesL'anomalyScore (0.0-1.0) quantifie le degré d'incohérence. Des valeurs supérieures à 0.5 indiquent une altération significative.
L'objet decision du webhook porte le risque agrégé d'une requête :
decision.riskScore (entier 0-100), decision.suspectScore (nombre) et
decision.action (l'action recommandée). Le score agrège les sorties des smart
signals ; les tranches ci-dessous décrivent comment riskScore correspond aux
niveaux de risque :
| Plage de score | Niveau de risque | Indicateurs typiques |
|---|---|---|
| 0-10 | Normal | Signaux propres, visiteur connu, IP résidentielle |
| 11-30 | Faible | Incohérences mineures, IP datacenter ou première visite |
| 31-60 | Moyen | VPN détecté, altération du navigateur ou vélocité inhabituelle |
| 61-80 | Élevé | Plusieurs signaux de risque, proxy + altération, forte activité |
| 81-100 | Critique | Bot détecté, nœud de sortie Tor ou anomalies sévères |
Le score agrège les sorties actives des smart signals — principalement l'IP Intelligence (VPN/proxy/Tor/datacenter), le verdict de bot et l'altération du navigateur. Une interaction humaine confirmée (souris/clavier) abaisse le score.
Quatre configurations de navigateur axées sur la confidentialité sont détectées :
| Navigateur | Méthode de détection | Seuil |
|---|---|---|
| Tor Browser | Canvas bloqué + WebGL bloqué + fuseau UTC + polices limitées + taille d'écran arrondie | 3+ marqueurs |
| Brave | UA Brave ou navigator.brave ou marque « Brave » dans les Client Hints | 1+ marqueur |
| Firefox ETP (strict) | Stockage partitionné ou canvas résisté (UA Firefox requis) | 1+ marqueur |
| Safari ITP | Cookies bloqués ou IndexedDB restreint (UA Safari requis) | 1+ marqueur |
Les Smart Signals atteignent votre serveur via le payload de webhook (voir Webhooks pour la forme complète et la vérification de signature) et lors de la lecture d'une session depuis la Server API. Les exemples ci-dessous lisent les champs directement sur le payload de webhook ; les noms des champs sont identiques dans les deux cas.
// `payload` is the webhook delivery body (/docs/webhooks)const score = payload.decision.riskScoreconst isVPN = payload.network.vpnconst isBot = payload.bot.result === "bot"
if (isBot) { return block("Automated access")}
if (score > 60) { return requireMFA()}
if (isVPN && score > 30) { return requireCaptcha()}
return allow()// `payload` is the webhook delivery body (/docs/webhooks)function computeFraudRisk(payload: WebhookPayload): string { let risk = "low"
if (payload.decision.riskScore > 60) risk = "high" else if (payload.decision.riskScore > 30) risk = "medium"
// Escalate when multiple network signals agree if (payload.network.vpn && payload.network.proxy) risk = "high" if (payload.network.tor) risk = "high" if (payload.bot.result === "bot") risk = "high"
return risk}