跳至正文
欺诈防范

设备指纹与 IP 情报:为什么两者缺一不可

设备指纹识别回访的浏览器;IP 情报读取它所在的网络。在我们的查询中,一台 Mullvad VPN 评分 100,一个 Private Relay IP 评分 9。

作者GeoIPHub 团队发布于更新于阅读时长阅读约 24 分钟
一个发光的指纹螺纹与一个网络节点相互重叠,代表设备指纹与 IP 情报的结合

反欺诈和信任团队总在重复同一场争论:设备指纹还是 IP 情报,我们该买哪一个?这个问题本身就问错了。在一个大型网站的真实流量中,只有大约三分之一的指纹是唯一的,它们在几天内就会漂移,反检测浏览器还能成批伪造。IP 随第一个数据包到达,在服务器端,覆盖每一个请求,包括 API 和 bot 流量,并且可以浓缩为一个 0 到 100 的 IP 欺诈评分。下文介绍每一层能看到什么、各自在哪里失效,以及如何把它们结合起来。

一部手机在上方发出指纹图案,下方是一道网络光束,代表请求的设备层和网络层
指纹识别浏览器;IP 读取它所在的网络。两者缺一不可。

设备指纹究竟是什么

设备指纹是浏览器愿意暴露的各项属性的哈希值。脚本会读取 User-Agent、屏幕、已安装字体、语言、时区和硬件提示,以及特定 GPU 和驱动渲染隐藏 canvas、WebGL 场景或音频缓冲区时的细微差异。把这些合在一起哈希,就得到一个在清除 Cookie 和使用无痕窗口后依然存在的标识符,因为它是从机器本身推导出来的,而不是存储在机器上的。

这让指纹识别具备三项真正的优势:

  • 识别回访的浏览器,跨越会话、登录和已清除的 Cookie。
  • 把账户关联到共享设备,这是多账户检测中的核心键。
  • 发现暴露自动化的内部不一致:声称是 iPhone 却带有桌面 GPU 字符串的 User-Agent,屏幕尺寸不可能存在的无头浏览器,或者每个请求都在变化的指纹。

用于这些任务时,它是一个强信号。问题出在团队把指纹当作身份,而不是一种概率。

指纹识别的三个真实局限

指纹识别会以三种方式失效:规模一大就会碰撞,随时间漂移,并且正受到欺诈工具、浏览器和监管机构的围攻。

在规模化场景下,它远没有那些著名研究所暗示的那么唯一。早期针对注重隐私的志愿者的研究报告称,超过 80% 的浏览器可以被唯一识别。当研究人员分析了来自法国排名前 15 的某网站的 2,067,942 个指纹时,也就是普通流量,而不是主动参加隐私测试的人,只有 33.6% 是唯一的,移动端的比例更是降到 18.5%(Hiding in the Crowd,WWW 2018)。数以百万计的人使用同款手机和同样的默认字体,因此在真实流量中,大多数指纹都会碰撞。

它会漂移。浏览器会自动更新,字体会被安装,屏幕会被接上。FP-STALKER 研究基于来自 1,905 个浏览器实例的 98,598 个指纹,发现指纹变化频繁,“从每隔几小时到几天不等”(FP-STALKER,IEEE S&P 2018)。借助其关联方法,作者们平均仍能追踪一个浏览器 54.48 天,其中 26% 超过 100 天。这是令人印象深刻的研究,也是一个警告:简单的哈希比对系统在几天之内就会把同一位客户当成陌生人。

它正受到三个方向的围攻。欺诈团伙刻意伪造它:反检测浏览器是养号农场的标准装备,能为每个配置文件生成全新且内部一致的指纹。浏览器有意削弱它:Safari 限制已知的指纹脚本从 canvas 和 Web Audio 等 API 中读取信息,Firefox 也内置了指纹防护,模糊了许多同类信号。监管机构则把它视为跟踪。欧盟第 29 条工作组在第 9/2014 号意见中认定,《电子隐私指令》的同意要求适用于设备指纹。2024 年 12 月 19 日,英国 ICO 称 Google 允许将指纹识别用于广告的做法“不负责任”。安全和反欺诈的法律基础比广告更稳固,但这方面的风险是真实存在的。

