我没有成功使用用户代理切换器和管理器扩展来呈现具有移动友好界面的 Web 应用程序。经过进一步挖掘,我注意到,尽管浏览器通过用户代理字符串将自身标识为移动设备,但 sec-ua-* 标头仍然存在,并将正确的平台泄漏到服务器:
sec-ch-ua:“不是一个品牌”;v =“99”,“Google Chrome”;v =“97”, "Chromium";v="97"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: “窗户”
基于此,我假设应用程序正在将应用程序的桌面版本返回给用户。
是否有任何方法可以抑制浏览器在其请求中发送这些标头(除了使用旧浏览器)?使用 --disable-features=UserAgentClientHint 启动 Chrome 确实禁用了这些标头。
由于 commit
7cb7681
,禁用客户端提示的功能标志消失了(另请参阅问题跟踪器项目#41491818)。我不知道现在有什么好的/用户友好的方法来禁用它 - 至少 - 不是通过配置 Chrome (除了分叉它并删除实现它的位)。
在撰写本文时,Android 中似乎确实有某种机制可以覆盖它们,但我不确定它是如何工作的。相关代码(在撰写本文时锁定到最新提交)位于here。另请参阅相关评论票#4781571。
有趣但不是很有帮助的事实:当(且仅当)您打开开发工具时,您可以在“网络条件”选项卡中欺骗客户端提示(转到“用户代理”部分,然后展开“用户代理客户端提示”部分”)。