Smart Signals là các tín hiệu làm giàu phía máy chủ được tính toán từ dấu vân tay (fingerprint) trình duyệt, dữ liệu tình báo IP và phân tích hành vi. Chúng cung cấp bối cảnh sâu về mọi khách truy cập mà không thu thập bất kỳ thông tin nhận dạng cá nhân nào.
Smart Signals — các tín hiệu quyết định, rủi ro, mạng và bot đã được làm giàu — được gửi đến máy chủ của bạn qua webhook (xem Webhooks) và hiển thị trong dashboard. Các ví dụ bên dưới sử dụng cấu trúc payload của webhook.
| Signal | Mô tả | Response | Nền tảng |
|---|---|---|---|
| VPN Detection | Đánh dấu việc sử dụng VPN từ dữ liệu tình báo IP | network.vpn: boolean | Web, Mobile |
| Proxy Detection | Nhận diện việc sử dụng proxy datacenter và residential | network.proxy: boolean | Web, Mobile |
| Tor Detection | Đối chiếu IP với các nút thoát Tor đã biết | network.tor: boolean | Web, Mobile |
| Datacenter | Đánh dấu các IP thuộc nhà cung cấp cloud/hosting đã biết | network.datacenter: boolean | Web, Mobile |
| IP Geolocation | Định vị địa lý cấp thành phố + ASN từ địa chỉ IP | geo.{ country, city, lat, lon, timezone, isp } | Web, Mobile |
| Signal | Mô tả | Response | Khả dụng |
|---|---|---|---|
| Browser Tampering | Phát hiện User-Agent giả mạo, navigator bị chỉnh sửa, tiêm mã từ extension | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | Phát hiện các trình duyệt antidetect (Multilogin, GoLogin, Dolphin) qua thăm dò CSS/thuộc tính | part of tampering / bot verdict | Web |
| Privacy Settings | Phát hiện các cấu hình trình duyệt hướng riêng tư (Tor Browser, Brave, Firefox ETP, Safari ITP) | { result: boolean } | Web |
| Developer Tools | Phát hiện khi DevTools của trình duyệt đang mở | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | Suy luận chế độ duyệt riêng tư của Safari trên iOS | { result: boolean } | Web (Safari mobile) |
| Signal | Mô tả | Khả dụng |
|---|---|---|
| Virtual Machine | Phát hiện VMware/VirtualBox/Parallels/QEMU qua WebGL renderer/vendor, màn hình và hardware concurrency | Web — Enterprise |
| Emulator | Phát hiện các trình giả lập Android (BlueStacks, Genymotion, Nox, Android SDK) qua GPU renderer và dấu hiệu UA | Web — mọi gói |
Các phát hiện chỉ dành cho native (đang phát triển). Phát hiện root, jailbreak, ứng dụng nhân bản/kép, đo đạc Frida và khôi phục cài đặt gốc phụ thuộc vào những tín hiệu mà chỉ SDK di động native mới thu thập được. Chúng không hiệu quả trong agent chỉ chạy trên web hiện nay. Phát hiện incognito đa trình duyệt tổng quát (Chrome/Firefox) cũng đang trong quá trình phát triển; hiện tại chỉ suy luận được chế độ duyệt riêng tư của Safari mobile.
| Signal | Mô tả | Response | Nền tảng |
|---|---|---|---|
| Bot Detection | Nhận diện các framework tự động hóa và trình duyệt headless | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web, Mobile |
| Risk Score | Rủi ro tổng hợp cho yêu cầu, trên đối tượng decision của webhook | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web, Mobile |
Các cờ VPN, proxy, Tor và datacenter được phân giải phía máy chủ từ IP của khách
truy cập bằng các cơ sở dữ liệu tình báo IP thương mại (IP2Location /
MaxMind). Payload webhook công khai hiển thị kết quả tổng hợp dưới dạng boolean
trên đối tượng network — network.vpn, network.proxy, network.tor,
network.datacenter — không có phân tách theo từng phương pháp hay chuỗi độ tin cậy. Xem
IP Intelligence để biết chi tiết.
Đang phát triển. Phát hiện incognito đa trình duyệt tổng quát (Chrome/Firefox) chưa khả dụng. Hiện tại TRACIO chỉ suy luận chế độ duyệt riêng tư của Safari mobile. Đừng dựa vào một cờ
incognitotổng quát ở thời điểm này.
Bộ phát hiện tampering nhận diện những khách truy cập đã chỉnh sửa trình duyệt để trình bày sai danh tính của họ:
navigator bằng cách so sánh các getter prototypePluginArray.prototype và MimeType.prototypeFunction.prototype.toString, Object.getOwnPropertyDescriptor và các hàm quan trọng khác có bị thay thế bằng Proxy hay khônganomalyScore (0.0-1.0) định lượng mức độ không nhất quán. Các giá trị trên 0.5 cho thấy có sự tampering đáng kể.
Đối tượng decision của webhook mang rủi ro tổng hợp cho một yêu cầu:
decision.riskScore (số nguyên 0-100), decision.suspectScore (số) và
decision.action (hành động được đề xuất). Điểm số tổng hợp các đầu ra của smart
signal; các dải bên dưới mô tả cách riskScore ánh xạ tới các mức rủi ro:
| Dải điểm | Mức rủi ro | Các dấu hiệu điển hình |
|---|---|---|
| 0-10 | Bình thường | Tín hiệu sạch, khách đã biết, IP residential |
| 11-30 | Thấp | Không nhất quán nhỏ, IP datacenter, hoặc lần truy cập đầu |
| 31-60 | Trung bình | Phát hiện VPN, tampering trình duyệt, hoặc tốc độ bất thường |
| 61-80 | Cao | Nhiều tín hiệu rủi ro, proxy + tampering, hoạt động cao |
| 81-100 | Nghiêm trọng | Phát hiện bot, nút thoát Tor, hoặc bất thường nghiêm trọng |
Điểm số tổng hợp các đầu ra smart-signal đang hoạt động — chủ yếu là tình báo IP (VPN/proxy/Tor/datacenter), phán định bot và tampering trình duyệt. Tương tác con người đã được xác nhận (chuột/bàn phím) làm giảm điểm số.
Bốn cấu hình trình duyệt hướng riêng tư được phát hiện:
| Trình duyệt | Phương pháp phát hiện | Ngưỡng |
|---|---|---|
| Tor Browser | Canvas bị chặn + WebGL bị chặn + múi giờ UTC + font hạn chế + kích thước màn hình làm tròn | 3+ dấu hiệu |
| Brave | UA Brave hoặc navigator.brave hoặc thương hiệu "Brave" trong Client Hints | 1+ dấu hiệu |
| Firefox ETP (strict) | Storage được phân vùng hoặc canvas bị chống lại (yêu cầu UA Firefox) | 1+ dấu hiệu |
| Safari ITP | Cookie bị chặn hoặc IndexedDB bị hạn chế (yêu cầu UA Safari) | 1+ dấu hiệu |
Smart Signals đến máy chủ của bạn thông qua payload webhook (xem Webhooks để biết cấu trúc đầy đủ và cách xác minh chữ ký). Các ví dụ bên dưới đọc các trường trực tiếp từ 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}