Chrome 又一次绕过了你的站点数据清理设置
六年前,独立开发者 Jeff Johnson 发现 Chrome 会豁免 Google 自己的站点数据清理设置,报告后 Google 修复了。六年后,他在 Chrome 152 上再次复现了同样的问题,文章重新登上 HN 首页。有意思的是,这次评论区几乎没聊技术,而是在吵垄断和监管。

六年前,独立开发者 Jeff Johnson 发现 Chrome 会豁免 Google 自己的站点数据清理设置,报告后 Google 修复了。六年后,他在 Chrome 152 上再次复现了同样的问题,文章重新登上 HN 首页。有意思的是,这次评论区几乎没聊技术,而是在吵垄断和监管。我请来老朋友陈嘉澍——在一家头部浏览器团队做了十年存储与隐私工程——一起拆解这 1.2 MB 的残留,到底伤在哪里。
本文由每日自动管线生成:选题与素材来自 Hacker News 公开讨论,访谈内容由 AI 基于原文整理,嘉宾为角色设定,观点不代表任何真实人物。
小听: 嘉澍,今天这件事单看标题不新鲜:Chrome 的某个隐私设置好像又没生效。但它的特殊在于,同样的 bug 六年前就被独立开发者 Jeff Johnson 报告过、Google 也修过,现在又复发了。先帮大家还原一下现场,这次到底发生了什么?
陈嘉澍: 他在两台 Mac 上复现,Chrome 版本是 152.0.7977.83。设置里的默认行为是「关闭所有窗口时删除站点保存的数据」,清理之前存储占用显示 0 B。然后用 Google 做一次搜索、关掉唯一的窗口,www.google.com 的站点数据就出现了,大约 1,216 KB,退出并重启 Chrome 也不消失。删掉数据再走一遍流程,问题照样复现。
小听: 听起来他做了不少排除工作。我猜很多人的第一反应是:他是不是没改默认搜索引擎,所以 Google 有正当理由存数据?

逐个后端打补丁,总有一个被忘掉
陈嘉澍: 这正是他排除的第一个变量:他把默认搜索引擎从 Google 换成了 DuckDuckGo,确认设置本身不是原因。另外他全程没有登录 Chrome,甚至直接禁止了 Chrome 的登录功能。也就是说,这不是账号同步带回来的数据,而是纯粹的本地残留。他查看本地目录,发现留下来的具体是 Cookies、Local Storage 和 Session Storage 三类。
小听: 从工程角度讲,这种「漏删」在浏览器里通常是怎么发生的?站点数据不是一个统一的存储吗?
陈嘉澍: 恰恰不是,这也是这类 bug 复杂的根源。Cookies、Local Storage、Session Storage 各自有独立的存储实现和生命周期,清理动作要把每个后端都遍历到。哪个后端没接上删除逻辑,或者某个内部组件在清理之后又把数据写回去,就会出现残留。六年前那次修复大概率是逐个后端打的补丁,后来某条新代码路径没有继承同样的约束,问题就悄悄回来了。

反垄断有任期,产品每天上线
小听: 说实话,1.2 MB 听起来无伤大雅,普通用户可能根本感知不到。这个问题的严重性到底在哪?
陈嘉澍: 问题从来不是体积,而是用户设下的契约被破坏了。「关闭窗口即删除」是对隐私敏感用户的明确承诺,留下的 Cookies 和 Local Storage 足以做身份识别和跨会话追踪。对随手用浏览器的用户无感,但对刻意选择「不留痕」的人,这是信任模型的直接违约。而且承诺每被违背一次,用户对整个隐私设置面板的信任都会打折——这条会失效,其他设置呢?
小听: 还有一个细节被很多人忽略了:作者观察到,被豁免的好像只有 www.google.com 这一个站点,其他网站的数据都正常清除了。
陈嘉澍: 这是整件事最扎心的地方。如果删除逻辑是随机失效,漏掉的应该是任意站点;偏偏只有自家域名幸存,哪怕真是巧合,公众也难免往别的方向联想。作者本人引用了 Hanlon's razor,倾向用无能而非阴谋来解释。但他的态度也很明确:以 Google 的营收和工程师规模,无能不是借口,QA 该补就得补。
小听: 有意思的是,HN 评论区几乎没人讨论实现细节,前排高赞全在聊政治和垄断。有人说「这届政府根本不认为 Google 是垄断」,你怎么看这种讨论方向?
陈嘉澍: 评论区确实跑题跑得很远,但吵的内容本身有信息量。有人拿 Lina Khan 当例子,马上被其他人纠正了时间线:她是 2021 年 3 月由拜登提名执掌 FTC,2025 年特朗普上任约两周后离任,说她「在特朗普一任期内办成了拆分 Google」是对事实的误读。这场争吵恰恰暴露了一个结构性问题:反垄断的执行节奏跟着政治周期走,而企业的产品行为每天都在发生。指望监管替每个用户守住设置开关,是不现实的。
小听: 作者在文末还顺带吐槽了一件事:未登录状态下,Google 搜索结果的链接都变成了 goto?url= 这样的不透明跳转。这和数据残留是一回事吗?
陈嘉澍: 表面上是两件事,内核是同一个:产品把自己的便利置于用户的知情和控制之上。跳转链接是为了点击追踪,牺牲了 URL 的透明度;数据残留这次更像工程质量问题,但它发生在 Google 自己身上,就很难不让人串联起来看。信任是单调递减的资产,只会被这些细节持续消耗,修复一次只能止损,很难增值。
小听: 最后给做基础软件的工程团队留一句可执行的建议吧。
陈嘉澍: 隐私相关的用户设置必须当成不变量来守护,配上自动化测试,而不是当成一个普通功能。每新增一个存储后端、每改一次会话恢复逻辑,都应该跑一遍「设置删除、执行操作、验证为空」的断言。作者那句改编很精辟:Move slower and don't break things。对浏览器这种基础设施,迭代慢一点的代价,远小于信任崩塌的代价。
这期聊下来,比 bug 本身更值得带走的判断是:隐私设置是用户签下的契约,必须由工程团队用测试守住,而不是寄希望于监管的节奏。信任是单调递减的资产,别让它败给一个本可以写进单测的不变量。本文观点仅代表访谈角色设定,原始讨论见参考链接。