用户代理客户端提示 API

实验性: 这是一个 实验性技术
在生产环境中使用此功能之前,请仔细查看 浏览器兼容性表

用户代理客户端提示 API 扩展了 客户端提示,提供了一种通过用户代理响应和请求标头以及 JavaScript API 公开浏览器和平台信息的方式。

概念和使用

解析用户代理字符串历来是获取有关用户浏览器或设备信息的方法。典型的用户代理字符串类似于以下示例,标识在 Windows 上运行的 Chrome 92

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36

用户代理客户端提示旨在通过强制执行服务器请求一组信息,浏览器决定返回什么信息的模型,以更注重隐私的方式提供此信息。这种方法意味着用户代理可以提供设置,允许用户隐藏可能通过此类请求对他们进行指纹识别的某些信息。

为了决定返回什么,通过此 API 访问的信息被分为两组 - 低熵高熵 提示。低熵提示是指那些不会泄露太多信息的信息,API 使这些提示在每次请求中都易于访问。高熵提示可能泄露更多信息,因此它们被限制在浏览器可以决定是否提供它们的方式。此决定可能基于用户偏好,或在权限请求后进行。

用户代理客户端提示的用例

潜在用例包括

  • 通过识别用户的浏览器缺少某些 Web 平台功能,为用户提供定制的 polyfill。
  • 解决浏览器错误。
  • 记录浏览器分析数据。
  • 根据用户代理信息调整内容。这包括向移动设备提供不同的内容,特别是识别为低功耗的设备。它可能还包括调整设计以将界面定制到用户的操作系统,或提供指向操作系统特定界面的链接。
  • 作为一项安全功能,当用户从不同的浏览器或设备登录时提供通知。
  • 在提供下载的网站上提供正确的二进制可执行文件。
  • 收集有关浏览器和设备的信息以识别应用程序错误。
  • 阻止垃圾邮件发送者、机器人和爬虫。

接口

提供属性和方法以访问有关用户浏览器和操作系统的更多信息。

对其他接口的扩展

返回一个 NavigatorUAData 对象,它提供对有关用户浏览器和操作系统的更多信息的访问。

WorkerNavigator.userAgentData 只读

返回一个 NavigatorUAData 对象,它提供对有关用户浏览器和操作系统的更多信息的访问。

示例

获取品牌

以下示例将 NavigatorUAData.brands 的值打印到控制台。

js
console.log(navigator.userAgentData.brands);

返回高熵值

在以下示例中,使用 NavigatorUAData.getHighEntropyValues() 方法请求一些提示。当 promise 解析时,此信息将被打印到控制台。

js
navigator.userAgentData
  .getHighEntropyValues([
    "architecture",
    "model",
    "platform",
    "platformVersion",
    "fullVersionList",
  ])
  .then((ua) => {
    console.log(ua);
  });

规范

规范
用户代理客户端提示

浏览器兼容性

api.NavigatorUAData

BCD 表格仅在浏览器中加载

api.Navigator.userAgentData

BCD 表格仅在浏览器中加载

api.WorkerNavigator.userAgentData

BCD 表格仅在浏览器中加载

另请参阅