这些都不意味着指纹识别没用。它只意味着指纹是一项概率性输入,需要第二个独立的层来印证或反驳它。

IP 情报能看到而指纹看不到的东西

IP 情报描述请求所经过的网络,而且在任何 JavaScript 运行之前就能做到。地址随每个请求的第一个数据包到达,包括 API 调用、Webhook 以及从不运行您指纹代码的无头脚本。经过富化后,它能回答浏览器永远无法回答的关于自身的问题(逐字段的说明见什么是 IP 情报):

  • 这是什么类型的网络?asn.connection_type 把住宅和移动接入与数据中心或托管区分开来。来自云实例的消费者结账请求,在被证明清白之前都应视为脚本,而任何指纹都无法告诉您这一点。
  • 连接是否经过匿名化?detection.is_vpn、is_proxy、is_tor 和 is_relay,外加一个 anonymity_level。其机制见 VPN 和代理检测的工作原理。
  • 谁在运营这个网络?ASN 和组织名称,正是靠它,“某一家托管服务商上冒出四十个新账户”才变得可见。
  • 它在哪里,与其他信息是否一致?国家和城市,附带 geo_confidence,在已知时还会提供 IANA timezone。
  • 这个地址有历史记录吗?垃圾邮件、扫描和僵尸网络标志,以及 threat.dnsbl_sources 中的 DNS 黑名单记录。
  • 它是共享的吗?threat.is_cgnat 标记运营商级 NAT,即一个地址背后实际上是成千上万的人,这类地址的评分封顶为 50。

最重要的是两项特性。IP 情报是服务器端的、普遍适用的:它覆盖了指纹识别看不到的流量。而且它很难在客户端伪造:请求总得从某个地方发出,数据中心或已知的 VPN 服务器会如实显示出来。有一点需要您自己注意:要对来自可信代理链的真实客户端 IP 进行评分,绝不要使用可伪造的转发请求头。

IP 情报单独做不到什么

当两位客户位于同一个 CGNAT 地址、办公网关或校园网络之后时,IP 地址无法区分他们。当同一台笔记本电脑从家里的 Wi-Fi 换到手机热点时,IP 也无法识别出它,而移动地址还在不断轮换。

最难弥补的缺口是住宅代理。在真实家庭连接上租用出口的欺诈团伙,发出的流量看起来就像普通家庭用户,IP 数据大多看不到它。我们不检测住宅代理,也不应把任何 IP 查询当作对抗它的唯一防线。这正是指纹发挥价值的地方:同一个反检测配置文件反复出现在许多“家庭”地址上,这是设备层的模式,而不是网络层的模式。因此,IP 情报单独无法回答“这是我们上周信任的那台设备吗?”,而这正是指纹识别存在的意义。

逐个问题看:哪一层能回答

每一层都能回答另一层无法回答的问题,下表把这种分工明确列出。

您要问的问题指纹IP 情报
我以前见过这个浏览器吗?能(概率性)不能
这些账户在同一台设备上吗?能部分能(同一网络)
这是数据中心、VPN、Tor 或中继连接吗?不能能
这是住宅代理出口吗?间接能(同一设备,许多家庭)大多不能
哪家网络运营商,有什么历史?不能能
用户大致在哪里?较弱(时区、语言)能(附带 geo_confidence)
是否适用于没有 JavaScript 的 API 和 bot 流量?不能能
是否在页面加载之前就能工作?不能能
是否能在数周内保持稳定?不能(几天内就会变化)固定线路能,移动网络不能
客户端能伪造吗?能(反检测浏览器)只能靠租用另一个出口
监管风险适用同意规则常规的 IP 处理

