User-Agent字符串
User-Agent字符串是在HTTP协议中使用的一个标头,用于标识请求端的软件环境信息。它告诉服务器发送请求的客户端的操作系统、浏览器类型和版本、硬件平台等信息。 如果你想知道更多关于UA的信息可以看 浏览器野史 —— UserAgent 列传【转载】 - 沉默的博客 (cmsblog.cn)
那么有人就会问了,既然ua可以,告诉服务器发送请求的客户端的操作系统,那应该能够获取Win11的操作系统信息,然而事实却不是这样的,因为us各种历史原因下的产物,微软官方已经正式确定不会更新win11的UA信息,这意味着我们将无法通过UA获取到win11操作系统的信息
既然我们无法通过ua识别win11,那有没有其他办法呢?答案是:有!
使用User-Agent客户端提示检测Windows 11
在 Microsoft Edge (和 Google Chrome) 中,网站可以通过User-Agent客户端提示 (UA-CH) 来区分Windows 11用户和Windows 10用户。 可以在以下 UA-CH 请求标头中找到此信息:
标头字段 | 指示Windows 10的值 | 指示Windows 11的值 |
---|---|---|
Sec-CH-UA-Platform | Windows | Windows |
Sec-CH-UA-Platform-Version | 和 之间的 1.0.0 值 10.0.0 | 13.0.0 及更高版本 |
支持User-Agent客户端提示的浏览器
下表显示了哪些浏览器支持区分Windows 11和Windows 10。
浏览器 | 支持通过User-Agent客户端提示进行区分? |
---|---|
Microsoft Edge 94 | 是 |
Chrome 95 | 是 |
Opera | 是 |
Firefox | 否 |
Internet Explorer 11 | 否 |
用于检测Windows 11的示例代码
以下代码检测Windows 11:
代码语言:javascript复制navigator.userAgentData.getHighEntropyValues(["platformVersion"])
.then(ua => {
if (navigator.userAgentData.platform === "Windows") {
const majorPlatformVersion = parseInt(ua.platformVersion.split('.')[0]);
if (majorPlatformVersion >= 13) {
console.log("Windows 11 or later");
}
else if (majorPlatformVersion > 0) {
console.log("Windows 10");
}
else {
console.log("Before Windows 10");
}
}
else {
console.log("Not running on Windows");
}
});
以上信息来自微软官方文档