网页用户代理

W3C小组备忘草案

关于本文档的更多信息
本版本:
https://www.w3.org/TR/2025/DNOTE-web-user-agents-20251127/
最新发布版本:
https://www.w3.org/TR/web-user-agents/
编辑草案:
https://w3ctag.github.io/user-agents
历史记录:
https://www.w3.org/standards/history/web-user-agents/
反馈:
GitHub
编辑者:
(Google)
Sarven Capadisli (受邀专家)

摘要

网页用户代理包括网页浏览器以及终端用户与网络之间的其他中介。 每个用户代理服务于其用户, 而非其他利益相关方。 用户代理对其用户负有各种责任, 这些责任应通过集体讨论确立, 并体现在用户代理实现的各类标准中。

本文档状态

本节描述了本文档在发表时的状态。当前W3C出版物列表及本技术报告的最新修订版可在W3C标准及草案索引中找到。

本文档由技术架构组 以小组备忘草案的形式发布,使用Note流程。 本文档为草稿, 随时可能被其他文档更新、替换或废弃。 不适宜将本文档作为除开发中工作外的引用来源。 小组备忘草案不代表W3C或其成员的认可。

欢迎对本文件提出反馈和意见。请在本文件的 GitHub 仓库 提交 issue

W3C专利政策不对本文档产生任何授权要求或承诺。

本文档受2025年8月18日W3C流程文档管辖。

1. 受众

本文件面向以下对象:

2. 什么是网页用户代理

网页用户代理 是代表其用户与网站交互的任何软件实体, 包含仅仅渲染网站内容在内, 操作范围超出了实体自身。 在Web规范及本文档的其余部分, 网页用户代理通常简称为“用户代理”, 但在其它领域也存在其它类型的用户代理, 例如在电子邮件场景中的“邮件用户代理”。 一个人在日常生活中可以使用多种不同的用户代理。

最常见的网页用户代理是Web浏览器, 包括能够跟踪跨站点链接的应用内浏览器。 但用户代理还包括 如搜索引擎、语音助手、生成式AI系统等其他工具, 这些工具能够呈现网页内容的片段或摘要, 或协助用户浏览和操作网站。

用户代理的行为并非完全由Web标准甚至通用技术规范限定。 尤其是, 用户代理会根据如何最好地服务其用户来选择实现哪些规范, 并在实施规范时开发专有的用户界面和其它行为。

2.1. 用户代理作为软件组件

作为软件组件,用户代理可以是更大型应用程序的一部分, 并且可以调用实现Web平台或其部分功能的库。

当一个应用明确区分哪些部分属于用户代理 ,哪些部分不属于时, 那么只有那些用户代理部分 ——即浏览代理自身以外内容的部分, 需要遵循用户代理职责。 明确只显示应用自身内容的部分可以自行操作, 但应用仍需 让用户对应用不同部分的预期行为有清晰的认识。 如果内部与外部内容之间的区别不明显——例如 浏览外部内容时应用未显示地址栏或其他来源指示器—— 那么 应用在显示自身内容时也应遵循用户代理职责

类似地,实现Web平台的库 可能并非完整的用户代理。 某些库,如 SFSafariViewControllerAndroid Custom Tabs 承担了实现用户代理职责的责任, 并明确区分所浏览的外部内容与嵌入应用所控制的内容。 这些库属于用户代理

其他库,如 AndroidiOS、 以及 Windows 的 WebView 库, 被设计用于支持多种不同类型的应用。 因为其中一些应用只包含自己的内容, WebView 库本身并不是用户代理, 也不实现用户代理职责

最终,如果嵌入式应用或其任何部分作为用户代理运作,则该应用需遵守用户代理职责。 如果应用仅通过用户代理库浏览外部内容,这会很直接。 开发者在使用非用户代理的WebView实现应用内浏览器时, 更应格外注意遵循用户代理职责

3. 用户代理的职责

每个用户代理服务于其用户(互联网属于终端用户), 而不是服务于其他利益相关方。 用户代理对其用户负有各种 职责, 这些职责应通过集体讨论确立, 并体现在用户代理实现的各类标准中。