把两列放在一起看:几乎每一行中,只要一层说“不能”,另一层就说“能”。

同一个受信任的指纹,两个网络:我们在 2026 年 10 月 20 日看到的结果

网络层会把同一个受信任的指纹变成 block 或 allow,取决于它从哪里到达。设想一个您信任了几个月的浏览器,分别从下面两个地址各到达一次。我们在 2026 年 10 月 20 日 04:34 UTC 查询了 iCloud Private Relay 出口 104.28.46.99,04:35 UTC 查询了 Mullvad 服务器 185.213.155.73,没有使用 API 密钥。随着网段变动,结果也会变化。

位于法兰克福的 Mullvad 服务器返回如下结果,已精简,数值未经修改:

GeoIPHub API
{ "ip": "185.213.155.73", "asn": { "asn": 39351, "org": "ESAB-AS - 31173 Services AB", "asn_type": "hosting", "connection_type": "datacenter" }, "geo": { "country_code": "DE", "city": "Frankfurt am Main (Innenstadt I)", "timezone": "Europe/Berlin", "geo_confidence": 0.8 }, "detection": { "is_vpn": true, "is_hosting": true, "is_relay": false, "is_anonymous": true, "anonymity_level": "medium", "vpn_provider": "Mullvad", "vpn_confidence": 95 }, "scoring": { "fraud_score": 100, "recommended_action": "block", "detection_methods": ["known_vpn_server", "wireguard_open", "datacenter_with_vpn_proxy", "no_ptr_datacenter"] } }

位于 Cloudflare 网络上的中继出口返回如下结果:

GeoIPHub API
{ "ip": "104.28.46.99", "asn": { "asn": 13335, "org": "CLOUDFLARENET - Cloudflare, Inc.", "asn_type": "unknown", "user_type": "consumer_privacy_network" }, "geo": { "country_code": "AO", "city": "Luanda", "timezone": "Africa/Luanda", "geo_confidence": 0.8 }, "detection": { "is_vpn": false, "is_proxy": false, "is_relay": true, "relay_provider": "iCloud Private Relay", "anonymity_level": "medium" }, "scoring": { "fraud_score": 9, "recommended_action": "allow", "detection_methods": ["relay_ip"] } }

Mullvad 地址评分 100,即最高分,detection_methods 说明了原因。它在 Mullvad 自己公布的服务器列表上,vpn_provider: "Mullvad" 和 vpn_confidence: 95 就来自这里,而该列表把它标注为 WireGuard 服务器。一个受信任的指纹从那里到达,就构成了“已知设备出现在匿名网络上”的矛盾,因此即使设备历史清白,也应加强验证。Private Relay 地址评分 9,唯一的方法是 relay_ip。Apple 的中继是一项面向消费者的隐私功能,而不是代理,并且评分会把中继地址封顶在 60,因此 Private Relay IP 永远不会达到 block。一个长期受信任的指纹出现在它背后,几乎是最安全的流量了。

同一次运行中的另外两次查询补全了整体情况:

地址(2026 年 10 月 20 日查询,UTC)是什么fraud_scorerecommended_actiondetection_methods
104.28.46.99(04:34)iCloud Private Relay 出口9allowrelay_ip
45.33.32.156(04:34)普通的 Linode 云服务器,Fremont10allowdatacenter_ip
185.213.155.73(04:35)Mullvad VPN 服务器,法兰克福100block4 种方法,见上文
185.220.101.1(04:34)Tor 出口节点,汉堡100blocktor_exit, datacenter_blocklisted, no_ptr_datacenter, known_spammer

一台普通云服务器评分 10,是一个有用的提醒:单纯的托管并不是欺诈。一个受信任的指纹从云主机到达,值得追问一句,而不是直接拦截。

