跳至正文
IP 情报

VPN 与代理检测的实际原理:逐个信号拆解

VPN 检测在实践中如何运作:现代 VPN 与代理检测背后的各类信号,从服务商列表、ASN 分析到协议探测。

作者GeoIPHub 团队发布于阅读时长阅读约 16 分钟
发光的环形隧道,外部有探测光束触及其表面,象征 VPN 与代理检测的工作原理

每个反欺诈、反滥用和合规团队最终都会问同一个问题:这个 IP 地址是否在隐藏什么?(如果您想先了解基础知识,可以从什么是 VPN 以及如何检测 VPN 流量读起。本文将深入讲解其中的机制。)坦白说,没有任何单一检查能给出答案。商业 VPN、数据中心 SOCKS 代理、从僵尸网络租来的住宅代理和 Tor 出口节点,在网络上的表现各不相同(代理类型详解逐一介绍了每一类),而每一种都能绕过某种简单的检测方法。

本指南将逐一介绍生产级检测系统所依赖的信号,其中有两种(延迟检查和行为建模)GeoIPHub 并不使用。GeoIPHub 基于七类验证方法得出自己的判定,覆盖的范围与之相同。对于每一层,您将看到它能看到什么、看不到什么,以及这些结果如何合并为您实际使用的响应字段:is_vpn、is_proxy、is_residential_proxy 和 is_tor。

细长的光束射向一个球体,其中一些被反弹回来,象征协议握手探测
有回应的握手是证据;列表中的条目只是声明。

服务商服务器列表

最可靠的证据也是最直接的:VPN 服务商会公开自己的服务器基础设施。应用需要端点列表才能连接,许多服务商还提供官方 API 或配置包,列出每台服务器的主机名和 IP。

检测系统会持续抓取这些来源。当某个 IP 出现在 NordVPN 或 Mullvad 公开的服务器列表中时,匹配结果就能给出服务商名称,但前提是这个确切的 IP 在我们持有的列表中。不在列表中的服务器仍可能被下面介绍的信号捕获,只是不会被标注名称。这就是为什么一个好的 API 不仅能返回 is_vpn: true,还能返回服务商名称本身,也解释了为什么它有时会对已标记的服务器不返回任何名称。

这一层的局限在于覆盖范围。公开列表只能捕获那些公开信息的服务商,因此这一层对占消费级 VPN 流量大头的大型商业 VPN 最有效,而对私有或自建 VPN 最弱。

ASN 与托管基础设施

每个 IP 都属于一个自治系统(AS),即向互联网宣告该 IP 的网络。ASN 告诉您谁在运营这个网络,这是一个很强的先验信息:

  • 由 AS396982(Google Cloud) 宣告的 IP 几乎可以肯定是一台服务器,而不是坐在沙发上的某个人。
  • 由住宅 ISP(Comcast、Deutsche Telekom、Jio)宣告的 IP 很可能是普通用户的终端连接。
  • 一个长期存在、并有 VPN 端点历史的托管或机房托管 ASN,会提高其地址段内每个 IP 的先验概率。

仅靠数据中心检测就能捕获很大一部分 VPN 和代理,因为大多数匿名化基础设施都租用云服务器。但它无法区分 VPN 端点和普通 Web 服务器。这需要下一层来解决。

主动协议探测

这是大多数查询数据库会跳过的一层,也是猜测与验证之间的区别所在。VPN 服务器必须响应 VPN 协议握手,这正是它的职责。因此检测系统可以去"敲门",看看是谁应答:

  • OpenVPN 会在其监听端口上响应特征明显的 TLS 或 UDP 握手。
  • IKEv2/IPsec 会在 UDP 500/4500 上以可识别的载荷作出响应。
  • PPTP 和 L2TP 会应答其控制信道请求。
  • SOCKS5 和 HTTP 代理会完成各自的问候序列。

WireGuard 是个例外:除非第一条消息来自它已知的密钥,否则服务器会保持沉默,因此任何外部探测都无法确认它。GeoIPHub 的 wireguard_open 方法来自服务商公开的服务器列表中将该服务器标注为 WireGuard 的记录,而不是来自握手。

