如何在 JavaScript 中检测 macOS Big Sur and/or Monterey?

How to Detect macOS Big Sur and/or Monterey in JavaScript?

我 运行宁 macOS Monterey (12.2) 与 Safari 15.3。我正在尝试在 Safari(或 Chrome)中使用 JavaScript 以编程方式 确定安装的 macOS 版本。

当我运行以下命令时:

var nAgt = navigator.userAgent;

我得到以下结果:

野生动物园

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko ) Version/15.3 Safari/605.1.15

Google Chrome

Mozilla/5.0(Macintosh;英特尔 Mac OS X10_15_7) AppleWebKit/537.36(KHTML,如 Gecko)Chrome/96.0.4664.110 Safari/537.36

为什么我会看到 10_15_7?我不应该在某处看到 12_2 吗?

感谢@Quentin ...如果我理解正确的话,似乎无法再通过 UserAgent 获得更新的 macOS 系统的准确报告。

  • 似乎世界上很多人都简单地假设它将永远 macOS 10.xx 因此许多网站无法处理 macOS 11.xxmacOS 12.xx 响应。

  • 似乎还希望隐藏 OS 的潜在细节,以防止那些可能将其用于恶意“指纹识别目的”的人.

用户代理字符串在 Mac OS 和 Windows (11) 的未来版本中不再可靠。您应该查看 javascript 的客户端提示 API。上下文和未来解决方案的一些参考:

https://www.otsukare.info/2021/02/15/capping-macos-user-agent

https://help.duo.com/s/article/6627?language=en_US

https://web.dev/user-agent-client-hints/

https://browserleaks.com/client-hints

新的 API 并不适用于所有浏览器。因此,在世界赶上之前,检测新的 OSes 是最大的努力。