用户代理缩减旨在通过将 User-Agent (UA) 字符串中的信息仅缩减为浏览器的品牌和重要版本、桌面版或移动版以及其所运行的平台,从而减少被动式数字“指纹”收集途径。目前,UA 字符串会在每个 HTTP 请求中共享,并在 JavaScript 中公开给浏览器加载的所有资源。其中包含有关浏览器、其所运行平台及其功能的重要信息。User-Agent 客户端提示 (UA-CH) 可以提供与完整 UA 字符串相同的信息,同时允许网站仅请求所需的 UA 信息。
从 Chrome 95 Beta 版开始,我们将针对缩减用户代理功能推出源代码测试,以便网站立即选择接收经过缩减的 UA 字符串。这样,网站便可以在缩减 UA 成为 Chrome 中的默认行为之前发现并解决问题(缩减计划于 2022 年第 2 季度开始)。如果您想在该功能面向稳定版用户发布之前,先在 95 位 Beta 版用户中测试该来源测试,请务必在 Chrome 95 发布日期(目前计划为 2021 年 10 月 19 日)之前选择加入测试并进行测试。
下文简要介绍了来源测试以及预期结果。一如既往,我们欢迎您在整个测试期间通过 UA 减少 GitHub 代码库提供反馈或提出任何问题。
什么是 User-Agent?
User-Agent (UA) 字符串会在每个 HTTP 请求中共享,并在 JavaScript 中公开给浏览器加载的所有资源。目前,它包含有关浏览器及其所运行平台的重要信息。
为什么要缩减用户代理?
用户代理缩减是一项计划,旨在减少 Chrome 浏览器中的被动式数字“指纹”收集途径,该计划于 2020 年 1 月首次宣布。通过将 UA 字符串中的信息仅限于浏览器的品牌和重要版本、桌面设备或移动设备的区别以及其所运行的平台,可以更难地识别个别用户。
这对 Web 开发者意味着什么?
网站应做好准备,以接收经过缩减的 UA 字符串,并考虑参与来源测试(详见下文)。缩减后的用户代理值将显示在以下位置:
User-Agent
HTTP 请求标头navigator.userAgent
JavaScript Getternavigator.platform
JavaScript Getternavigator.appVersion
JavaScript Getter
如需接收比经过缩减的 User-Agent 共享的更多客户端信息,网站需要迁移到新的 User-Agent Client Hints API。如需详细了解迁移策略,请参阅迁移到 User-Agent Client Hints。
用户代理缩减计划目前不包括 iOS 和 WebView,因此这些平台将继续获取完整的用户代理字符串。主要原因是这些平台尚未实现 User-Agent Client Hints。
此源代码试用功能如何运作?
此来源试用与标准来源试用略有不同。标准来源试用版只能控制响应中的行为(例如,控制对响应 JavaScript 中的 API 的访问)。在本次试用中,我们的目标不仅是修改 Javascript API 中提供的 UA 字符串,还要修改 HTTP 请求中发送的 User-Agent 标头。
为此,我们定义了一个名为 Sec-CH-UA-Reduced
的临时客户端提示,如果请求中存在该提示,则表示 User-Agent 标头值包含经过缩减的 UA 字符串。只有在来源试用令牌有效时,系统才会发送 Sec-CH-UA-Reduced
客户端提示(以及经过缩减的 UA 字符串),并且在来源试用期结束后,Sec-CH-UA-Reduced
客户端提示将失效。请注意,除非您设置了 Critical-CH
header
,否则第一个导航请求仍会收到未缩减的 User-Agent 字符串。
发送到同一来源的子资源请求会自动发送与发送的顶级请求相同的 User-Agent 字符串。发送到第三方来源的子资源请求也会发送与顶级请求相同的 User-Agent 字符串,包括缩减后的 UA 字符串(如果来源试用令牌有效),前提是权限政策允许。
如何参与用户代理缩减来源试用?
如需注册源试用并为您的网域获取令牌,请访问“用户代理字符串缩短”试用页面。
更新您的 HTTP 响应标头:
- 将
Origin-Trial: <ORIGIN TRIAL TOKEN>
添加到 HTTP 响应标头中,其中 <ORIGIN TRIAL TOKEN
> 包含您在注册源代码试用版时获得的令牌。 - 将
Accept-CH: Sec-CH-UA-Reduced
添加到 HTTP 响应标头。 - 设置
Accept-CH
只会导致在向来源发出后续请求时发送经过缩减的用户代理字符串;如需使用经过缩减的用户代理字符串重新发送首次导航请求,请在 HTTP 响应标头中添加Critical-CH: Sec-CH-UA-Reduced
,以及Accept-CH
和Origin-Trial
标头。 - 注意:如果响应标头包含有效的
Origin-Trial
令牌和Accept-CH: Sec-CH-UA-Reduced
,则所有子资源请求(例如图片或样式表)和子导航(例如 iframe)都会发送经过缩减的 UA 字符串,即使这些请求的来源未注册参与来源试用计划也是如此。
- 将
在 Chrome M95(或更高版本)中加载您的网站,然后开始接收经过缩减的 UA 字符串。
如有任何问题或反馈,请提交至 UA 减少功能的 GitHub 代码库。
如需查看源起试用(以及源代码)的简单演示,请访问 https://uar-ot.glitch.me/。
如何以第三方嵌入内容的身份参与源试用?
从 Chrome 96 开始,第三方嵌入内容(例如其他网站中的 iframe)无需注册顶级网站即可参与来源试用。
如需注册为第三方嵌入,请执行以下操作:
- 访问“减少用户代理”试用版,然后点击注册。
- 创建令牌时,请务必选中
Third-party matching
复选框。 - 如需从第三方嵌入内容接收经过缩减的 User-Agent 标头,请更新 HTTP 响应标头。
- 如需在 JavaScript API 中接收经过缩减的 User-Agent 字符串,必须通过 JavaScript 注入试用令牌。
关于在第三方嵌入代码上运行来源试用的一些重要注意事项:
+ 无法为第三方嵌入代码指定 Critical-CH
,因此首次导航不会发送经过缩减的 UA 字符串,但第三方嵌入代码的子资源请求会发送经过缩减的 UA 字符串。
+ 如果第三方嵌入来源的来源试用已通过验证,则在顶级导航中向同一来源发出的后续请求将发送经过缩减的 UA 字符串。因此,建议您同时逐步增加对顶级来源和嵌入请求的来源试用参与度。+ 如果用户代理已停用第三方 Cookie,则来源试用版不适用于第三方嵌入请求中的 User-Agent
标头,但 Javascript API 仍会获取经过缩减的 UA 字符串。
如何验证来源试用版是否正常运行?
如需验证来源试用版是否正常运行,请检查请求标头,并确保以下各项:
- User-Agent 标头包含缩减后的版本。请参阅经过缩减的 UA 字符串示例列表。最简单的分辨方法是,Chrome 次要版本字符串包含
0.0.0
。 Sec-CH-UA-Reduced
标头设置为?1
。
包含来源试用令牌的初始响应的标头应如下所示:

