Smart Signals adalah sinyal pengayaan sisi server yang dihitung dari fingerprint browser, IP intelligence, dan analisis perilaku. Sinyal-sinyal ini memberikan konteks mendalam tentang setiap pengunjung tanpa mengumpulkan data yang dapat mengidentifikasi individu secara pribadi.
Smart Signals — sinyal keputusan, risiko, jaringan, dan bot yang telah diperkaya — dikirim ke server Anda melalui webhook (lihat Webhooks) dan ditampilkan di dashboard. Contoh-contoh di bawah ini mengonsumsi bentuk payload webhook.
| Signal | Deskripsi | Response | Platform |
|---|---|---|---|
| VPN Detection | Menandai penggunaan VPN dari IP intelligence | network.vpn: boolean | Web, Mobile |
| Proxy Detection | Mengidentifikasi penggunaan proxy datacenter dan residensial | network.proxy: boolean | Web, Mobile |
| Tor Detection | Mencocokkan IP dengan exit node Tor yang diketahui | network.tor: boolean | Web, Mobile |
| Datacenter | Menandai IP milik penyedia cloud/hosting yang diketahui | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | Geolokasi tingkat kota + ASN dari alamat IP | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Signal | Deskripsi | Response | Ketersediaan |
|---|---|---|---|
| Browser Tampering | Mendeteksi User-Agent palsu, navigator yang dimodifikasi, injeksi extension | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Mendeteksi antidetect browser (Multilogin, GoLogin, Dolphin) melalui probe CSS/property | bagian dari verdict tampering / bot | Web |
| Privacy Settings | Mendeteksi konfigurasi browser berfokus privasi (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Mendeteksi saat DevTools browser terbuka | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | Menyimpulkan private browsing Safari di iOS | { result: boolean } | Web (Safari mobile) |
| Signal | Deskripsi | Ketersediaan |
|---|---|---|
| Virtual Machine | Mendeteksi VMware/VirtualBox/Parallels/QEMU melalui WebGL renderer/vendor, layar, dan hardware concurrency | Web — Enterprise |
| Emulator | Mendeteksi emulator Android (BlueStacks, Genymotion, Nox, Android SDK) melalui GPU renderer dan penanda UA | Web — semua paket |
Deteksi khusus native (dalam pengembangan). Deteksi root, jailbreak, aplikasi kloning/ganda, instrumentasi Frida, dan factory-reset bergantung pada sinyal yang hanya dapat dikumpulkan oleh SDK mobile native. Deteksi tersebut tidak efektif pada agen web-saja saat ini. Deteksi incognito lintas-browser secara umum (Chrome/Firefox) juga masih dalam pengembangan; saat ini hanya private browsing Safari mobile yang disimpulkan.
| Signal | Deskripsi | Response | Platform |
|---|---|---|---|
| Bot Detection | Mengidentifikasi framework otomasi dan browser headless | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | Risiko teragregasi untuk permintaan, pada objek webhook decision | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
Flag VPN, proxy, Tor, dan datacenter diselesaikan di sisi server dari IP
pengunjung menggunakan basis data IP intelligence komersial (IP2Location /
MaxMind). Payload webhook publik menampilkan hasil gabungan sebagai boolean
pada objek network — network.vpn, network.proxy, network.tor,
network.datacenter — tanpa rincian per-metode atau string kepercayaan. Lihat
IP Intelligence untuk detailnya.
Dalam pengembangan. Deteksi incognito lintas-browser secara umum (Chrome/Firefox) belum tersedia. TRACIO saat ini hanya menyimpulkan private browsing Safari mobile. Jangan mengandalkan flag
incognitoumum saat ini.
Detektor tampering mengidentifikasi pengunjung yang telah memodifikasi browser mereka untuk menyalahartikan identitasnya:
navigator dengan membandingkan prototype getterPluginArray.prototype dan MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor, dan fungsi kritis lainnya telah diganti dengan ProxyanomalyScore (0.0-1.0) mengukur derajat inkonsistensi. Nilai di atas 0.5 menunjukkan tampering yang signifikan.
Objek webhook decision membawa risiko teragregasi untuk sebuah permintaan:
decision.riskScore (bilangan bulat 0-100), decision.suspectScore (angka), dan
decision.action (tindakan yang direkomendasikan). Skor mengagregasi keluaran smart
signal; rentang di bawah ini menjelaskan bagaimana riskScore dipetakan ke tingkat
risiko:
| Rentang Skor | Tingkat Risiko | Indikator Umum |
|---|---|---|
| 0-10 | Normal | Sinyal bersih, pengunjung dikenal, IP residensial |
| 11-30 | Rendah | Inkonsistensi kecil, IP datacenter, atau kunjungan pertama |
| 31-60 | Sedang | VPN terdeteksi, browser tampering, atau velocity tidak biasa |
| 61-80 | Tinggi | Beberapa sinyal risiko, proxy + tampering, aktivitas tinggi |
| 81-100 | Kritis | Bot terdeteksi, exit node Tor, atau anomali parah |
Skor mengagregasi keluaran smart-signal yang aktif — terutama IP intelligence (VPN/proxy/Tor/datacenter), verdict bot, dan browser tampering. Interaksi manusia yang terkonfirmasi (mouse/keyboard) menurunkan skor.
Empat konfigurasi browser berfokus privasi terdeteksi:
| Browser | Metode Deteksi | Ambang |
|---|---|---|
| Tor Browser | Canvas diblokir + WebGL diblokir + zona waktu UTC + font terbatas + ukuran layar dibulatkan | 3+ penanda |
| Brave | UA Brave atau navigator.brave atau merek "Brave" di Client Hints | 1+ penanda |
| Firefox ETP (strict) | Storage terpartisi atau canvas ditolak (UA Firefox diperlukan) | 1+ penanda |
| Safari ITP | Cookie diblokir atau IndexedDB dibatasi (UA Safari diperlukan) | 1+ penanda |
Smart Signals mencapai server Anda melalui payload webhook (lihat Webhooks untuk bentuk lengkap dan verifikasi tanda tangan). Contoh di bawah ini membaca field langsung dari payload tersebut.
// `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}