Smart Signals sunt semnale de îmbogățire server-side calculate din amprentele browserului, informațiile despre IP și analiza comportamentală. Ele oferă un context detaliat despre fiecare vizitator fără a colecta date cu caracter personal.
Smart Signals — semnalele îmbogățite de decizie, risc, rețea și bot — sunt livrate către serverul tău prin webhook-uri (vezi Webhooks) și afișate în dashboard. Exemplele de mai jos consumă forma payload-ului de webhook.
| Signal | Descriere | Response | Platformă |
|---|---|---|---|
| VPN Detection | Marchează utilizarea VPN pe baza informațiilor despre IP | network.vpn: boolean | Web, Mobile |
| Proxy Detection | Identifică utilizarea proxy-urilor datacenter și residential | network.proxy: boolean | Web, Mobile |
| Tor Detection | Compară IP-ul cu nodurile de ieșire Tor cunoscute | network.tor: boolean | Web, Mobile |
| Datacenter | Marchează IP-urile aparținând unor furnizori cloud/hosting cunoscuți | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | Geolocalizare la nivel de oraș + ASN din adresa IP | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Signal | Descriere | Response | Disponibilitate |
|---|---|---|---|
| Browser Tampering | Detectează User-Agent falsificat, navigator modificat, injecție de extensii | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Detectează browserele antidetect (Multilogin, GoLogin, Dolphin) prin sonde CSS/proprietăți | parte a verdictului tampering / bot | Web |
| Privacy Settings | Detectează configurări de browser axate pe confidențialitate (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Detectează când DevTools-ul browserului este deschis | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | Deduce navigarea privată Safari pe iOS | { result: boolean } | Web (Safari mobil) |
| Signal | Descriere | Disponibilitate |
|---|---|---|
| Virtual Machine | Detectează VMware/VirtualBox/Parallels/QEMU prin renderer/vendor WebGL, ecran și hardware concurrency | Web — Enterprise |
| Emulator | Detectează emulatoare Android (BlueStacks, Genymotion, Nox, Android SDK) prin renderer GPU și markeri UA | Web — toate planurile |
Detectări doar native (în dezvoltare). Detectarea root, jailbreak, cloned/dual-app, a instrumentării Frida și a resetării din fabrică depinde de semnale pe care doar un SDK mobil nativ le poate colecta. Ele nu sunt eficiente în agentul exclusiv web de astăzi. Detectarea generală incognito cross-browser (Chrome/Firefox) este de asemenea în dezvoltare; în prezent este dedusă doar navigarea privată Safari mobil.
| Signal | Descriere | Response | Platformă |
|---|---|---|---|
| Bot Detection | Identifică framework-uri de automatizare și browsere headless | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | Risc agregat pentru cerere, pe obiectul decision al webhook-ului | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
Flag-urile pentru VPN, proxy, Tor și datacenter sunt rezolvate server-side din
IP-ul vizitatorului folosind baze de date comerciale de informații despre IP
(IP2Location / MaxMind). Payload-ul public de webhook expune rezultatele combinate
ca valori boolean pe obiectul network — network.vpn, network.proxy, network.tor,
network.datacenter — fără defalcare pe metode sau string de încredere. Vezi
IP Intelligence pentru detalii.
În dezvoltare. Detectarea generală incognito cross-browser (Chrome/Firefox) nu este încă disponibilă. TRACIO deduce în prezent doar navigarea privată Safari mobil. Nu te baza astăzi pe un flag general
incognito.
Detectorul de tampering identifică vizitatorii care și-au modificat browserul pentru a-și denatura identitatea:
navigator comparând prototipurile getterelorPluginArray.prototype și MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor și alte funcții critice au fost înlocuite cu Proxy-urianomalyScore (0.0-1.0) cuantifică gradul de inconsistență. Valorile peste 0.5 indică o manipulare semnificativă.
Obiectul decision al webhook-ului poartă riscul agregat pentru o cerere:
decision.riskScore (întreg 0-100), decision.suspectScore (număr) și
decision.action (acțiunea recomandată). Scorul agregă ieșirile smart
signal-urilor; benzile de mai jos descriu modul în care riskScore se mapează la niveluri de risc:
| Interval scor | Nivel de risc | Indicatori tipici |
|---|---|---|
| 0-10 | Normal | Semnale curate, vizitator cunoscut, IP residential |
| 11-30 | Scăzut | Inconsistențe minore, IP datacenter sau prima vizită |
| 31-60 | Mediu | VPN detectat, tampering de browser sau viteză neobișnuită |
| 61-80 | Ridicat | Semnale multiple de risc, proxy + tampering, activitate ridicată |
| 81-100 | Critic | Bot detectat, nod de ieșire Tor sau anomalii severe |
Scorul agregă ieșirile active ale smart signal-urilor — în principal informațiile despre IP (VPN/proxy/Tor/datacenter), verdictul bot și tamperingul de browser. Interacțiunea umană confirmată (mouse/tastatură) scade scorul.
Sunt detectate patru configurări de browser axate pe confidențialitate:
| Browser | Metodă de detectare | Prag |
|---|---|---|
| Tor Browser | Canvas blocat + WebGL blocat + fus orar UTC + fonturi limitate + dimensiune ecran rotunjită | 3+ markeri |
| Brave | UA Brave sau navigator.brave sau marca „Brave” din Client Hints | 1+ marker |
| Firefox ETP (strict) | Storage partiționat sau canvas rezistat (UA Firefox necesar) | 1+ marker |
| Safari ITP | Cookie-uri blocate sau IndexedDB restricționat (UA Safari necesar) | 1+ marker |
Smart Signals ajung la serverul tău prin payload-ul de webhook (vezi Webhooks pentru forma completă și verificarea semnăturii). Exemplele de mai jos citesc câmpurile direct din acel 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}