时区检查有两个细节需要注意。Mullvad 服务器报告的是 Europe/Berlin,因此在该地址上,浏览器时钟设为纽约时间就是一个明确的矛盾。Linode 服务器的 geo.timezone 返回 "none",因此在该地址上,时区比较没有可以对照的对象。另外,中继出口被地理定位到安哥拉罗安达,而我们在 10 月 12 日核对时,Apple 自己的出口列表把这个网段放在赞比亚卢萨卡。浏览器时钟与中继位置不一致是预料之中的,不应被算作代理的破绽。

网络判定会过期,因此请保存查询时间

IP 判定只是某一时刻的读数,我们自己的样本就证明了这一点。本文的早期版本用 102.129.235.17 作为 VPN 示例。2026 年 10 月 5 日以及 10 月 16 日,它返回 fraud_score 92、block,方法为 known_vpn_server、openvpn_open 和 ipsec_open。10 月 20 日 04:34 以及 04:35 UTC,它返回 fraud_score 0、allow、is_vpn: false,detection_methods 为空。我们尚未确定是该地址离开了 VPN 网络,还是我们的扫描不再能看到它。

无论哪种情况,都请把查询时间、评分和方法与指纹 ID 一并保存,并在下一次敏感操作时重新对 IP 评分,而不是沿用上个月的判定。指纹会在几天内漂移,而这个 IP 的判定在四天内就从 block 变成了 allow。

结合使用效果更好:如何把两者结合起来

同时运行两层,收益出现在它们意见不一致的地方,以下六条规则把这一点转化为决策。

寻找矛盾。一个您信任了几个月的指纹,突然经由另一个大洲的数据中心 VPN 到达,这是会话劫持、账户共享,或者 bot 前面挂了一个代理。一个全新的指纹出现在受信任设备昨天使用过的同一个住宅 IP 上,几乎总是家里新添了一部手机。同一个指纹在一小时内于两个 IP 之间出现不可能的移动距离,则是会话被盗或使用了租来的出口。

比较浏览器的时钟和网络的时钟。指纹报告浏览器时区;IP 情报报告网络时区。在 Europe/Berlin 的 IP 上出现纽约时间,是最古老的代理破绽之一,而检查它只需一次字符串比较。当 timezone 为 "none" 或该地址是中继时,跳过这项检查。

用网络来打破指纹碰撞。两个完全相同的指纹(同款手机、同样的操作系统、同样的默认设置),如果它们的 IP 位于不同城市的不同住宅网络上,那就是两个不同的人。一个“变化了”的指纹如果一直从同一个 IPv6 /64 和 ASN 到达,很可能是同一个人更新了浏览器。

让每一层覆盖另一层看不到的流量。在运行 JavaScript 的浏览器会话中采集指纹,对所有流量的 IP 进行评分。

分别在两者上独立聚类。对于多账户和促销滥用,共享指纹和共享网络是两类相互独立的证据。一个共享键可能只是一个家庭或一个 CGNAT 地址块;两个相互独立的共享键则构成一个值得审查的团伙假设。

先评分,再加强验证。把指纹作为连续性输入(“已知设备”降低风险,“已知恶意设备”提高风险),把 IP 作为上下文。然后按评分已经使用的四个区间采取行动,参见按操作设定的欺诈评分阈值:25 及以下为 allow,最高 50 为 review,最高 75 为 step_up,75 以上为 block。当某个矛盾落入 review、需要分析师人工查看时,请按照如何调查一个 IP 地址中的单次事件流程处理。

实施清单

以下六个构建步骤把这些规则变成可用的关联逻辑。

  1. 在登录、注册、结账和提现时采集指纹,并将其 ID 与请求一同记录。
  2. 在服务器端查询真实的客户端 IP,并保留 detection 标志、ASN、geo.timezone、is_cgnat、fraud_score 和 detection_methods。
  3. 把两者连同时间戳一起存储到会话和账户下,以便把今天的组合与上个月的进行比较。
  4. 先编写矛盾规则:已知设备出现在 VPN、Tor 或数据中心网络上、时区不一致、不可能的移动距离、受信任网络上出现新设备。
  5. 对 CGNAT 和移动运营商地址降低权重。熟悉网络上的指纹变化本身并不是危险信号。
  6. 记录您采集指纹的原因,并确认您所服务地区的同意要求。