如果某个 IP 完成了 OpenVPN 握手,那它就是在运行 OpenVPN,无需任何统计推断。GeoIPHub 对 8 种协议进行探测,并准确记录哪一次握手成功,因此 is_vpn 背后的证据都有名称、可审计。

GeoIPHub API
curl -H "x-api-key: YOUR_API_KEY" \ https://api.geoiphub.com/v1/lookup/102.129.235.17
GeoIPHub API
{ "ip": "102.129.235.17", "asn": { "asn": 834, "org": "IPXO - IPXO LLC", "asn_type": "vpn", "connection_type": "datacenter" }, "detection": { "is_vpn": true, "is_proxy": false, "is_tor": false, "is_anonymous": true, "vpn_provider": "none", "vpn_confidence": 100 }, "scoring": { "fraud_score": 92, "recommended_action": "block", "detection_methods": ["known_vpn_server", "openvpn_open", "ipsec_open"] } }

这里 detection_methods 中的 openvpn_open 和 ipsec_open 记录了该地址响应了 OpenVPN 和 IPsec 探测,同时还匹配了已知 VPN 服务器数据。此处 vpn_provider 为 "none",因此没有归属任何品牌;这一判定由有名称的协议证据支撑,而不是服务商标签。

主动探测有一项成本:它需要基础设施和时间,因此它在后台持续运行,而不是按请求执行。探测结果会被缓存并定期刷新,使 API 能在毫秒级作出响应。

端口与服务指纹

即使无法完成完整的握手,IP 开放服务的形态也能提供信息。住宅连接通常不暴露任何服务。VPN 端点会暴露一小组特征明显的端口。代理农场则会在整个子网中暴露管理面板、SSH 和代理端口。

服务指纹识别还能捕获配置不当或未标品牌的匿名化工具:在 TCP 1080 上以 SOCKS 横幅应答的服务器就是代理,无论是否有任何列表收录它。

延迟与位置一致性

地理位置会在物理层面留下痕迹。如果某个 IP(根据注册数据)声称位于圣保罗,但从全球各观测点测得的往返时间三角定位到阿姆斯特丹,那么一定有某种东西在中继流量。基于延迟的检查对以下情况尤其有效:

  • 伪造地理位置的 VPN 服务器:服务商宣传的"巴西"服务器实际上位于迈阿密。
  • GRE/隧道中继:把流量转发到隐藏的真实位置。

这一层很少单独触发,但与托管信号结合时,是一个很强的佐证。

住宅代理行为

住宅代理是最难对付的一类,因为出口 IP 确实属于家庭 ISP。列表检查会通过,ASN 检查也会通过。探测什么也找不到,因为所谓的"服务器"只是嵌在某人免费手机应用里的一个 SDK。

因此,检测的重点从基础设施转向随时间变化的行为:

  • 同一个住宅 IP 作为出口出现在多个已知代理交易平台上。
  • 不合常理的会话多样性:一个家庭 IP 每小时呈现几十种设备指纹。
  • 更换模式与代理网络的轮换规律相符,而不是 DHCP 续租。
  • ISP 类型不匹配:移动运营商 IP 持续产生数据中心式的请求量(识别移动代理指南解释了为什么运营商 IP 是一种特殊情况)。

这就是为什么住宅出口有一个独立于 is_proxy 的字段:证据类别不同,相应的处理方式也不同。请清楚 IP 查询在这里能看到什么。GeoIPHub 的 is_residential_proxy 是一种基于 ASN 的粗粒度推断,并非直接观测到代理网络成员身份,因此应将其视为提示而非证据。如果您日志中的家庭 ISP 流量突然显得可疑,为什么住宅代理不断出现在您的流量中梳理了常见原因。在结账流程中命中住宅代理,是比命中消费级 VPN 强得多的欺诈信号。

Tor 目录数据

Tor 是最容易的一类,这是其设计使然。Tor 网络会公布其中继和出口节点的共识,并持续刷新。与公开的出口列表交叉比对,可以获得近乎完美的 is_tor 准确率,但有一个前提:时效。出口节点不断加入和离开,因此目录需要按紧凑的周期重新导入,而不是每周一次。

