网页用户代理

W3C小组备忘草案,

关于本文档的更多信息
本版本:
https://www.w3.org/TR/2026/DNOTE-web-user-agents-20261008/
最新发布版本:
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 (受邀专家)

摘要

Web 用户代理既包括 Web 浏览器,也包括介于最终用户与 Web 之间的其他中介。 每个用户代理都为其用户服务, 而不是为其他任何利益相关方服务。 用户代理对其用户负有各种义务, 这些义务通过集体讨论确立, 并体现在用户代理所实现的各种标准中。

本文档状态

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

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

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

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

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

1. 介绍

人们通过用户代理体验 Web: 代表使用者检索、呈现 Web 内容并对其执行操作的软件。 Web 浏览器是最为人熟知的例子, 但还有各种其他软件扮演着相同的角色。 “代理”一词并非偶然: 用户代理为其用户服务, 当用户的利益与另一方的利益发生冲突时, 它会优先服务于用户 。

本文档描述了什么样的软件才是“用户代理”, 以及用户代理对其用户负有的职责: 保护、诚实和忠诚。 这些职责并非旨在作为独立的要求, 而是应通过社区讨论来确立, 并体现在用户代理所实现的标准中。

本文档面向:

2. 什么是网页用户代理

一个用户代理,一般来说,是任何代表用户与其他实体交互的软件实体。 用户代理包括许多操作系统;电子邮件客户端;PDF、电子书和图片浏览器; 凭证管理器,包括数字钱包;以及许多其他类型的软件。

网页用户代理 是任何代表其用户与网站进行交互的软件实体, 包括仅用于渲染网站内容, 或执行用户请求或授权的操作。 在网页规范和本文档的其他部分中, 网页用户代理通常简称为“用户代理”。 若有混淆之虞,可使用全称。 一个人在日常生活中可以使用多种不同的用户代理。

最常见的 Web 用户代理类型是 Web 浏览器——包括能够访问跨站点链接的应用内浏览器 (任何能够加载 任意内容的产品都是 Web 浏览器)。 不过,用户代理还包括其他工具,例如 搜索引擎、语音驱动的助手和生成式 AI 系统, 它们会展示网站内容的片段或摘要, 帮助用户浏览网站并与网站交互, 或代表用户执行自动化操作。

用户代理的行为并非完全由网页标准 或甚至技术规范所定义。 尤其是, 用户代理会选择实现哪些规范以最好地服务其用户, 并且会在所实现规范的基础上,实施专有的用户界面和其他行为。

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

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

当应用明确区分 其中属于用户 代理的部分与不属于用户代理的部分时, 那么只有其中的用户代理部分, 即浏览用户代理自身之外内容的部分, 才需要遵守用户 代理职责。 明确仅用于显示应用自身内容的部分 可以代表应用自身行事, 但应用仍然需要 让用户清楚地了解 应当预期应用不同部分会有怎样的行为。 如果内部内容与外部内容之间的区分过于微弱——例如 应用在浏览外部内容时不显示地址栏 或其他用于指示内容来源的标识——那么 应用在显示自身内容时也应遵守用户代理职责。

类似地,实现 Web 平台的库 是否属于完整的用户代理,取决于它 所执行的操作。 有些库,例如 SFSafariViewController 和 Android Custom Tabs 承担了实现用户代理职责的责任, 并负责明确区分其浏览的外部内容 与嵌入应用所控制的内容。 这些库属于用户代理。

其他库,例如 Android、 iOS 和 Windows WebView 库, 被设计用于支持多种类型的应用。 由于其中一些应用仅包含自身的内容, WebView 库本身并不旨在成为用户代理, 并且它们不会实现用户代理职责。

归根结底,嵌入应用有责任 遵守用户代理 职责, 如果该应用或其任何部分充当用户 代理。 如果应用仅通过用户代理库浏览外部内容,这一点可以很直接地做到。 开发者在使用非用户代理 WebView 实现应用内浏览器时, 需要格外注意遵守用户代理 职责。

3. 用户代理的职责

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

3.1. 保护

访问网页应该是安全的。 访问页面本身不会 让页面更改用户的计算机或环境, 例如安装软件或访问硬件。

向网站或其他观察者透露的任何数据 都应符合用户的偏好, 并遵循数据 最小化原则。 特别是,用户代理会采取措施 限制网站跟踪用户活动的可能性 [unsanctioned-tracking]。

用户可以选择共享更多 信息, 例如填写表单或授予权限。 即便如此,用户代理也会帮助用户避免受到欺骗,并 在页面尝试获取更高权限的访问时明确发出提示。

示例:多个权限

当页面请求多个权限时, 为了实现知情同意,用户代理需要确保 用户可以授予所请求权限的一个子集, 并且用户知晓其所授予的完整权限集合。

示例:攻击

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

示例:追踪

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

示例:本地文件

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

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

示例:风险页面

用户代理应尝试识别会攻击其访问者的页面。 当用户开始访问此类页面时, 用户代理可以尝试防止损害, 例如阻止访问或警告用户。

3.2. 诚信

用户代理在 Web 与其用户之间发挥中介作用, 以用户能够理解的形式解释正在发生的事情。 当用户代理自动执行操作或代表用户执行操作时,它会清楚地传达这些 操作及其后果。当用户代理转换内容或代表用户执行操作时,若其采用的 方式不易被用户察觉,它会以有意义的方式呈现其所依据的来源、 所执行的操作以及这些操作的结果。

