浏览器存储指纹是一种追踪技术,在你浏览器自己的存储中植入持久标识符——localStorage、sessionStorage、IndexedDB和Cookie——然后在每次回访时读取它们。与硬件级指纹不同,存储指纹通过同时扩散到多个存储层来在Cookie删除后存活。你现在就可以在 whatsmy.fyi 上查看你的浏览器当前暴露了什么。
简短总结
浏览器存储指纹通过同时向localStorage、sessionStorage、IndexedDB和Cookie写入唯一标识符来工作。当你删除其中一个时,追踪者会从其他存储中重建它。Evercookie等技术将其扩展到16个以上的存储向量,使标识符几乎无法在没有专用工具的情况下抹去。现代浏览器通过存储分区对抗这一点——将每个存储桶按顶级域隔离,使跨站追踪在结构上不可能实现。
什么是浏览器存储指纹?
浏览器存储指纹是 浏览器指纹 的一个类别,它利用浏览器内置的存储API,而非GPU渲染或音频处理等硬件信号。目标相同——跨会话和网站唯一识别你的设备——但机制不同:追踪者向你浏览器自己的存储写入数据,并在后续访问时读取它。
将存储指纹与简单追踪Cookie区分开来的是冗余性。传统Cookie是单一存储槽。存储指纹同时向数十种不同的存储机制写入相同的标识符。当你清除Cookie时,标识符在localStorage中存活。当你清除localStorage时,它在IndexedDB中存活。当你清除IndexedDB时,追踪者读取仍然持有数据的任何向量,并重写所有其他向量。 电子前哨基金会的Cover Your Tracks 工具将基于存储的复活确定为普通用户最难中和的追踪技术之一。
浏览器存储指纹是如何工作的?
存储指纹在四种主要浏览器存储机制上遵循读写循环,每种机制具有不同的持久性特征。
第一步——生成标识符
在第一次访问时,JavaScript脚本生成一个唯一标识符——通常是随机UUID或同时收集的硬件信号的哈希值。然后将此标识符同时写入每个可用的存储向量。
第二步——写入多个存储层
相同的ID存储在localStorage(持久性,源范围)、sessionStorage(标签页范围,标签关闭时清除)、IndexedDB(结构化数据库,更大配额)和HTTP Cookie(随每个请求发送,服务器端可访问)中。高级实现还写入ETag、HSTS条目、浏览器缓存和 window.name——它在同一标签页内跨页面导航持续存在。
// 简化的多向量存储写入
const trackingId = crypto.randomUUID();
// 持久性——在浏览器重启、Cookie删除后存活
localStorage.setItem('_tid', trackingId);
// 标签页范围——在标签页内导航中存活
sessionStorage.setItem('_tid', trackingId);
// IndexedDB——结构化,更大存储配额
const db = await openDB('tracker', 1, {
upgrade(db) { db.createObjectStore('ids'); }
});
await db.put('ids', trackingId, 'primary');
// HTTP Cookie——服务器可读,跨请求
document.cookie = `_tid=${trackingId}; max-age=31536000; SameSite=Lax`;第三步——在回访时读取
在下次访问时,脚本读取所有四个存储层。如果其中任何一个仍然持有ID,则用户被识别。如果某些向量被清除,这些向量会立即从存活的值中重写——这种技术称为Cookie复活。从追踪者的角度来看,只要至少一个存储层存活,用户的身份就被恢复了。
第四步——IndexedDB排序侧信道
除了简单的读写追踪外,2025年还发现了一个更微妙的漏洞,由 Fingerprint.com研究人员 记录。Firefox中的 indexedDB.databases() API以由内部哈希表决定的非随机顺序返回数据库名称——一个进程范围的侧信道。无关的网站可以独立调用此API并观察到相同的排序,从而在不读取或写入任何实际存储数据的情况下跨不同来源链接用户。漏洞(CVE-2026-6770)在Firefox 150和Tor Browser 15.0.10中通过在返回前将结果规范化为字母顺序来修补。
Evercookie:极端案例
Evercookie是安全研究员Samy Kamkar创建的概念验证库,展示了基于存储复活的全部范围。它同时在16个或更多向量上存储标识符:HTTP Cookie、localStorage、sessionStorage、IndexedDB、Web SQL数据库、Flash本地共享对象、Silverlight隔离存储、CSS历史记录、ETag、浏览器缓存、HSTS头、window.name、PNG像素编码和Java小程序存储。当这些的任何子集被删除时,库会从存活的向量重建完整标识符。2014年,weibo.com生产环境中检测到基于IndexedDB的Evercookie技术,标志着这种方法的第一次商业确认使用。
存储指纹统计数据
| 发现 | 数值 | 来源 |
|---|---|---|
| 通过指纹共享数据的前1,000个网站 | 60%+ | 普林斯顿大学网络普查 |
| 明确使用指纹的热门网站 | 3.5% | Mozilla遥测研究 |
| 大型数据集的唯一识别率 | 94%+ | EFF Cover Your Tracks |
| 组合指纹信号的信息熵 | 18.1 bits | Eckersley,2010年——基础指纹识别研究 |
| 桌面指纹识别准确率 | 91.45% | ACM互联网测量会议,2025年 |
| 移动指纹识别准确率 | 37.16% | ACM互联网测量会议,2025年 |
桌面和移动准确率之间的差距存在,因为移动设备更加同质——数百万用户共享相同的硬件和操作系统版本。具有各种GPU驱动、已安装应用程序和字体库的桌面机器产生的存储和硬件档案更具特色。
现实中谁在使用浏览器存储指纹?
广告和再营销网络
广告技术公司使用基于存储的标识符在不同网站之间链接用户的浏览活动,而无需依赖默认被Firefox和Safari阻止、在Chrome中已弃用的第三方Cookie。第三方iframe内的共享localStorage键或IndexedDB记录实现了与第三方Cookie相同的跨站识别——除非浏览器应用存储分区。
欺诈检测和账户安全
欺诈预防平台使用多向量存储创建稳定的设备指纹,用于识别回访客户和标记设备更改。如果账户登录来自其存储指纹与该账户任何先前会话都不匹配的设备,则被标记为需要额外验证。这种用例通常在GDPR的合法利益基础下无需明确同意即可允许。
付费墙和计量内容执行
提供免费文章限制的新闻出版商使用存储指纹防止用户通过清除Cookie来绕过计量器。由于文章计数标识符同时写入localStorage和IndexedDB,单独清除Cookie不会重置计数器。只有从浏览器开发者工具清除所有网站数据才能重置计量器——即便如此,直到下次访问将标识符写回为止。
分析和会话重建
一些分析平台使用基于localStorage的会话令牌来将多次页面加载中的用户旅程拼接在一起,即使用户离开并在几分钟后返回。这比sessionStorage(标签关闭时清除)更持久,比Cookie(浏览器在某些跨站上下文中可能不发送)更可靠。
浏览器存储指纹合法吗?
在欧洲的GDPR下,任何可用于识别个人的数据——包括存储在localStorage或IndexedDB中的设备标识符——都构成个人数据。英国信息专员办公室在2025年1月的草案指南中确认,localStorage、sessionStorage和IndexedDB受与Cookie相同的PECR规则约束,需要知情同意或狭义的合法利益理由。法国数据保护机构(CNIL)得出了相同的结论,将浏览器存储命名为需要事先同意要求的追踪向量。根据美国CCPA和CPRA,基于存储的设备标识符被视为具有退出权的个人信息。全球执法仍然不一致,但监管方向是明确的:未经披露的存储追踪在法律上等同于没有Cookie横幅的Cookie追踪。
在中国,《个人信息保护法》(PIPL)明确规定,通过Cookie、localStorage等技术手段收集用户标识符属于个人信息处理行为,须依法向用户明示并征得同意。欺诈防范情形可主张必要性,但仍须在隐私政策中披露。
W3C指纹识别指南 将localStorage风格的持久性归类为"类Cookie指纹识别"——最直接的追踪类别——并建议规范作者考虑如何对存储API进行分区或限制,以减少脚本可用的指纹识别面。
如何保护自己免受浏览器存储指纹追踪
与硬件指纹不同,存储指纹可以从结构上击败——但只能通过浏览器级控制,而非仅仅清除历史记录。
- 启用全Cookie保护(Firefox):Firefox在严格模式下的增强追踪保护激活状态分区——每个网站获得自己的隔离存储桶。在foo.com内设置的追踪者的localStorage条目,当同一追踪者在bar.com内加载时无法读取。这是对抗跨站存储追踪最有效的单一保护,在Firefox标准模式下默认对已知追踪者启用。
- 使用Safari(任何带ITP的版本):Safari的智能追踪防护按顶级网站对localStorage、IndexedDB、Cache API和Blob URL存储进行分区,并主动清除7天内没有用户交互的来源的存储数据。跨站存储追踪在默认情况下被结构性阻止。
- 使用Brave Browser:Brave默认阻止指纹识别,应用存储分区,并允许每个网站自定义。其Shields面板提供对允许哪些追踪向量的精细控制。
- 清除所有网站数据,不只是Cookie:浏览器历史记录删除通常清除Cookie,但保留localStorage和IndexedDB完整。在Chrome和Firefox中,使用开发者工具(应用程序标签页→存储→清除网站数据)或浏览器的"清除浏览数据"菜单并选择"缓存的图像、Cookie和其他网站数据"选项,一次性清除所有存储。
- 使用容器扩展(Firefox多账户容器):Firefox容器将每个容器的存储与其他所有容器隔离。在一个容器中运行社交媒体,在另一个容器中进行一般浏览,可以防止社交追踪者读取你一般浏览期间设置的localStorage值。
- Tor Browser(最强保护):Tor Browser在每个"新身份"操作时清除所有存储,应用存储分区,并使用所有Tor用户共享的统一浏览器配置文件。注意,上述IndexedDB排序漏洞(CVE-2026-6770)在15.0.10版本之前影响了Tor Browser;如果使用Tor,请更新到当前版本。
- 选择性禁用第三方iframe / JavaScript:大多数跨站存储追踪通过加载在iframe内的第三方脚本运行。uBlock Origin在中等模式下通过完全阻止第三方脚本加载来阻止这些向量的大多数。这是最激进的方法,会破坏一些嵌入内容。
常见问题
清除Cookie足以防止存储指纹吗?
不够。清除Cookie是最低步骤,而非完整解决方案。存储指纹故意同时在localStorage、sessionStorage、IndexedDB和Cookie中扩散标识符。仅清除Cookie会让标识符在其他三个向量中保持完整。在下次访问时,追踪者读取存活的副本并重写Cookie。你必须清除所有网站数据——不只是Cookie——才能删除基于存储的标识符,即便如此,追踪者在你下次访问该网站时也会重新创建它。
无痕或隐私模式能防止存储指纹吗?
部分防止。隐私模式创建一个在隐私窗口关闭时完全清除的全新隔离存储上下文。隐私会话期间写入的任何localStorage、IndexedDB或Cookie都不会持久化到你的主配置文件。然而,在单个隐私会话中,存储指纹正常工作。追踪者仍然可以在同一隐私窗口内的多个标签页中识别你。对于跨会话保护,隐私模式有效——但它不能防止硬件级指纹识别,因为你的GPU、字体和Canvas输出在隐私和普通模式下是相同的。查看 Canvas指纹指南 了解为什么硬件信号更难击败。
localStorage和sessionStorage有什么区别?
两个API暴露相同的接口(setItem、getItem、removeItem),但持久性不同。localStorage持续到明确清除,在浏览器重启后存活,并在同一来源的所有标签页中共享。sessionStorage被隔离到当前标签页,并在标签页关闭时自动删除。出于追踪目的,localStorage是更高价值的向量,因为它在多个会话中存活。sessionStorage主要用于在单次用户旅程中链接页面浏览,而非用于长期识别。
是什么使IndexedDB在追踪方面比localStorage更危险?
IndexedDB支持具有更大存储配额的结构化数据(通常是可用磁盘空间的80%,而localStorage只有几MB)。更重要的是,2025年的IndexedDB排序漏洞证明,即使不读取或写入追踪数据,IndexedDB也可以被利用为侧信道——数据库名称的内部排序本身是一个稳定的标识符,可以被无关的来源观察到。localStorage没有等效的结构导致侧信道。该漏洞已在Firefox 150和Tor Browser 15.0.10中修补。
VPN能防止浏览器存储指纹吗?
不能。VPN通过加密隧道路由你的流量并改变你可见的IP地址,但它无法访问你的浏览器存储。浏览器中运行的JavaScript完全在本地读取和写入localStorage和IndexedDB——读取步骤不涉及任何网络流量。VPN对基于IP的地理定位追踪有效,但对基于存储或硬件的指纹识别提供零保护。在 whatsmy.fyi 上检查你的VPN是否正常工作。
存储指纹与Canvas或WebGL指纹有何关系?
存储指纹和 Canvas指纹 代表追踪谱系的两端。存储指纹是"类Cookie的"——它向你的设备写入内容并读取回来。Canvas和 WebGL指纹 是"无状态的"——它们从硬件特征重建你的身份,而不存储任何内容。商业追踪平台将两种方法叠加:存储给他们一个快速、稳定的ID;硬件指纹让他们即使在完整存储清除后也能重新识别你。两种技术的结合比任何单一技术都更具弹性。
localStorage指纹在GDPR下合法吗?
在欧盟的GDPR和英国的PECR下,访问或存储用户设备上的信息——包括通过localStorage、sessionStorage和IndexedDB——需要知情同意或狭义的合法利益理由。英国ICO的2025年1月草案指南明确将这些API命名为受与Cookie相同规则约束的内容。实际上,许多较小的出版商在没有披露的情况下部署基于localStorage的追踪器,假设这些机制能逃脱Cookie横幅满足的法律要求。这种假设越来越不正确,执法行动已经开始将所有基于存储的追踪与Cookie追踪一致对待。
相关文章
- 什么是浏览器指纹?网站如何在不使用Cookie的情况下追踪你 ——所有指纹信号的完整指南,包括存储和硬件向量
- 什么是Canvas指纹识别?网站如何在不使用Cookie的情况下追踪你 ——HTML5 Canvas API如何从GPU和字体渲染器产生设备唯一的像素哈希
- 什么是WebGL指纹?你的GPU如何识别你的浏览器 ——3D图形API如何暴露你的GPU供应商名称、型号和驱动版本
- 什么是音频指纹?AudioContext如何追踪你的浏览器 ——你设备的音频处理栈如何产生硬件级标识符



