Smart Signals sind serverseitige Anreicherungssignale, die aus Browser-Fingerprints, IP-Intelligence und Verhaltensanalyse berechnet werden. Sie liefern tiefgehenden Kontext zu jedem Besucher, ohne dabei personenbezogene Daten zu erheben.
Smart Signals — die angereicherten Entscheidungs-, Risiko-, Netzwerk- und Bot-Signale — werden über Webhooks an Ihren Server geliefert (siehe Webhooks) und im Dashboard dargestellt. Die folgenden Beispiele verarbeiten die Form des Webhook-Payloads.
| Signal | Beschreibung | Response | Plattform |
|---|---|---|---|
| VPN Detection | Markiert VPN-Nutzung anhand von IP-Intelligence | network.vpn: boolean | Web, Mobile |
| Proxy Detection | Erkennt Datacenter- und Residential-Proxy-Nutzung | network.proxy: boolean | Web, Mobile |
| Tor Detection | Gleicht die IP mit bekannten Tor-Exit-Nodes ab | network.tor: boolean | Web, Mobile |
| Datacenter | Markiert IPs bekannter Cloud-/Hosting-Anbieter | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | Geolokalisierung auf Stadtebene + ASN aus der IP-Adresse | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Signal | Beschreibung | Response | Verfügbarkeit |
|---|---|---|---|
| Browser Tampering | Erkennt gefälschte User-Agents, modifizierten Navigator, Extension-Injektion | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Erkennt Anti-Detect-Browser (Multilogin, GoLogin, Dolphin) über CSS-/Property-Probes | Teil des Tampering-/Bot-Verdikts | Web |
| Privacy Settings | Erkennt datenschutzorientierte Browser-Konfigurationen (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Erkennt, wenn die Browser-DevTools geöffnet sind | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | Leitet privates Surfen in Safari unter iOS ab | { result: boolean } | Web (Safari mobil) |
| Signal | Beschreibung | Verfügbarkeit |
|---|---|---|
| Virtual Machine | Erkennt VMware/VirtualBox/Parallels/QEMU über WebGL-Renderer/-Vendor, Bildschirm und Hardware-Concurrency | Web — Enterprise |
| Emulator | Erkennt Android-Emulatoren (BlueStacks, Genymotion, Nox, Android SDK) über GPU-Renderer und UA-Marker | Web — alle Tarife |
Native-only-Erkennungen (in Entwicklung). Root-, Jailbreak-, Clone-/Dual-App-, Frida-Instrumentierungs- und Werksreset-Erkennung hängen von Signalen ab, die nur ein natives Mobile-SDK erfassen kann. Sie sind im reinen Web-Agenten heute nicht wirksam. Auch die allgemeine browserübergreifende Incognito-Erkennung (Chrome/Firefox) befindet sich in Entwicklung; derzeit wird ausschließlich das private Surfen in Safari mobil abgeleitet.
| Signal | Beschreibung | Response | Plattform |
|---|---|---|---|
| Bot Detection | Erkennt Automatisierungs-Frameworks und Headless-Browser | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | Aggregiertes Risiko für die Anfrage, im Webhook-Objekt decision | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
VPN-, Proxy-, Tor- und Datacenter-Flags werden serverseitig aus der IP des
Besuchers aufgelöst, unter Verwendung kommerzieller IP-Intelligence-Datenbanken
(IP2Location / MaxMind). Der öffentliche Webhook-Payload stellt die kombinierten
Ergebnisse als Booleans auf dem network-Objekt dar — network.vpn,
network.proxy, network.tor, network.datacenter — ohne Aufschlüsselung nach
Methode oder Konfidenz-String. Details siehe
IP Intelligence.
In Entwicklung. Die allgemeine browserübergreifende Incognito-Erkennung (Chrome/Firefox) ist noch nicht verfügbar. TRACIO leitet derzeit ausschließlich das private Surfen in Safari mobil ab. Verlassen Sie sich heute nicht auf ein allgemeines
incognito-Flag.
Der Tampering-Detektor identifiziert Besucher, die ihren Browser modifiziert haben, um ihre Identität falsch darzustellen:
navigator-Eigenschaften modifizieren, durch Vergleich der Getter-PrototypenPluginArray.prototype und MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor und andere kritische Funktionen durch Proxies ersetzt wurdenDer anomalyScore (0.0–1.0) quantifiziert den Grad der Inkonsistenz. Werte über 0.5 weisen auf erhebliche Manipulation hin.
Das Webhook-Objekt decision trägt das aggregierte Risiko einer Anfrage:
decision.riskScore (Ganzzahl 0–100), decision.suspectScore (Zahl) und
decision.action (die empfohlene Aktion). Der Score aggregiert die Ausgaben der
Smart Signals; die folgenden Bänder beschreiben, wie riskScore auf Risikostufen
abbildet:
| Score-Bereich | Risikostufe | Typische Indikatoren |
|---|---|---|
| 0-10 | Normal | Saubere Signale, bekannter Besucher, Residential-IP |
| 11-30 | Niedrig | Geringe Inkonsistenzen, Datacenter-IP oder Erstbesuch |
| 31-60 | Mittel | VPN erkannt, Browser-Manipulation oder ungewöhnliche Velocity |
| 61-80 | Hoch | Mehrere Risikosignale, Proxy + Manipulation, hohe Aktivität |
| 81-100 | Kritisch | Bot erkannt, Tor-Exit-Node oder schwere Anomalien |
Der Score aggregiert die aktiven Smart-Signal-Ausgaben — vorrangig IP-Intelligence (VPN/Proxy/Tor/Datacenter), das Bot-Verdikt und Browser-Manipulation. Bestätigte menschliche Interaktion (Maus/Tastatur) senkt den Score.
Vier datenschutzorientierte Browser-Konfigurationen werden erkannt:
| Browser | Erkennungsmethode | Schwellenwert |
|---|---|---|
| Tor Browser | Canvas blockiert + WebGL blockiert + UTC-Zeitzone + limitierte Fonts + gerundete Bildschirmgröße | 3+ Marker |
| Brave | Brave-UA oder navigator.brave oder Client-Hints-Marke „Brave“ | 1+ Marker |
| Firefox ETP (strikt) | Storage partitioniert oder Canvas abgewehrt (Firefox-UA erforderlich) | 1+ Marker |
| Safari ITP | Cookies blockiert oder IndexedDB eingeschränkt (Safari-UA erforderlich) | 1+ Marker |
Smart Signals erreichen Ihren Server über den Webhook-Payload (siehe Webhooks für die vollständige Form und die Signaturprüfung). Die folgenden Beispiele lesen die Felder direkt aus diesem 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}