3.1. 保护

访问网页应该是安全的。 仅仅访问网页本身, 不应允许该网页更改用户计算机或环境, 比如安装软件或访问硬件。

向站点或其他观察者暴露的任何数据 都应与用户偏好一致, 遵循数据最小化原则。 尤其是,用户代理必须采取行动 限制站点追踪用户活动的可能性 [unsanctioned-tracking]

用户可以选择共享更多信息, 比如填写表单或授予权限。 即便如此,用户代理也必须帮助用户防止受骗,并 清晰地提示当网页试图获取更高权限时。

访问本地文件或其他敏感资源 必须限制在明确、主动的用户操作范围内,且应有适当的警告。

示例:攻击

用户代理需要防止站点上的恶意代码 越过用户代理本身 修改用户计算机或访问其他。 用户代理通过对组件沙盒隔离、 使用内存安全语言、 并配备安全团队响应漏洞来履行这一保护职责。 这些防护措施需要不断进化以应对新威胁。

示例:追踪

如果用户浏览无关的网站时, 可以避免向嵌入的iframe发送共享识别cookie。 向其发送该cookie的浏览器没有履行好保护职责。 但目前无法避免暴露稳定IP地址, 因此这不算违规。

示例:本地文件

用户代理应防止页面访问本地文件, 除非用户明确选择或打开文件。 为此,通常采取如下措施:

但用户依然可以选择共享文件, 如上传或下载。 File System Access 这样的API不违背此职责, 前提是用户有能力做出明智决定

3.2. 诚信

用户代理有责任向用户解释正在发生的操作, 并使用用户能够理解的方式表达。 这些解释应在合适的时机和频率下给出, 以真正帮助用户理解, 而不是干扰或打扰用户。

3.3. 忠诚

用户代理必须将用户权益置于实现者和其他任何方利益之上。

用户代理在收取合理报酬,且事先获得用户同意的前提下, 也可以保持忠诚。

用户代理还可以帮助用户 对网页做出可信承诺以获得对方服务, 获得服务后继续履行承诺也并不构成不忠。

用户代理不得阻碍用户切换至其他用户代理。 例如,不得阻拦、限制或以无法移植的方式存储、导出用户数据。 这包括身份信息、书签、历史记录、密码、以及诸如通行密钥等凭据。 如果用户代理依赖底层操作系统存储凭据, 就需要为用户提供授权方式让其他用户代理访问这些凭据。

4. 致谢

感谢Infra标准 提供了早期的用户代理定义, 以及隐私原则为本文件初版的职责条款提供借鉴。

索引

本规范定义的术语

引用文献定义的术语

参考文献

规范性引用

[DESIGN-PRINCIPLES]
Martin Thomson;Jeffrey Yasskin。Web Platform Design Principles。2025年10月29日。NOTE。URL: https://www.w3.org/TR/design-principles/
[RFC8890]
M. Nottingham。互联网属于终端用户。2020年8月。信息性。URL: https://www.rfc-editor.org/rfc/rfc8890

资料性引用

[CSS-FONTS-5]
Chris Lilley。CSS Fonts Module Level 5。2024年2月6日。WD。URL: https://www.w3.org/TR/css-fonts-5/
[FILE-SYSTEM-ACCESS]
文件系统访问。社群组草案报告。URL: https://wicg.github.io/file-system-access/
[HTML]
Anne van Kesteren等。HTML标准。Living Standard。URL: https://html.spec.whatwg.org/multipage/
[Infra]
Anne van Kesteren;Domenic Denicola。Infra 标准。Living Standard。URL: https://infra.spec.whatwg.org/
[PRIVACY-PRINCIPLES]
Robin Berjon;Jeffrey Yasskin。隐私原则。2025年5月15日。STMT。URL: https://www.w3.org/TR/privacy-principles/
[UNSANCTIONED-TRACKING]
Mark Nottingham。未授权网页追踪。2015年7月17日。TAG Finding。URL: https://www.w3.org/2001/tag/doc/unsanctioned-tracking/
[URL]
Anne van Kesteren。URL标准。Living Standard。URL: https://url.spec.whatwg.org/