首页 文章

为什么用户代理字符串已更改?

提问于
浏览
0

我在调试应用程序时遇到问题 . 在我的应用程序中,我需要确定用户是否在移动设备上,或者不是基于用户代理字符串 .

从日志信息开始,我看到用户代理是“Mozilla / 5.0(iPhone; CPU iPhone OS 11_4_1,如Mac OS X)AppleWebKit / 605.1.15(KHTML,如Gecko)版本/ 11.0 Mobile / 15E148 Safari / 604.1 “,这应该是iOS 11上的Safari 11.然后几分钟后,用户代理信息更改为”Mozilla / 5.0(Macintosh; Intel Mac OS X 10_13_4)AppleWebKit / 605.1.15(KHTML,如Gecko)版本/ 11.1 Safari / 605.1.15“,应该是macOS上的Safari 11.1(High Sierra) . 从tealeaf我看到用户没有更改浏览器或设备 .

所以我的问题是:

  • 是否可以在不更改浏览器和设备的情况下更改用户代理字符串?什么时候?

  • 对于我的情况,为什么会发生?

  • 确定用户是在手机/平板电脑还是台式机上最有效的方法是什么?

谢谢 .

1 回答

  • 0
    • YES . 完全可以在不更改浏览器或设备的情况下操纵用户代理字符串 . 完全欺骗它是可能的(而且非常简单),例如Chrome的 User Agent Switcher . 话虽如此,绝大多数用户都不会去欺骗它 .

    • 考虑到用户代理字符串认为 browser 是相同的,但 not 操作系统...我会假设用户已打开 Device Toolbar 并在 F12 Developer Tools 中启用了 Responsive Mode . 这允许您以不同的宽高比模拟网站的显示,并且在您选择其中一个可用设备时确实操纵用户代理字符串 .

    • 这取决于你究竟在寻找基于设备的不同 logic 究竟是什么,我会推荐一个正则表达式 . 在 DetectMobileBrowsers 有不同编程语言的一些很好的例子 . 如果你正在寻找不同的 display ,我会推荐 media queries . 您可以满足设备的 widthpixel ratio 甚至 orientation . 在 CSS Tricks 有一个很好的常见查询列表 .

相关问题