Smart Signals jsou serverové obohacovací signály vypočítané z otisků prohlížeče, IP intelligence a analýzy chování. Poskytují hluboký kontext o každém návštěvníkovi, aniž by shromažďovaly jakékoli osobně identifikovatelné údaje.
Smart Signals — obohacené signály rozhodnutí, rizika, sítě a botů — jsou doručovány na váš server prostřednictvím webhooků (viz Webhooks) a zobrazovány v dashboardu. Následující příklady zpracovávají tvar payloadu webhooku.
| Signal | Popis | Response | Platforma |
|---|---|---|---|
| VPN Detection | Označuje používání VPN na základě IP intelligence | network.vpn: boolean | Web, Mobile |
| Proxy Detection | Identifikuje používání datacenter a residential proxy | network.proxy: boolean | Web, Mobile |
| Tor Detection | Porovnává IP se známými výstupními uzly Tor | network.tor: boolean | Web, Mobile |
| Datacenter | Označuje IP patřící známým cloud/hostingovým poskytovatelům | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | Geolokalizace na úrovni města + ASN z IP adresy | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Signal | Popis | Response | Dostupnost |
|---|---|---|---|
| Browser Tampering | Detekuje podvržený User-Agent, upravený navigator, injektáž rozšíření | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Detekuje antidetect prohlížeče (Multilogin, GoLogin, Dolphin) pomocí CSS/property sond | součást verdiktu tampering / bot | Web |
| Privacy Settings | Detekuje konfigurace prohlížeče zaměřené na soukromí (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Detekuje, kdy jsou otevřené vývojářské nástroje (DevTools) prohlížeče | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | Odvozuje anonymní prohlížení v Safari na iOS | { result: boolean } | Web (Safari mobile) |
| Signal | Popis | Dostupnost |
|---|---|---|
| Virtual Machine | Detekuje VMware/VirtualBox/Parallels/QEMU pomocí WebGL rendereru/vendoru, obrazovky a hardware concurrency | Web — Enterprise |
| Emulator | Detekuje Android emulátory (BlueStacks, Genymotion, Nox, Android SDK) pomocí GPU rendereru a UA markerů | Web — všechny tarify |
Detekce pouze pro nativní SDK (ve vývoji). Detekce rootu, jailbreaku, klonovaných/duálních aplikací, instrumentace Frida a továrního resetu závisí na signálech, které dokáže shromáždit pouze nativní mobilní SDK. V dnešním agentu určeném pouze pro web nejsou účinné. Obecná detekce anonymního prohlížení napříč prohlížeči (Chrome/Firefox) je rovněž ve vývoji; v současnosti se odvozuje pouze anonymní prohlížení v Safari mobile.
| Signal | Popis | Response | Platforma |
|---|---|---|---|
| Bot Detection | Identifikuje automatizační frameworky a headless prohlížeče | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | Agregované riziko požadavku, v objektu decision webhooku | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
Příznaky VPN, proxy, Tor a datacenter se řeší na straně serveru z IP adresy
návštěvníka pomocí komerčních databází IP intelligence (IP2Location /
MaxMind). Veřejný payload webhooku zpřístupňuje kombinované výsledky jako booleany
na objektu network — network.vpn, network.proxy, network.tor,
network.datacenter — bez rozpisu podle metody nebo řetězce s mírou spolehlivosti. Viz
IP Intelligence pro podrobnosti.
Ve vývoji. Obecná detekce anonymního prohlížení napříč prohlížeči (Chrome/Firefox) zatím není k dispozici. TRACIO v současnosti odvozuje pouze anonymní prohlížení v Safari mobile. Nespoléhejte se dnes na obecný příznak
incognito.
Detektor manipulace identifikuje návštěvníky, kteří upravili svůj prohlížeč, aby zkreslili svou identitu:
navigator, porovnáním prototypů getterůPluginArray.prototype a MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor a další kritické funkce nahrazeny Proxy objektyHodnota anomalyScore (0.0–1.0) kvantifikuje míru nekonzistence. Hodnoty nad 0.5 značí významnou manipulaci.
Objekt decision webhooku nese agregované riziko požadavku:
decision.riskScore (celé číslo 0–100), decision.suspectScore (číslo) a
decision.action (doporučená akce). Skóre agreguje výstupy smart signálů;
následující pásma popisují, jak se riskScore mapuje na úrovně rizika:
| Rozsah skóre | Úroveň rizika | Typické indikátory |
|---|---|---|
| 0-10 | Normální | Čisté signály, známý návštěvník, residential IP |
| 11-30 | Nízká | Drobné nekonzistence, datacenter IP nebo první návštěva |
| 31-60 | Střední | Detekována VPN, manipulace s prohlížečem nebo neobvyklá velocity |
| 61-80 | Vysoká | Více rizikových signálů, proxy + manipulace, vysoká aktivita |
| 81-100 | Kritická | Detekován bot, výstupní uzel Tor nebo závažné anomálie |
Skóre agreguje aktivní výstupy smart signálů — především IP intelligence (VPN/proxy/Tor/datacenter), verdikt botů a manipulaci s prohlížečem. Potvrzená lidská interakce (myš/klávesnice) skóre snižuje.
Detekují se čtyři konfigurace prohlížeče zaměřené na soukromí:
| Prohlížeč | Metoda detekce | Práh |
|---|---|---|
| Tor Browser | Blokovaný canvas + blokovaný WebGL + časové pásmo UTC + omezené fonty + zaokrouhlená velikost obrazovky | 3+ markery |
| Brave | Brave UA nebo navigator.brave nebo značka „Brave“ v Client Hints | 1+ marker |
| Firefox ETP (strict) | Rozdělené úložiště nebo odolnost canvasu (vyžadován Firefox UA) | 1+ marker |
| Safari ITP | Blokované cookies nebo omezený IndexedDB (vyžadován Safari UA) | 1+ marker |
Smart Signals se dostanou na váš server prostřednictvím payloadu webhooku (viz Webhooks pro úplný tvar a ověření podpisu). Následující příklady čtou pole přímo z tohoto payloadu.
// `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}