Smart Signals 是从浏览器指纹、IP 情报和行为分析中计算得出的服务端增强信号。它们在不采集任何个人身份信息的前提下,为每一位访客提供深入的上下文。
Smart Signals——即增强后的决策、风险、网络和机器人信号——通过 webhook 交付到你的服务器(参见 Webhooks),并在仪表盘中呈现。下面的示例消费的是 webhook 载荷的结构。
| Signal | 说明 | Response | 平台 |
|---|---|---|---|
| VPN Detection | 基于 IP 情报标记 VPN 使用 | network.vpn: boolean | Web、Mobile |
| Proxy Detection | 识别数据中心代理和住宅代理的使用 | network.proxy: boolean | Web、Mobile |
| Tor Detection | 将 IP 与已知 Tor 出口节点进行比对 | network.tor: boolean | Web、Mobile |
| Datacenter | 标记属于已知云/托管服务商的 IP | network.datacenter: boolean | Web、Mobile |
| IP Geolocation | 基于 IP 地址的城市级地理定位 + ASN | geo.{ country, city, lat, lon, timezone, isp } | Web、Mobile |
| Signal | 说明 | Response | 可用性 |
|---|---|---|---|
| Browser Tampering | 检测伪造的 User-Agent、被修改的 navigator、扩展注入 | { result: boolean, anomalyScore: number } | Web |
| Antidetect Browsers | 通过 CSS/属性探测检测反检测浏览器(Multilogin、GoLogin、Dolphin) | 属于篡改/机器人判定的一部分 | Web |
| Privacy Settings | 检测注重隐私的浏览器配置(Tor Browser、Brave、Firefox ETP、Safari ITP) | { result: boolean } | Web |
| Developer Tools | 检测浏览器 DevTools 是否处于打开状态 | { result: boolean } | Web — Business & Enterprise |
| Incognito (Safari) | 推断 iOS 上 Safari 的隐私浏览模式 | { result: boolean } | Web(Safari 移动端) |
| Signal | 说明 | 可用性 |
|---|---|---|
| Virtual Machine | 通过 WebGL 渲染器/供应商、屏幕和硬件并发数检测 VMware/VirtualBox/Parallels/QEMU | Web — Enterprise |
| Emulator | 通过 GPU 渲染器和 UA 标记检测 Android 模拟器(BlueStacks、Genymotion、Nox、Android SDK) | Web — 所有套餐 |
仅限原生的检测(开发中)。 Root、越狱、克隆/双开应用、 Frida 插桩和恢复出厂设置检测所依赖的信号,只有 原生移动 SDK 才能采集。它们在如今的纯 Web agent 中并不生效。通用的跨浏览器隐私浏览检测(Chrome/Firefox) 同样处于开发中;目前仅能推断 Safari 移动端的隐私 浏览。
| Signal | 说明 | Response | 平台 |
|---|---|---|---|
| Bot Detection | 识别自动化框架和无头浏览器 | bot.result: "human"|"bot"|"uncertain", bot.type: string, bot.score: number | Web、Mobile |
| Risk Score | 请求的聚合风险,位于 webhook 的 decision 对象上 | decision.riskScore: number, decision.suspectScore: number, decision.action: string | Web、Mobile |
VPN、代理、Tor 和数据中心标记由服务端根据访客的 IP,使用商用 IP 情报
数据库(IP2Location / MaxMind)解析得出。公开的 webhook 载荷将合并后的结果
以布尔值的形式呈现在 network 对象上——network.vpn、network.proxy、
network.tor、network.datacenter——不包含按方法的细分或置信度字符串。
详见 IP Intelligence。
开发中。 通用的跨浏览器隐私浏览检测(Chrome/Firefox) 尚不可用。TRACIO 目前仅能推断 Safari 移动端的隐私 浏览。请勿在如今依赖某个通用的
incognito标记。
篡改检测器用于识别为伪装身份而修改了浏览器的访客:
navigator 属性的扩展PluginArray.prototype 和 MimeType.prototype 原型链Function.prototype.toString、Object.getOwnPropertyDescriptor 及其他关键函数是否已被 Proxy 替换anomalyScore(0.0-1.0)量化了不一致的程度。高于 0.5 的值表示存在明显的篡改。
webhook 的 decision 对象承载了请求的聚合风险:
decision.riskScore(整数 0-100)、decision.suspectScore(数字)和
decision.action(建议的操作)。该分数聚合了各项 smart
signal 的输出;下面的分段说明了 riskScore 如何映射到风险等级:
| 分数区间 | 风险等级 | 典型指标 |
|---|---|---|
| 0-10 | 正常 | 信号干净、已知访客、住宅 IP |
| 11-30 | 低 | 轻微不一致、数据中心 IP 或首次访问 |
| 31-60 | 中 | 检测到 VPN、浏览器篡改或异常的访问频率 |
| 61-80 | 高 | 多个风险信号、代理 + 篡改、高活跃度 |
| 81-100 | 严重 | 检测到机器人、Tor 出口节点或严重异常 |
该分数聚合了处于活跃状态的 smart-signal 输出——主要是 IP 情报(VPN/代理/Tor/数据中心)、机器人判定和浏览器篡改。 经确认的人类交互(鼠标/键盘)会降低该分数。
可检测四种注重隐私的浏览器配置:
| Browser | 检测方法 | 阈值 |
|---|---|---|
| Tor Browser | Canvas 被屏蔽 + WebGL 被屏蔽 + UTC 时区 + 字体受限 + 屏幕尺寸取整 | 3+ 个标记 |
| Brave | Brave UA 或 navigator.brave 或 Client Hints 中的 "Brave" 品牌 | 1+ 个标记 |
| Firefox ETP(严格) | 存储被分区或 canvas 被抵御(需要 Firefox UA) | 1+ 个标记 |
| Safari ITP | Cookie 被屏蔽或 IndexedDB 受限(需要 Safari UA) | 1+ 个标记 |
Smart Signals 通过 webhook 载荷到达你的服务器(完整结构和签名验证请参见 Webhooks)。下面的示例直接从该载荷中读取字段。
// `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}