GUIDE · BROWSER FINGERPRINTING

浏览器指纹是什么?常见维度与检测方法。

浏览器指纹(browser fingerprint)是网站读取浏览器与设备的一组特征后形成的识别标识。它不需要在你的电脑上保存任何东西,清除 Cookie 也不会改变它,因此常被用于反欺诈、风控和跨站识别。

更新于

浏览器指纹和 Cookie 有什么不同

两类标识对比
Cookie 等存储浏览器指纹
保存在哪里你的浏览器里不保存,由网站每次读取计算
能否清除可以清除或使用无痕模式不能,同一设备通常长期稳定
常见用途保持登录、购物车、偏好设置识别设备、反欺诈、风控、广告归因

常见的指纹维度

网站能读取到什么
维度暴露的信息常见的不一致
User-Agent 与 Client Hints浏览器品牌与版本、操作系统、架构UA 写 Chrome 144,Client Hints 或 Worker 中却是另一个版本
屏幕分辨率、可用高度、色深、设备像素比可用高度与系统任务栏不符
语言与时区navigator.language、Accept-Language、Intl 时区时区与 IP 所在地不一致
字体已安装的字体列表与渲染宽度Windows UA 却检测到 macOS 专有字体
Canvas文字与图形的渲染结果哈希每次读取都变化(随机噪点),或与 GPU 不符
WebGL / WebGPUGPU 厂商与渲染器、参数、像素结果Windows 系统报告 Apple GPU
AudioAudioContext 处理结果的哈希同一设备多次结果不稳定
ClientRects元素尺寸的细微差异主窗口与 iframe 结果不同
硬件CPU 核心数、设备内存核心数与机型明显不符
WebRTC本地与公网 IP 候选地址使用代理时仍暴露真实公网 IP
自动化特征navigator.webdriver、无头浏览器标识自动化工具留下的属性

为什么“一致”比“随机”更重要

真实设备的特征彼此吻合,并且长期稳定。检测网站因此不只看某个值是否罕见,更关注这些值能否同时成立:

  • 跨维度一致:系统、字体、GPU、屏幕与浏览器版本要来自同一种设备。
  • 跨上下文一致:主页面、iframe 与 Worker 读取到的身份应该相同。
  • 跨时间稳定:同一设备每次访问得到相同的指纹;每次都变的“随机噪点”本身就是异常信号。
  • 与网络一致:时区、语言和地理位置应与出口 IP 所在地相符。

如何检测自己的浏览器指纹

常用检测页面
工具侧重点
CreepJS多上下文一致性、Canvas、WebGL、Audio、字体、Intl 等,并标记可疑的“谎言”
Pixelscan浏览器、系统、位置、自动化与指纹伪装的一致性
BrowserLeaks分项查看 Canvas、WebGL、字体、WebRTC、Client Hints 等原始数据
IPhey浏览器、位置、IP、硬件、软件的综合评估
  1. 同时测两个环境

    指纹浏览器的价值在于环境之间有区别,只测一个环境看不出问题。

  2. 重启后再测一次

    同一环境关闭再打开,关键值(Canvas、WebGL、时区)应保持不变。

  3. 和本机真实浏览器对比

    同一台电脑上的官方 Chrome 也会被部分页面标红,先确认哪些提示是检测站点自身的判断方式。

  4. 记录字段而不是颜色

    记下测试时间、系统、浏览器与内核版本、代理,以及具体失败字段。检测规则会更新,结果只代表当时。

Prism 如何处理这些维度

Prism 的指纹配置由自编的 Chromium 内核在底层处理,不依赖向网页注入脚本;系统、CPU、屏幕与 GPU 来自同一套硬件模板,Canvas、WebGL、Audio 等细节由每个环境的指纹种子固定。逐项说明见指纹配置与硬件模板。

常见问题

清除 Cookie 或用无痕模式能换掉指纹吗?
不能。指纹来自设备与浏览器本身的特征,清除存储不会改变它。
使用代理能改变浏览器指纹吗?
代理只改变网络出口。时区、语言与 WebRTC 等仍可能暴露差异,需要与指纹一起配置。
指纹越独特越容易被识别吗?
越罕见的组合越容易被区分,但更关键的是自相矛盾的组合。使用常见、完整的硬件组合,比随机拼凑更稳妥。
检测页面显示红色,就一定有问题吗?
不一定。先看具体字段,并与同机真实浏览器对比。代理被识别、字体差异或站点规则都可能导致提示。