隐私中继则是相反的情况。Apple 公布了 iCloud Private Relay 的全部出口地址,因此中继同样可以被精确匹配,但单独来看,中继应归入 allow,而不是放进拦截列表。我们在 iCloud Private Relay 与 Cloudflare WARP 检测中介绍了这两类中继,以及为什么 Cloudflare 不公布 WARP 出口列表。

跨信号置信度

最后一层是合并。前面每一层产生的证据,可靠性特征各不相同:

信号层能捕获触发时的置信度盲点
服务商列表商业 VPN非常高(可归属)私有 VPN
ASN / 托管数据中心匿名化工具中等(先验,非证据)住宅出口
主动探测在线运行的 VPN/代理守护进程非常高(已验证)基于 SDK 的代理
端口指纹未标品牌的代理高有防火墙保护的端点
延迟检查伪造地理位置的中继中等距离较近的中继
行为模型住宅代理中高全新的 IP
Tor 目录出口节点近乎确定网桥

站得住脚的判定需要综合权衡这些信号。一个中等置信度的信号不应翻转布尔值;两个相互独立的高置信度信号则应该。因此,您希望检测 API 输出三样东西:用于路由决策的布尔值、用于审计的有名称的检测方法,以及表达信号相互印证程度的风险评分。有名称的方法也正是被误标记的用户所需要的:我们在为什么 IP 会被标记为 VPN 或代理一文中,用真实地址逐一解读了这些方法。

让 VPN 检测落地:基于组合进行路由

三条实用建议:

  1. 不要把 is_vpn 单独当作拦截列表。 很多付费客户都在使用消费级 VPN(参见如何标记匿名流量而不拒绝真实客户)。请基于组合进行路由:VPN + 数据中心 + 滥用历史,与单纯使用 VPN 是完全不同的情况。
  2. 给住宅代理信号较高的权重,同时清楚它们是推断出来的。 没有人会为了隐私去租用住宅出口;与 VPN 相比,其正当用途的基础比例极低。不过,IP 级别的住宅标记只是一种粗粒度推断,因此请将其与您自己的会话信号结合使用。
  3. 优先选择经过验证的检测,而非静态列表。 问问任何供应商,他们如何知道某个 IP 是 VPN。如果答案是"我们授权使用的一个数据库",那么这些数据已经在过时。主动探测和持续抓取的服务商列表才能跟上基础设施的变化。

您可以亲自查看每一层的输出:用免费 IP 查询工具查询任意 IP,或测试您自己的 VPN 连接,无需注册。

常见问题

VPN 检测能做到 100% 准确吗?

不能。检测本质上是概率性的。公开了基础设施的商业 VPN 可以以非常高的置信度被检出,而部署在全新云 IP 上的小型私有 VPN 则更难识别。因此,好的 API 会返回逐项信号证据和置信度,而不是单纯的布尔值。

在检测层面,代理和 VPN 有什么区别?

VPN 在网络层隧道化全部流量,其服务器通常会响应特定协议的握手(OpenVPN、WireGuard、IKEv2)。代理转发的是应用层流量(HTTP、SOCKS),暴露的端口和指纹也不同。检测系统会分别对这两类进行探测。

为什么住宅代理如此难以检测?

因为出口 IP 确实属于家庭 ISP,基于列表和基于 ASN 的检查都会放行。检测只能转而依靠行为证据:同一个 IP 出现在多个代理网络中、异常的复用模式,以及 ISP 类型与实际观测到的流量不匹配。

为了防范欺诈而拦截所有 VPN 用户合理吗?

通常不合理。许多正常用户出于隐私考虑通过 VPN 上网。更好的做法是把 VPN 使用作为风险评分中的一个加权输入,只有当它与其他信号同时出现时才升级处理,例如数据中心托管、滥用历史或不可能的出行轨迹。

VPN 检测数据需要多新?

非常新。VPN 服务商每天轮换服务器,代理网络按小时更换 IP。依靠持续重新探测和重新抓取服务商列表的检测才能保持准确;静态数据集几周之内就会失效。

作者

GeoIPHub 团队

GeoIPHub API 背后的团队

由 GeoIPHub 团队撰写,即构建 GeoIPHub IP 情报 API 及其扫描器的团队。草稿在 AI 辅助下完成,并由团队编辑;除非标注为示例,API 示例均为针对线上 API 的真实查询。

分享本文
更多文章

相关 文章