基础
浏览器指纹解析:网站能读取你的哪些信息
网站无需 Cookie,也能通过数十种信号构建浏览器指纹。了解网站读取的内容、Canvas 和 WebGL 的工作原理,以及指纹伪装的作用边界。

浏览器指纹是由浏览器在每次加载页面时暴露的技术属性组合而成的唯一标识——不需要 Cookie、不需要登录,也无需征得你的同意。网站会将 GPU 型号、屏幕分辨率、已安装字体、时区以及数十种其他信号组合起来,创建出在统计意义上足以代表你设备的独特画像。与 Cookie 不同,清除浏览记录并不能删除它。
什么是浏览器指纹
浏览器指纹是根据浏览器日常发送的数据建立的画像,包括 User-Agent 字符串、屏幕尺寸、已安装字体、时区偏移、语言设置、GPU 渲染器等。当足够多的信号被组合后,形成的画像在统计意义上具有高度唯一性,无需在设备上存储任何内容,也能将你的浏览器与数百万个其他浏览器区分开来。
这一过程通常会在后台静默完成。页面中的一段 JavaScript 可以在几毫秒内查询数十个浏览器 API,对收集到的值进行哈希处理,并将结果发送到跟踪服务器。整个过程不会设置 Cookie,不会请求权限,也不会弹出浏览器提示。
将技术属性作为被动标识符使用的概念,在 Peter Eckersley 于 2010 年发布的 EFF 研究中得到了正式记录。该研究发现,样本中约 94% 的浏览器拥有足够独特的指纹,可以跨会话跟踪用户。此后的指纹熵只增不减:更高分辨率的显示器、更多 GPU 型号以及更丰富的浏览器 API,都意味着可以组合出更多信号。
对于日常浏览而言,指纹识别最常见的表现是广告再营销——例如你在另一台设备上搜索过某件商品,之后却持续看到相关广告。对于需要在多个平台管理多个账号的人来说,浏览器指纹则是核心风险来源:平台会交叉比对指纹,以判断不同账号是否属于同一台实体设备。
哪些数据点构成你的指纹
浏览器指纹来自数十个 API,这些 API 可分为多个层面:浏览器与操作系统身份、屏幕属性、硬件规格、渲染行为、地区与时间,以及网络信号。单个信号通常无法独立识别你,真正产生足够熵、从数百万个浏览器中筛出某一个浏览器的,是这些信号的组合。
!许多漂浮的玻璃碎片在金属底座上方汇聚成人形剪影,象征多个数据点组合成浏览器指纹。
下面是这些信号按类别的具体分布:
| 类别 | 收集的信号 |
|---|---|
| 浏览器与操作系统 | User-Agent、浏览器版本、操作系统类型、平台、语言、DNT 请求头 |
| 屏幕与显示 | 分辨率、色深、像素比、视口尺寸、屏幕方向 |
| 硬件 | CPU 核心数、设备内存级别、触控支持、最大触控点数 |
| 渲染 | Canvas 哈希、WebGL 渲染器/厂商字符串、WebGL 扩展列表 |
| 地区与时间 | 时区偏移、系统区域设置、日期格式偏好 |
| 网络 | IP 地址、公共 IP 地理位置、HTTP Accept 请求头 |
| 媒体与 API | 支持的音频/视频编解码器、Web Audio 指纹、电池 API |
| 字体 | 已安装字体列表,通过 Canvas 文本渲染尺寸进行测量 |
这张表并不完整。高级指纹脚本还会探测 CSS 媒体查询,寻找浏览器扩展留下的痕迹,测量 JavaScript 引擎的性能时序,并测试当前可用的实验性 API。每次探测都会增加少量熵,而不同探测结果之间的任何不一致,也可能成为高价值信号。
Canvas 指纹:工作原理
Canvas 指纹通过在 HTML5 <canvas> 元素中绘制不可见的文本和图形,再读取生成的像素数据并计算哈希来工作。由于像素输出会受到 GPU、显卡驱动、操作系统和抗锯齿引擎的影响,这个哈希值通常能反映你的软硬件组合,并且在同一台设备的不同浏览器会话之间保持稳定。
!金属画架上摆放着一块磨砂 Canvas,一支漂浮的玻璃触控笔在其上绘制出发光的青色指纹。
这项技术于 2012 年出现在学术文献中,并在 2014 年前后逐渐进入主流跟踪基础设施。后续研究发现,访问量最高的网站中有相当一部分部署了 Canvas 指纹脚本,而且这些脚本通常由第三方广告和分析 SDK 提供,而非网站自身直接编写。
Canvas 指纹尤其难以通过常规隐私措施消除。删除 Cookie 不会影响渲染流程;无痕模式不会改变 GPU;清除浏览器存储,也不会改变硬件绘制字形的方式。真正可干预的环节只有 API 层:要么在像素数据返回给脚本之前注入受控噪声,要么替换为一个看起来像真实设备的稳定伪造哈希。
但噪声方案很容易被误用。每次网站查询 Canvas 时都返回一个不同的随机哈希,反而容易被识别:无法稳定输出 Canvas 结果的浏览器本身就是一种异常指纹。有效的 Canvas 伪装应当为每个环境选择一个固定的伪造值,并在每次查询时返回同一结果——让伪造输出保持一致。
WebGL 指纹:展示你的 GPU 信息
WebGL 指纹利用浏览器的 3D 图形 API 提取 GPU 身份信息。调用 gl.getParameter(gl.RENDERER) 后,可能会返回类似 "ANGLE (NVIDIA GeForce RTX 4070 Direct3D11 vs_5_0 ps_5_0)" 的字符串。结合厂商字符串、支持的扩展列表和最大纹理尺寸,指纹脚本可以获得详细的硬件信息,通常足以区分两台其他配置相同、但 GPU 代际不同的电脑。
除了查询参数,脚本还可以渲染一个 3D 场景并对像素输出计算哈希,这相当于 Canvas 指纹在三维场景中的延伸。GPU 渲染管线会引入与二维 Canvas 类似的渲染差异,生成的哈希同样能在不同会话之间保持稳定。
完全屏蔽 WebGL 看似是一种直接的应对措施,但实践中可能适得其反。地图、数据可视化和浏览器游戏等正规网站都在使用 WebGL。对 WebGL 参数返回 null 的浏览器很容易显得异常,而这种缺失本身也会成为指纹值。有效的 WebGL 伪装应返回合理但经过伪造的 RENDERER 和 VENDOR 字符串,使其匹配设备生态中真实存在的硬件组合,同时生成一致的伪造渲染哈希。伪造的 GPU 身份还必须与操作系统匹配:如果 NVIDIA GeForce 渲染器字符串与 macOS User-Agent 搭配出现,就会形成明显矛盾,指纹检测工具可以在几毫秒内捕捉到。
浏览器之外的设备指纹
设备指纹会将同样的信号收集逻辑延伸到浏览器设置之下的硬件属性。navigator.hardwareConcurrency API 会报告 CPU 核心数;navigator.deviceMemory 会以粗略级别返回内存容量;屏幕像素比可以区分 Retina、高 DPI 显示器和普通显示器;触控事件支持情况及最大触控点数,则可以区分触屏设备与桌面硬件。
这些硬件层面的值与浏览器渲染信号结合后,会形成一个能够跨越浏览器重装、Cookie 重置和 User-Agent 修改的指纹,因为底层硬件本身并没有改变。
移动设备的指纹识别方式略有不同。数百万用户可能共享完全相同的硬件配置,例如使用相同操作系统版本的同一款 iPhone,因此移动端的浏览器级指纹熵通常低于桌面端。广告网络会通过平台特有的标识符(iOS 上的 IDFA、Android 上的 AAID)、持久化存储机制,以及基于行为信号的概率匹配来弥补这一点。
跨设备指纹识别更进一步:它会关联桌面设备和移动设备上的指纹,构建家庭级画像。如果同一个广告像素在两台共享家庭 IP 地址、且行为模式相似的设备上触发,平台就可以仅凭信号关联这些会话,即使它们没有共享 Cookie 或登录账号。
网站究竟如何使用你的指纹
网站使用浏览器指纹主要有三个目的:防欺诈、广告跟踪和机器人检测。防欺诈属于防御性用途,例如将当前会话与此前被标记的设备关联起来,即使用户已经清除 Cookie 或使用其他账号登录。广告跟踪则用于跨网站、跨会话追踪用户,以开展再营销。机器人检测则通过指纹识别,将真实用户浏览器与自动化无头浏览器实例区分开来。
在金融服务和电商领域,指纹是附着于设备历史记录上的风险信号。如果结账请求来自一台浏览器,而其指纹与曾发生拒付或账号接管事件的设备相匹配,系统就可能触发额外验证,无论用户提交了什么凭据。
广告网络会通过第三方像素,同时代表数千个网站收集指纹。同一个跟踪器可以在网络中的每个网站上触发,从而拼接出比单个网站 Cookie 更广泛、更持久的浏览历史,而且完全不受 Cookie 删除影响。
反机器人平台,如 Cloudflare、Akamai、PerimeterX 及类似服务,会将指纹识别与行为分析结合起来。它们检查的不只是浏览器报告了什么,还会分析浏览器如何行动:鼠标移动熵、击键时间、滚动模式以及 API 调用顺序等。即使指纹值看起来像真实用户,只要行为模式呈现脚本特征,也可能无法通过行为层检测。
无痕模式无法清除浏览器指纹
很多人误以为无痕浏览是一种完整的隐私工具。它实际能做的是:将当前会话与常规浏览历史隔离,在关闭时删除会话 Cookie 和本地存储,并阻止浏览器将历史记录写入磁盘。它无法做到的是:改变屏幕分辨率、GPU、已安装字体、时区、CPU 核心数,或其他构成浏览器指纹的信号。
你在无痕模式下的指纹,与普通模式下的指纹基本相同。通过指纹识别进行跟踪的网站,仍能看到同一台设备、同一个画像以及此前的访问历史,无论你是否打开了无痕标签页。
VPN 会改变 IP 地址,而 IP 只是指纹画像中熵较低的信号之一。重视指纹识别的网站会更看重渲染信号——Canvas 哈希、WebGL 渲染器和字体列表——而不是 IP。使用 VPN 但 Canvas 哈希不变的用户,仍然可以被跨会话跟踪;改变的只是表面上的地理位置。
DNS over HTTPS 和广告拦截器可以解决相邻的隐私问题,但不能直接解决指纹识别。DNS over HTTPS 可以防止互联网服务提供商检查你的 DNS 查询;广告拦截器能够拦截已知的指纹脚本,但新脚本、第一方实现以及捆绑在正规 CDN 库中的脚本,仍可能正常运行。这些工具只能针对特定的已知脚本提供部分缓解,无法系统性覆盖整个指纹攻击面。
指纹伪装:它究竟意味着什么
指纹伪装是指拦截返回指纹信号的 API 调用,并替换为伪造值,使跟踪系统读取到的是另一台设备,而不是实际运行浏览器的设备。有效的指纹伪装有两个关键要求:伪造值必须在内部保持一致,能够对应现实中真实存在的设备组合;同时必须保持稳定,在整个会话期间每次返回相同的值。
一致性正是许多粗糙伪装方案失败的原因。如果浏览器报告的是 Windows User-Agent,却生成了具有 macOS 特征的 Canvas 渲染模式,就会形成明显矛盾。2560×1440 的屏幕分辨率与报告的设备像素比不匹配,也是类似问题。指纹检测工具可以自动捕捉这些不一致。
主要存在两种技术路径:
噪声注入会在每个会话或每次页面加载时随机化指纹值。它易于实现,但会留下明显的元模式:每次访问时 Canvas 哈希都发生变化的浏览器,很容易被识别为异常。噪声注入可以干扰跨会话跟踪,却无法建立一个可信的设备身份。
基于环境的伪装会为浏览器会话分配一组固定且相互协调的伪造值,例如一个伪造 GPU、一种屏幕分辨率和一套字体栈,并使其匹配真实设备配置。对指纹识别系统而言,该会话看起来就像一台稳定的真实设备。这正是指纹浏览器采用的架构,也是唯一能够真正用一个身份替换另一个身份,而不是仅通过随机噪声模糊真实身份的方式。
指纹浏览器如何处理浏览器指纹
指纹浏览器专门用于创建彼此隔离的浏览器环境,每个环境都拥有完整且内部一致的独立指纹。它们并非只修改少数几个 API 响应,而是在浏览器引擎层拦截指纹采集,并替换为一套完整协调的身份:User-Agent、Canvas 哈希、WebGL 渲染器字符串、字体列表、屏幕分辨率、时区和设备硬件参数等,全部经过校准,以匹配生态中真实存在的设备组合。
!一排半透明玻璃面具中,一个发出琥珀色光芒的面具托着分层指纹,象征指纹浏览器中的独立环境。
每个环境都会独立保存自己的指纹。打开 50 个环境,就意味着拥有 50 个不同身份:不同的 GPU、不同的字体栈和不同的渲染输出。对于运行基于指纹的账号匹配系统的平台而言,这些环境代表 50 台不同的实体设备。这种架构是付费社交广告、联盟流量和规模化电商运营中进行多账号管理的基础。
它与“VPN 加普通浏览器”的区别是架构层面的,而不是表面上的。VPN 只改变 IP;指纹浏览器则会改变指纹脚本可以触及的每一层浏览器身份。两层通常都需要配置:代理为环境分配与其声明地区相匹配的地理位置 IP,而指纹浏览器则确保所有渲染信号都与该地区和设备类型保持一致。
指纹生成质量——即伪造环境与真实设备分布的接近程度,以及各个被查询 API 之间的信号关联程度——是不同产品之间的核心技术差异。像 Dolphin Anty 和 GoLogin 这样的工具,就是针对这一工作流打造的,并将指纹配置直接整合到环境创建流程中。
常见问题
简单来说,什么是浏览器指纹?
浏览器指纹是将浏览器默认暴露的技术属性组合起来形成的唯一 ID,包括屏幕尺寸、GPU 型号、已安装字体、时区等。网站无需在设备上存储任何内容即可读取这些信号,因此,清除 Cookie 或使用无痕模式等常规隐私措施,都无法真正擦除这一标识。
VPN 能阻止浏览器指纹识别吗?
不能。VPN 会改变 IP 地址,而 IP 只是指纹画像中数十个输入信号之一。Canvas 哈希、WebGL 渲染器、字体列表和屏幕分辨率等高熵信号,都不会受到 VPN 影响。你获得了不同的表面位置,但浏览器身份仍然相同。
什么是 Canvas 指纹?为什么很难阻止?
Canvas 指纹会读取 GPU 和操作系统在 HTML5 Canvas 元素上渲染不可见图形的方式。它很难被完全阻止,因为正规网站也会使用 Canvas API 执行真实的渲染任务,全面拦截会破坏页面功能。基于脚本的选择性拦截容易被识别,而随机化输出(噪声注入)本身也会成为指纹信号。
浏览器指纹识别合法吗?
在大多数司法辖区,出于跟踪目的使用指纹识别都受到隐私法规约束,例如欧盟的 GDPR 和加州的 CCPA。这些法规要求进行披露,并在某些情况下取得明确同意。不同国家和监管机构的执法情况存在较大差异。
指纹伪装能让我匿名吗?
指纹伪装可以切断真实硬件与被跟踪身份之间的关联,并阻止平台依据指纹匹配来关联不同会话。但它不能让你完全匿名。网络层信号、登录标识符、行为模式和概率关联仍可能将不同会话联系起来。指纹伪装是更广泛隐私方案或多账号配置中的关键一层,但不能单独作为完整解决方案;使用相关工具时仍应遵守平台规则。
参考来源
- Eckersley, P. (2010). How Unique Is Your Web Browser? Electronic Frontier Foundation. https://www.eff.org/files/2014/11/12/browser-uniqueness.pdf
- EFF Cover Your Tracks — 交互式浏览器指纹检测工具。https://coveryourtracks.eff.org/
- Laperdrix, P. et al. (2016). Beauty and the Beast: Diverting Modern Web Browsers to Build Unique Browser Fingerprints. IEEE Symposium on Security and Privacy. https://hal.inria.fr/hal-01285470