用户代理可以采用多种方式进行说明,包括 文本、权限提示、指示器、预览以及其他界面元素。 应考虑这些元素的位置,以及是否有任何内容需要强调。

示例:连接安全性

一个典型的例子是用户代理指示网站是否通过加密连接提供。 这种方式随着时间不断演变,从使用破损的锁形图标显示不安全的网站, 到一些用户代理直接在 URL 栏中显示“不安全”文本。

示例:隐私指示器

诸如 媒体捕获和流之类的规范, 包含 隐私指示器 要求, 这些要求要求用户代理说明网站某些特定类型的行为, 但当用户需要了解其他行为时,也期望用户代理使用相同的技术, 即使规范并未特别指出该行为。

诚实的用户代理会积极努力向其用户呈现事实。 它不仅仅是不说谎。 它的说明 会清楚地反映当前状态和可能的后果, 避免使用委婉或含糊的表达, 并在敏感活动发生时使其显而易见。

用户代理选择何时以及多频繁地显示这些说明, 使说明在有帮助时出现并起到告知作用,而不是造成干扰。 用户代理确保用户能够控制是否以及何时作出决定。

示例:长期权限

如果网站正在使用地理位置或音频录制之类的长期权限, 用户代理可以通过在 URL 栏中显示指示器图标来说明正在发生的事情。

示例:清晰传达

如果用户代理说服用户向浏览器 (而不是某个特定网站)提供账户信息,却又悄然默认将这些信息用于 跟踪或广告定向等其他目的,那么它就没有做到诚实。用户 代理需要清楚地说明存在权衡取舍之处。

3.3. 忠诚

用户代理将其用户的利益置于 其实现者的利益之上, 也置于任何其他方的利益之上。

忠诚义务同样适用, 当提供用户代理的组织 参与的决策会塑造用户代理的能力 或限制用户未来的选择时。 由于用户在这些决策中可能未得到充分代表, 忠诚要求这些组织采取合理措施 来识别并代表多样化的用户利益, 同时不将自身视为用户的唯一代表。

用户代理可以为其服务收取费用, 而不损害其忠诚义务。 收取费用并不会改变其忠诚义务所针对的对象, 即使用户只是被动接受了这种安排, 例如预安装的默认设置: 它应忠于用户,而不是任何付费方。

用户代理也可以帮助其用户 向页面作出可信承诺。 可信承诺是对用户未来选择的有意限制, 页面要求用户接受这种限制后才提供服务。 在获得服务后继续履行该承诺,并不违背对用户的忠诚。 忠于用户的承诺仅约束对这些服务的使用, 而不约束用户的其他数据、设置或选择。 用户仍然可以放弃该服务并清除自己的数据, 而不会产生任何进一步的后果。

用户代理不会阻碍其用户切换到另一个用户代理。

示例:数据可移植性

用户代理不会以妨碍可移植性的方式阻止访问、导出或存储用户数据。 这包括身份信息、书签、历史记录、密码以及通行密钥等凭据。 如果用户代理依赖底层的 OS 来存储 凭据, 则需要提供一种方式,让用户能够允许其他用户代理访问这些凭据。

4. 致谢

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

索引

本规范定义的术语

引用文献定义的术语

参考文献

规范性引用

[CREDENTIAL-MANAGEMENT-1]
Nina Satragno; Marcos Caceres. 凭据 管理第 1 级. 2026 年 9 月 3 日. 工作草案. URL: https://www.w3.org/TR/credential-management-1/
[DESIGN-PRINCIPLES]
Jeffrey Yasskin. Web 平台设计 原则. 2026 年 9 月 14 日. 说明. URL: https://www.w3.org/TR/design-principles/
[EVERGREEN-WEB]
Hadley Beeman. 常青 Web. 2017 年 2 月 9 日. TAG 结论. URL: https://www.w3.org/2001/tag/doc/evergreen-web/
[RFC8890]
M. Nottingham. 互联网服务于最终 用户. 2020 年 8 月. 信息类. URL: https://www.rfc-editor.org/info/rfc8890/

资料性引用

[CSS-FONTS-5]
Chris Lilley. CSS 字体模块第 5 级. 2026 年 9 月 13 日. 工作草案. URL: https://www.w3.org/TR/css-fonts-5/
[FILE-SYSTEM-ACCESS]
文件系统访问. 社区 组报告草案. URL: https://wicg.github.io/file-system-access/
[HTML]
Anne van Kesteren; et al. HTML 标准. 现行标准. URL: https://html.spec.whatwg.org/multipage/
[Infra]
Anne van Kesteren; Domenic Denicola. 基础设施 标准. 现行标准. URL: https://infra.spec.whatwg.org/
[MEDIACAPTURE-STREAMS]
Cullen Jennings; et al. 媒体捕获和 流. 2025 年 10 月 9 日. 候选推荐草案. URL: https://www.w3.org/TR/mediacapture-streams/
[PRIVACY-PRINCIPLES]
Robin Berjon; Jeffrey Yasskin. 隐私 原则. 2025 年 5 月 15 日. 声明. URL: https://www.w3.org/TR/privacy-principles/
[UNSANCTIONED-TRACKING]
Mark Nottingham. 未经许可的 Web 跟踪. 2015 年 7 月 17 日. TAG 结论. URL: https://www.w3.org/2001/tag/doc/unsanctioned-tracking/
[URL]
Anne van Kesteren. URL 标准. 现行标准. URL: https://url.spec.whatwg.org/