Do Not Track 是一项浏览器隐私功能,通过发送 HTTP 请求头告知网站不要追踪你。 出发点很好——但结果适得其反:开启 DNT 反而可能让你的浏览器更容易被识别, 而不是更难。你现在就可以在 whatsmy.fyi 查看自己的 DNT 状态和完整浏览器指纹。
简要总结
Do Not Track(DNT)通过 HTTP 请求头告知网站你不希望被追踪。大多数网站直接忽视它—— W3C 在 2019 年经过近十年努力后放弃了该标准,因为始终无法达成强制性协议。 更糟糕的是,由于极少数用户会开启 DNT,一旦你启用它,你的浏览器在统计上就变得不寻常, 从而增加了指纹熵,反而让你更容易被识别。其继任者 Global Privacy Control(GPC) 面临着同样的结构性问题。
什么是 Do Not Track(DNT)?
Do Not Track 是一项浏览器设置,会在你发出的每个页面请求中附加一个 HTTP 请求头——DNT: 1。启用后,它向接收服务器表明你希望不被跨网站追踪。 禁用时,浏览器要么发送 DNT: 0(明确允许追踪), 要么完全省略该请求头(未声明偏好)。
JavaScript 可以通过 navigator.doNotTrack 读取同样的偏好设置,返回 "1"、"0" 或 null。 任何网页只需这一个属性,就能读取你的 DNT 偏好——甚至不需要查服务器日志。
这一想法最初由 电子前哨基金会(EFF) 于 2009 年提出,并在 2010 年得到美国联邦贸易委员会的背书。 Firefox 和 Safari 均于 2011 年支持该功能,W3C 也随即组建了追踪保护工作组以推进标准化。 一时间,在线隐私似乎真的有了技术解决方案。
然而事实并非如此。DNT 的失败是一个教科书式案例——一个带着最好意图引入的 浏览器指纹 信号,最终反而成了隐私负担。
DNT 请求头的工作原理
DNT 是纯粹的选择性加入信号。浏览器将其加入 HTTP 请求;服务器读取它, 然后按照自愿标准的要求相应调整行为。 没有任何技术强制手段——它只是一个礼貌的请求,而非技术屏障。
// 启用 DNT 时发送的 HTTP 请求头
DNT: 1
// 在 JavaScript 中读取 DNT 偏好
const dntEnabled = navigator.doNotTrack === '1';
// 如果用户选择退出追踪,返回 true
// 某些浏览器的实现方式略有不同
// (历史遗留的不一致性)
const dnt =
navigator.doNotTrack || // 标准写法
window.doNotTrack || // IE / Edge 旧版
navigator.msDoNotTrack; // 极旧版 IE
// 追踪脚本实际看到的内容
console.log(navigator.doNotTrack);
// "1" → 用户选择退出
// "0" → 用户同意追踪
// null → 未设置偏好该请求头对每台服务器和页面上运行的每个脚本都是可见的,读取成本几乎为零。 问题就在这里:读取它与遵守它在技术上完全无法区分——追踪者可以读取你的 DNT 偏好, 然后照样追踪你。
DNT 为何失败——W3C 为何放弃它
W3C 追踪保护工作组 于 2019 年 1 月宣告解散,近十年的工作未能产出任何可执行的标准。 原因是结构性的:
- 仅靠自愿遵守。 美国、欧盟及其他地区均没有任何法律要求网站遵守 DNT 信号。 数字广告联盟(Digital Advertising Alliance)明确告知成员,他们没有义务遵守。
- 对"追踪"的定义无法达成共识。 各方花费数年争论第一方分析、 欺诈检测和频次控制是否属于追踪,工作组始终未能形成一致意见。
- 浏览器在规范成熟前就仓促上线。 微软在 Internet Explorer 10 中 默认开启 DNT,广告行业随即提出异议——默认开启的偏好无法代表真实的用户选择。
- 主流平台直接忽视它。 Google 从未在其广告基础设施中以任何有意义的方式支持 DNT。 Facebook 废弃了 DNT 支持。大多数广告网络不管 DNT 请求头如何,依然继续追踪。
苹果于 2019 年在 Safari 12.1 中移除了 DNT,理由讽刺而决定性: DNT 请求头本身已经成为一个可用于追踪用户的指纹变量。 Firefox 在 2025 年发布的 135 版本中移除了 DNT 偏好设置界面。 该功能现已成为历史遗迹——部分浏览器中仍技术性存在,但功能上已死。
讽刺之处:DNT 本身就是一个指纹信号
故事在这里开始对那些试图保护自己的用户反戈一击。 浏览器指纹识别通过将许多微小信号组合成唯一标识符来运作。 任何单一信号越不寻常,它向指纹贡献的熵就越多——你也就越容易被识别。
只有极少数用户会开启 DNT。在典型的网站流量中,8% 到 12% 的访客启用了 DNT。 这意味着开启 DNT 会立刻把你划入少数群体。 读取 navigator.doNotTrack 的指纹脚本, 随即就掌握了一条关于你浏览器的特殊且罕见的信息——大多数浏览器并不具备这一特征。
结合操作系统、浏览器版本、已安装字体、屏幕分辨率、时区、语言设置和 GPU 数据, DNT 信号会提高指纹的整体唯一性。 你想隐藏,结果却在挥手示意自己的存在。
这不是假设性担忧。苹果工程团队在移除 Safari 中的 DNT 时明确引用了这一点。W3C 指纹识别指南 明确将用户偏好信号列为指纹攻击面。 研究表明,96% 收到 DNT 请求头的网站,依然继续收集指纹级别的数据。
DNT 采用率与合规率:数据说话
| 指标 | 数值 | 来源 / 备注 |
|---|---|---|
| 采用峰期启用 DNT 的美国成年人比例 | 约 23% | 隐私未来论坛,2012 年 |
| 典型网站流量中启用 DNT 的访客占比 | 8–12% | 广告网络汇总数据,2014–2019 年 |
| 收到 DNT 请求头后仍忽视的网站比例 | 约 96% | 开放大学研究,2018 年 |
| 实现 DNT 合规的主要广告网络数量 | 0 | 数字广告联盟,2019 年 |
| W3C 追踪保护工作组解散年份 | 2019 年 | W3C 公告 |
| 苹果从 Safari 移除 DNT 的年份 | 2019 年(Safari 12.1) | Apple WebKit 更新日志 |
现实中谁在使用 DNT?
遵守 DNT 的网站
少数消费者平台承诺遵守 DNT 信号。Medium 和 Pinterest 支持了 DNT, 对选择退出的用户停止行为追踪。Twitter 于 2012 年宣布有限度的 DNT 合规, 承诺不为启用 DNT 的用户收集第三方网站的浏览数据。
这些承诺之所以值得关注,恰恰是因为它们极为罕见。 没有任何广告网络或主要数据经纪商实现了 DNT 合规。 采取行动的公司往往具有基于订阅的收入模式,追踪并非其核心业务。
忽视 DNT 的网站
Google 从未在其广告基础设施中以任何有意义的方式支持 DNT,尽管 Chrome 提供了该选项。 Facebook 于 2018 年正式放弃 DNT 承诺。大多数广告技术平台—— 包括支撑程序化广告的实时竞价基础设施——仍在运作,从未考虑 DNT。
欺诈检测与安全
Fingerprint (前身为 FingerprintJS)等安全平台将浏览器信号用于欺诈检测和机器人防护。 对这些平台而言,DNT 请求头只是数十个数据点之一——它会影响指纹,但不会让浏览器免于分析。 GDPR 的合法利益条款通常涵盖欺诈预防,即便设置了 DNT 也不例外。
Global Privacy Control:DNT 的继任者
Global Privacy Control(GPC)是 2020 年推出的更新隐私信号, 发送 Sec-GPC: 1 HTTP 请求头。与 DNT 不同,GPC 在部分司法管辖区具有法律效力: 加州的 CCPA 和 CPRA 将 GPC 认定为有效的个人数据销售退出信号, 加州总检察长已就忽视 GPC 的网站采取执法行动。
然而,GPC 面临与 DNT 相同的根本性指纹识别问题。navigator.globalPrivacyControl 属性可被页面上任何 JavaScript 读取, 而启用 GPC 本身就足够不寻常,足以向指纹添加熵。 这一模式反复出现:旨在减少追踪的隐私信号,本身反而成为追踪信号。
Brave 浏览器和启用了 privacy.resistFingerprinting 的 Firefox 均支持 GPC。 DuckDuckGo 的浏览器和浏览器扩展也默认发送 GPC。 与 DNT 相比,GPC 的执法力度和采用率都有实质性进步, 但"表达隐私偏好"与"因该偏好而被识别"之间的根本张力仍未解决。
如何保护自己
最有效的方法能够避免 DNT 陷入的指纹陷阱——它们让你的浏览器趋于"标准化", 而不是标记为异常。
- 不要依赖 DNT:在普通浏览器上启用 DNT 目前几乎无法提供有意义的隐私保护, 甚至可能略微增加指纹唯一性。如果你的浏览器仍然暴露此设置,建议关闭它。
- 使用 Brave 浏览器:Brave 通过 Farbling 技术, 对每个会话和每个网站的指纹信号进行随机化, 使追踪变得不可靠,同时不会将你的浏览器标记为异常。 参见 Canvas 指纹识别指南 了解 Farbling 的详细工作原理。
- 使用 Tor Browser 实现最高匿名性:Tor 对所有指纹信号进行标准化—— 包括
navigator.doNotTrack——使所有 Tor 用户看起来完全相同。 代价是浏览速度较慢。 - 在 Firefox 中启用
privacy.resistFingerprinting:在about:config中设置该标志,可以标准化包括 DNT、User Agent、 屏幕尺寸和 Canvas 输出在内的众多指纹信号。 这是主流浏览器中最有效的指纹保护手段。 - 使用 EFF 的 Privacy Badger:由于网站不会自愿遵守 DNT,EFF 的 Privacy Badger 扩展 通过行为分析检测并拦截追踪器——它在技术层面强制执行隐私保护, 而不是依赖追踪者可以直接忽视的信号。
- 了解你暴露了哪些信号:在 whatsmy.fyi 查看当前浏览器指纹,包括 DNT 状态在内,每个你访问的网站都能看到这些信息。
常见问题
开启 Do Not Track 真的能阻止追踪吗?
在实践中,不能。DNT 是一个自愿信号,没有任何技术强制手段。研究发现, 约 96% 收到 DNT 请求头的网站仍继续收集追踪数据。 W3C 于 2019 年正式放弃该标准,未能达成任何可执行协议。 启用 DNT 在数字世界的意义,就如同在信箱上贴一张"请勿投放垃圾邮件"的贴纸—— 礼貌,但在大多数国家没有法律或技术约束力。
苹果为何从 Safari 中移除 Do Not Track?
苹果于 2019 年 3 月在 Safari 12.1 中移除 DNT,明确引用的理由是: DNT 设置本身已成为一个指纹变量。 由于只有少数用户启用 DNT,设置了该选项会让你的浏览器在统计上变得独特。 苹果认为,保留 DNT 的隐私代价——增加指纹熵——超过了被忽视的信号所带来的任何收益。
DNT 和 Global Privacy Control 有什么区别?
两者都是表达追踪退出偏好的 HTTP 请求头,关键区别在于法律执行力: 加州的 CCPA 和 CPRA 明确将 GPC(Sec-GPC: 1)认定为有效的退出信号, 使不合规在加州具有法律可诉性。DNT 在任何地方都没有法律支持。 GPC 在注重隐私的浏览器中的采用率,也比 DNT 在鼎盛时期更好。
网站能在我访问之前读取我的 DNT 偏好吗?
不能。DNT 作为 HTTP 请求头随每个浏览器请求发送, 只有接收该特定请求的服务器才能访问它。 然而,任何加载在你访问的页面上的 JavaScript 都可以立即读取 navigator.doNotTrack, 无需任何用户交互——与指纹识别中使用的任何其他浏览器属性一样。
DNT 会影响 GDPR 的同意要求吗?
不会。在 GDPR 框架下,处理个人数据的法律依据与任何浏览器级别的信号是分离的。 GDPR 要求明确同意(通过 Cookie 横幅或等效机制)、合法利益评估,或其他特定法律依据。 DNT 请求头既不构成有效的 GDPR 同意撤回,也无法覆盖合法利益依据。 GDPR 合规需要合规的同意机制,而非浏览器偏好请求头。
关闭 DNT 能让我更难被指纹识别吗?
在边际上,是的——因为大多数浏览器不发送 DNT,禁用(或省略)它会让这一信号的区分度降低。 但影响微乎其微。你的 浏览器指纹 由数十个信号构成——屏幕分辨率、时区、GPU 数据、Canvas 输出、音频指纹等等。单独关闭 DNT,与使用 Brave 或在 Firefox 中启用 privacy.resistFingerprinting相比,实际效果可以忽略不计。
Global Privacy Control(GPC)也存在指纹识别风险吗?
是的,出于同样的逻辑。navigator.globalPrivacyControl 是一个布尔属性, 页面上的任何脚本都可以读取,而将其设置为 true 的情况相当罕见—— 只有明确支持 GPC 的浏览器(Brave、启用了该标志的 Firefox、DuckDuckGo)才会发送它。 GPC 比 DNT 曾经拥有更强的法律支持,因此权衡更为有利, 但底层指纹暴露风险依然存在。 Brave 等浏览器通过同时标准化众多信号来缓解这一问题, 而不是单独暴露一个不寻常的偏好。
相关文章
- 什么是浏览器指纹?网站如何在没有 Cookie 的情况下追踪你 — 所有指纹信号如何组合成唯一标识符的完整指南
- 什么是浏览器语言指纹?你的语言设置如何追踪你 — 另一个"偏好信号"如何成为追踪载体
- 什么是 Canvas 指纹?网站如何在没有 Cookie 的情况下追踪你 — DNT 无法防御的高熵 GPU 渲染信号
- 什么是音频指纹?AudioContext 如何追踪你的浏览器 — 你的设备音频堆栈如何产生唯一标识符


