为访问者地理位置添加 VPN 与 Tor 信号
了解访问者的连接何时与已知的 VPN 网络、Tor 出口节点、数据中心/托管网络或其他受支持的网络类别相匹配。Watch-IP 会将这些指标添加到符合条件的 GET /v1/geo 响应中,以便您的应用将它们与其他上下文信息结合起来进行权衡。
符合条件的方案
security 包含在 Starter、Growth、Scale 与 Enterprise 方案中。在 Free 方案中,响应会完全不包含该字段——而不是发送一个具有误导性、全部为 false 的对象——因此在读取其中任何字段之前,请先检查该对象是否存在。
IPv4 与 IPv6 的覆盖范围不同
IPv4 连接会与 Tor、VPN、数据中心、威胁及受制裁网络名单进行比对。IPv6 连接会与除 Tor 之外的所有名单进行比对——目前没有免费的 IPv6 Tor 出口名单来源,因此无论某个 IPv6 连接是否真的是 Tor 出口,isTor 始终返回 false。请勿将 IPv6 的覆盖范围描述为与 IPv4 等同。
缺省、false 与 true 是三种不同的状态
缺省的 security 对象意味着您的方案不包含该数据,而不代表该连接已被检查并判定为干净。已包含字段上的 false 值,意味着在 Watch-IP 当前加载的名单中未找到匹配项——而不是确认安全的判定,因为基于名单的检测无法覆盖所有情况。切勿将未经评估或值为 false 的结果展示为“干净”“安全”或“已验证”。
数据来源与更新
支撑这些字段的名单由我们汇编并存储在自有存储中,并按计划定期刷新。冷启动时,首次查询会短暂阻塞;加载完成后,请求会从内存缓存中提供服务,同时刷新操作在后台运行,因此一次缓慢或失败的刷新会降级为陈旧或空数据,而不会导致响应出错。
一个审查工作流示例
请将 isVpn 或 isDatacenter 与账户历史及其他信号一起,作为人工审查队列的一项输入,而不是直接拦截访问者的唯一依据。例如,将其与同一次注册事件中的一次性邮箱检测结合使用,是一种合理的方式,可以将少量注册引导至人工审查,而不是拒绝所有 VPN 用户。
这不能做什么
这些字段无法识别住宅代理,也不能验证身份,更不是一个全面的威胁或匿名性检测产品——它们只是一小组基于名单的指标。
安全响应字段
- isTor
- 已知的 Tor 出口节点,来自当前加载的 IPv4 出口名单。对 IPv6 始终为 false。
- isVpn
- 已知的商业 VPN 提供商网络,涵盖 IPv4 与 IPv6。
- isDatacenter
- 数据中心/托管网络——是 VPN 的一个超集,因为许多 VPN 出口本身运行在托管基础设施之上。
- isThreat
- 位于已知恶意 IP 段或已知威胁 ASN 中,涵盖 IPv4 与 IPv6。
- isSanctionedNetwork
- 位于 Watch-IP 维护的、受国家制裁的电信/托管网络运营商名单中,每季度审查一次——相比其他字段,这是一个置信度更低、更为宽松的信号,并非制裁合规筛查。
安全地读取 security 字段
浏览器 JavaScript
const response = await fetch('https://api.watch-ip.com/v1/geo', {
headers: { 'X-Api-Key': 'YOUR_PUBLISHABLE_KEY' },
});
const geo = await response.json();
if (!geo.security) {
// 您的方案不包含安全数据——请勿对该连接做出任何假设。
} else if (geo.security.isVpn || geo.security.isDatacenter) {
// 命中名单——这是您自身审查逻辑的一项输入,而非仅凭它就直接拦截。
} else {
// 在当前加载的名单中未命中——并不保证该连接是安全的。
}在读取任何字段之前,请务必先判断 `security` 是否存在——对象缺失与字段存在但值为 false,含义并不相同。
常见问题
它能检测住宅代理吗?
不能。当前名单涵盖已知的商业 VPN、Tor、数据中心以及威胁/受制裁网络——不包括住宅代理服务这一更广泛的类别,这类服务通过真实的消费者 IP 地址路由,因而更难通过名单匹配识别。
false 表示什么?
表示在 Watch-IP 当前加载的名单中未找到匹配项。这并不是在肯定地声明该连接是安全的,因为名单无法覆盖现实中存在的每一个 VPN、出口节点或恶意网络。
是否覆盖 IPv6 的 Tor 检测?
不覆盖。目前 isTor 对 IPv6 连接始终返回 false——当前实现中没有免费的 IPv6 Tor 出口名单来源。其他所有字段均覆盖 IPv6。
这些检测是否适用于任意 IP?
目前不适用。这些数据仅作为 GET /v1/geo 响应的一部分提供给发起连接的浏览器;单独的 IP 查询端点(/v1/lookup)不会返回 security 数据块。
我可以仅凭一个标记就进行拦截吗?
可以,但单独一个基于名单的标记作为自动拦截的依据是比较薄弱的——误报确实会发生,而且合法用户也会出于各种正常原因通过 VPN 或共享网络访问。大多数集成会将这些字段作为审查决策中的一项输入。