一次查询即可获得 IP 这一半

IP 这一半所需的一切都来自一次 GET 请求,可解释的 0 到 100 欺诈评分附带 recommended_action 以及触发的方法。它还会应用开脱性信号:住宅 ISP 减去 17 分,经验证的爬虫减去 28.5 分。所有字段都包含在免费套餐中,每天 1,500 次查询,在您针对指纹表编写关联逻辑之前,可以先无需 API 密钥查询任意 IP。

别再问该买哪一层

这种组合贯穿本系列的各个主题,从多账户团伙到优惠券滥用,也是您在不拦截真实客户的前提下检测匿名化流量的方式,因为一个位于 Private Relay 之后、评分为 9 的受信任指纹,理应比一个位于 VPN 之后、评分为 100 的新指纹受到更温和的对待。每个评分背后的原因会显示是哪些网络信号推动了它。所以,不要只选一层。问问自己需要回答哪些问题,您会发现两者都需要。

常见问题

什么是设备指纹?

设备指纹(通常指浏览器指纹)会收集浏览器暴露的几十项属性,例如 User-Agent、屏幕尺寸、已安装的字体、时区、语言、硬件信息,以及设备渲染 canvas、WebGL 和音频的方式,并把它们哈希成一个标识符。由于它不需要 Cookie,因此可以跨会话识别回访的浏览器,并把多个账户关联到同一台设备。它在客户端运行,因此只能看到其脚本得以执行的流量。

设备指纹准确吗?

没有早期研究暗示的那么准确。2018 年一项研究分析了来自法国排名前 15 的某网站的 2,067,942 个指纹,发现只有 33.6% 是唯一的,移动端只有 18.5%,而早期针对注重隐私的志愿者的研究给出的比例超过 80%。指纹还会漂移:FP-STALKER 研究发现,指纹的变化周期从几小时到几天不等,不过它的关联方法平均仍能追踪浏览器 54.48 天。请把指纹视为一种概率性的识别信号,而不是稳定的身份。

IP 情报能取代设备指纹吗?

不能,反过来也一样。IP 情报看到的是网络:连接类型、托管或住宅来源、VPN、代理、Tor 和中继的使用情况、ASN、地理位置以及滥用历史。它在服务器端工作,从第一个请求起就生效,也适用于不运行脚本的 API 流量。但它无法区分同一个运营商级 NAT 地址后面的两个家庭,而经由住宅代理的流量看起来就像普通家庭用户。指纹弥补了这些空白,IP 情报则弥补了指纹的盲区。

结合设备指纹和 IP 信号的最佳方式是什么?

把指纹当作连续性信号(我们见过这个浏览器吗?),把 IP 当作上下文和风险信号(它在什么网络上,是否经过匿名化?),然后寻找矛盾之处。一个已知指纹从另一个大洲的数据中心 VPN 到达,是劫持或代理的模式;同一个受信任住宅 IP 上出现的新指纹,通常只是家里的一台新设备。比较浏览器上报的时区与 IP 的时区,并在排查多账户时把两者作为相互独立的聚类键。

设备指纹合法吗?

在欧盟和英国,它作为跟踪行为受到监管。第 29 条工作组在第 9/2014 号意见中认定,《电子隐私指令》中关于访问用户设备信息需征得同意的规定适用于指纹识别,仅对提供用户所请求服务严格必需的情形有狭窄的豁免。反欺诈的法律基础比广告更稳固,但合规风险是真实存在的:2024 年 12 月 19 日,英国 ICO 称 Google 允许将指纹识别用于广告的决定“不负责任”。请审慎地使用指纹,记录用途,并就您所在的司法辖区寻求法律意见。

作者

GeoIPHub 团队

GeoIPHub API 背后的团队

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

分享本文
更多文章

相关 文章