漫谈 Windows 11 的 UserAgent

💡 原文中文,约3500字,阅读约需9分钟。
📝

内容提要

最近对与WordPress相关的内容进行了优化,修复了一些插件的错误。修复了两个插件:Clean Archives和Simple microblogging【增强版】。解决了WP-UserAgent无法识别Windows 11的问题。提供了判断操作系统的JavaScript代码。通过添加隐藏的input和加载JavaScript代码来识别Windows 11系统。修复插件下载需要评论并审核通过。

🔎

延伸解读

Windows 11 识别难题的根源

微软已明确表示,User-Agent 字符串不再区分 Windows 11 和 Windows 10,也不区分 CPU 架构。这意味着依赖传统 UA 检测的插件(如 WP-UserAgent)无法自动识别 Windows 11。文章引用微软文档指出,只有通过 JavaScript 的 navigator.userAgentData.getHighEntropyValues 方法才能获取平台版本,从而判断是否为 Windows 11。这解释了为何需要额外的前端检测和后台处理。

前端检测与后端替换的配合

文章提出的方案结合了前端 JavaScript 和后端 PHP:在评论表单中插入隐藏字段,通过 JS 检测 Windows 11 并填充该字段,提交时利用 pre_comment_user_agent 钩子将 UA 中的“Windows 10”替换为“Windows 11”。最后修改 WP-UserAgent 插件,使其能识别替换后的 UA。这种分层处理解决了 UA 本身不更新的问题,但依赖于用户浏览器支持高熵值 API。

方案的有效性与限制

该方案能修正通过评论表单提交的 UA,但文章指出,直接从管理后台发布的评论无法修正,因为不会触发前端检测。此外,如果浏览器不支持 navigator.userAgentData,则无法识别 Windows 11,只能回退到原有逻辑。因此,该方案并非完美,但在大多数访客通过前端评论的场景下已足够实用。

❓

Q&A

如何解决WP-UserAgent无法识别Windows 11的问题?

可以通过添加JavaScript代码和隐藏的input字段来识别Windows 11,并在评论提交时替换用户代理字符串。

最近修复了哪些WordPress插件?

最近修复了Clean Archives和Simple microblogging【增强版】两个插件。

如何判断操作系统版本的JavaScript代码是什么?

可以使用navigator.userAgentData.getHighEntropyValues方法来判断操作系统版本。

为什么User-Agent字符串无法区分Windows 11和Windows 10?

因为Windows 11之后,User-Agent字符串不会更新操作系统版本的信息。

如何在WordPress中添加自定义字段以识别Windows 11?

可以在评论表单中添加一个隐藏的input字段,并使用JavaScript自动填充该字段的值。

修复插件下载需要什么条件?

修复插件下载需要发表评论并审核通过后才能查看。

🏷️

标签

➡️

继续阅读