TRACIO 在服务端分析每位访客的 IP 地址。它会标记 VPN、代理、 Tor 出口节点和数据中心来源,并解析城市级地理定位。 所有分析均在服务端运行,不依赖任何客户端组件。
IP 情报通过 webhook 载荷送达你的应用:每次 webhook 都会交付
network 对象(VPN/代理/Tor/数据中心布尔值以及连接类型)和
geo 对象(国家、城市、坐标、时区)。ISP 和 ASN 自 Business 套餐起提供。
完整的载荷结构和签名校验请参阅 Webhooks。
VPN、代理、Tor 和数据中心的分类是通过商用 IP 情报数据库
根据发起连接的 IP 解析的(IP2Location 负责 VPN/代理/Tor 类型,
MaxMind 负责地理定位和 ASN)。每一项都在 webhook 的 network
对象中以单个布尔值呈现——公开载荷中没有按方法细分的结果,也没有
置信度评分。
| 标记 | 字段 | 含义 |
|---|---|---|
| VPN | network.vpn | IP 属于某个已知的 VPN 提供商 |
| 代理 | network.proxy | IP 为数据中心代理或住宅代理 |
| Tor | network.tor | IP 为已知的 Tor 出口节点 |
| 数据中心 | network.datacenter | IP 属于某个云/托管提供商 |
{ "network": { "vpn": true, "proxy": true, "tor": false, "datacenter": false, "connectionType": "VPN" }}// `payload` is the webhook delivery body (/docs/webhooks)if (payload.network.vpn) { // visitor is connecting through a VPN}数据中心代理和住宅代理都会呈现为 network.proxy;数据中心
来源还会额外通过 network.datacenter 报告。分类来自
IP2Location 代理数据库,覆盖主流云/托管提供商(AWS、
Google Cloud、Azure、Oracle Cloud、Alibaba Cloud、DigitalOcean、Hetzner、OVH、
Linode/Akamai、Vultr 等)。
{ "network": { "vpn": false, "proxy": true, "tor": false, "datacenter": true, "connectionType": "DCH" }}发起连接的 IP 命中 Tor 出口节点时会呈现为 network.tor。另外,
Tor 浏览器本身则通过其反指纹配置在客户端被识别出来,
与网络路径无关——参阅
Smart Signals。
城市级地理定位由发起连接的 IP 在服务端解析
(MaxMind),并通过 webhook 的 geo 对象交付。
| 字段 | 类型 | 说明 | 套餐 |
|---|---|---|---|
geo.country | string | ISO 3166-1 alpha-2 国家代码 | 全部 |
geo.city | string | 城市名称 | 全部 |
geo.lat | number | 近似纬度 | 全部 |
geo.lon | number | 近似经度 | 全部 |
geo.timezone | string | IANA 时区标识符 | 全部 |
{ "geo": { "country": "CZ", "city": "Prague", "lat": 50.05, "lon": 14.4, "timezone": "Europe/Prague" }}在 Business 和 Enterprise 套餐中还会识别运营商。在 webhook 载荷中,这两个字段
都位于 network 对象上:
{ "network": { "vpn": false, "proxy": false, "tor": false, "datacenter": false, "isp": "Comcast Cable", "asn": 7922 }}通过 Data API 读取会话时,字段的分布略有不同:isp 位于 geo 上,
asn 位于 network 上。数据相同,只是接口面有两个——请从你所使用的接口面放置该字段的
位置去读取它。
在 Pro 及以上套餐中,webhook 会携带一个 velocity 块——反映访客近期的活动范围:
| 字段 | 类型 | 说明 |
|---|---|---|
velocity.events5m | number | 该访客最近 5 分钟内的事件数 |
velocity.uniqueIps | number | 该访客出现过的不同 IP 数量 |
velocity.uniqueLocations | number | 该访客出现过的不同地点数量 |
当事件发生时访客计数器可用(通常为 primary 阶段),该块才会出现。
缺少该块意味着“无数据”,而不是零——请勿将其缺失视为“没有异常活动”。
IP 黑名单匹配不属于公开契约:无论是 webhook 载荷还是仪表盘都不会开放黑名单类别。
用于网络风险的 webhook 接口是布尔型 network 标记、连接类型以及上述 velocity 计数器;
请将它们与 decision 和 bot 字段一起使用(参阅
Smart Signals)以做出风险决策。
以下代码直接读取 webhook 载荷的 network 对象。完整的载荷和签名校验请参阅
Webhooks。
// `payload` is the webhook delivery body (/docs/webhooks)function assessIPRisk(payload: WebhookPayload) { const { vpn, proxy, tor, datacenter } = payload.network
const risks: string[] = [] let riskLevel = "low"
if (tor) { risks.push("Tor exit node") riskLevel = "critical" }
if (vpn) { risks.push("VPN detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (proxy) { risks.push("Proxy detected") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
if (datacenter) { risks.push("Datacenter IP") riskLevel = riskLevel === "low" ? "medium" : riskLevel }
return { riskLevel, risks }}