包含缩减后的 UA 字符串的后续请求标头应如下所示:

如何停止参与用户代理缩减来源试用?
在试用期间,您可以随时停止参与并接收完整的 User-Agent 字符串。如要停止参与,请执行以下操作:
- 在 HTTP 响应中发送
Accept-CH
标头,该标头不包含Sec-CH-UA-Reduced
。注意:如果您的网站未请求任何其他客户端提示,则使用空值的Accept-CH
是实现此目的的有效方法。 - 从 HTTP 响应中移除用户代理缩减试用版的
Origin-Trial
标头。 - 如果已设置,请从 HTTP 响应的
Critical-CH
标头中移除Sec-CH-UA-Reduced
。
原始试用期会持续多长时间?
UA 减少源试用将至少持续 6 个月,相当于大约 6 个 Chrome 里程碑。源试用将在 M95 中推出,并在 M101 之前结束。届时,Chrome 将评估源试用中的反馈,然后再根据发布计划分阶段发送经过缩减的 User-Agent 字符串。如果某个网站需要更长的时间,可以选择参与后续的弃用来源试用计划,这样他们至少还能再使用完整的 UA 字符串 6 个月。废弃计划试行版准备就绪后,我们会发布有关该计划的更多详细信息。
如何分享用户代理缩减来源试用计划的反馈?
如有任何问题或反馈,请提交至 UA 减少功能的 GitHub 代码库。