Smart Signals zijn server-side verrijkingssignalen die worden berekend uit browser-fingerprints, IP-intelligence en gedragsanalyse. Ze bieden diepgaande context over elke bezoeker zonder dat er persoonlijk identificeerbare informatie wordt verzameld.
Smart Signals — de verrijkte beslissings-, risico-, netwerk- en bot-signalen — worden via webhooks aan uw server geleverd (zie Webhooks) en worden in het dashboard getoond. De onderstaande voorbeelden verwerken de vorm van de webhook-payload.
| Signaal | Beschrijving | Response | Platform |
|---|---|---|---|
| VPN Detection | Markeert VPN-gebruik op basis van IP-intelligence | network.vpn: boolean | Web, Mobile |
| Proxy Detection | Herkent gebruik van datacenter- en residentiële proxy's | network.proxy: boolean | Web, Mobile |
| Tor Detection | Vergelijkt de IP met bekende Tor-exit-nodes | network.tor: boolean | Web, Mobile |
| Datacenter | Markeert IP's van bekende cloud-/hostingaanbieders | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | Geolocatie op stadsniveau + ASN uit het IP-adres | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Signaal | Beschrijving | Response | Beschikbaarheid |
|---|---|---|---|
| Browser Tampering | Detecteert vervalste User-Agents, gewijzigde navigator, extensie-injectie | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Detecteert antidetect-browsers (Multilogin, GoLogin, Dolphin) via CSS-/property-probes | onderdeel van tampering-/bot-oordeel | Web |
| Privacy Settings | Detecteert privacygerichte browserconfiguraties (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Detecteert wanneer de browser-DevTools geopend zijn | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | Leidt privénavigatie in Safari op iOS af | { result: boolean } | Web (Safari mobiel) |
| Signaal | Beschrijving | Beschikbaarheid |
|---|---|---|
| Virtual Machine | Detecteert VMware/VirtualBox/Parallels/QEMU via WebGL-renderer/-vendor, scherm en hardware-concurrency | Web — Enterprise |
| Emulator | Detecteert Android-emulators (BlueStacks, Genymotion, Nox, Android SDK) via GPU-renderer en UA-markers | Web — alle abonnementen |
Native-only-detecties (in ontwikkeling). Root-, jailbreak-, gekloonde/dual-app-, Frida-instrumentatie- en fabrieksreset-detectie zijn afhankelijk van signalen die alleen een native mobiele SDK kan verzamelen. Ze zijn vandaag niet effectief in de web-only agent. Ook de algemene browseroverschrijdende incognito-detectie (Chrome/Firefox) is in ontwikkeling; momenteel wordt alleen privénavigatie in Safari mobiel afgeleid.
| Signaal | Beschrijving | Response | Platform |
|---|---|---|---|
| Bot Detection | Herkent automatiseringsframeworks en headless browsers | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | Geaggregeerd risico voor de aanvraag, op het webhook-object decision | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
VPN-, proxy-, Tor- en datacenter-flags worden server-side afgeleid uit de IP van de
bezoeker met behulp van commerciële IP-intelligence-databases (IP2Location /
MaxMind). De publieke webhook-payload toont de gecombineerde resultaten als
booleans op het network-object — network.vpn, network.proxy, network.tor,
network.datacenter — zonder uitsplitsing per methode of confidence-string. Zie
IP Intelligence voor details.
In ontwikkeling. Algemene browseroverschrijdende incognito-detectie (Chrome/Firefox) is nog niet beschikbaar. TRACIO leidt momenteel alleen privénavigatie in Safari mobiel af. Vertrouw vandaag niet op een algemene
incognito-flag.
De tampering-detector identificeert bezoekers die hun browser hebben gewijzigd om hun identiteit verkeerd voor te stellen:
navigator-eigenschappen wijzigen door getter-prototypes te vergelijkenPluginArray.prototype en MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor en andere kritieke functies zijn vervangen door ProxiesDe anomalyScore (0.0-1.0) kwantificeert de mate van inconsistentie. Waarden boven 0.5 wijzen op aanzienlijke manipulatie.
Het webhook-object decision draagt het geaggregeerde risico voor een aanvraag:
decision.riskScore (geheel getal 0-100), decision.suspectScore (getal) en
decision.action (de aanbevolen actie). De score aggregeert de uitkomsten van de
smart signals; de onderstaande banden beschrijven hoe riskScore op risiconiveaus
wordt afgebeeld:
| Score-bereik | Risiconiveau | Typische indicatoren |
|---|---|---|
| 0-10 | Normaal | Schone signalen, bekende bezoeker, residentiële IP |
| 11-30 | Laag | Kleine inconsistenties, datacenter-IP of eerste bezoek |
| 31-60 | Gemiddeld | VPN gedetecteerd, browsermanipulatie of ongebruikelijke velocity |
| 61-80 | Hoog | Meerdere risicosignalen, proxy + manipulatie, hoge activiteit |
| 81-100 | Kritiek | Bot gedetecteerd, Tor-exit-node of ernstige anomalieën |
De score aggregeert de actieve smart-signal-uitkomsten — voornamelijk IP-intelligence (VPN/proxy/Tor/datacenter), het bot-oordeel en browsermanipulatie. Bevestigde menselijke interactie (muis/toetsenbord) verlaagt de score.
Er worden vier privacygerichte browserconfiguraties gedetecteerd:
| Browser | Detectiemethode | Drempel |
|---|---|---|
| Tor Browser | Canvas geblokkeerd + WebGL geblokkeerd + UTC-tijdzone + beperkte fonts + afgeronde schermgrootte | 3+ markers |
| Brave | Brave-UA of navigator.brave of Client Hints-merk "Brave" | 1+ marker |
| Firefox ETP (strikt) | Storage gepartitioneerd of canvas afgeweerd (Firefox-UA vereist) | 1+ marker |
| Safari ITP | Cookies geblokkeerd of IndexedDB beperkt (Safari-UA vereist) | 1+ marker |
Smart Signals bereiken uw server via de webhook-payload (zie Webhooks voor de volledige vorm en de handtekeningverificatie). De onderstaande voorbeelden lezen de velden rechtstreeks uit die payload.
// `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.suspectScore > 60) risk = "high" else if (payload.decision.suspectScore > 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}