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

时间:2018-08-27 22:10:47

标签: user-agent

我在调试应用程序时遇到问题。在我的应用程序中,我需要根据用户代理字符串确定用户是否在移动设备上。

从日志信息开始,我看到用户代理是“ 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(High Sierra)上应为Safari 11.1。从Tealeaf中,我看到用户没有更改浏览器或设备。

所以我的问题是:

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

  2. 对于我来说,为什么会发生?

  3. 确定用户是使用手机/平板电脑还是台式机的最可靠方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 。完全有可能在不更改浏览器或设备的情况下操作用户代理字符串。可能会(而且非常琐碎)完全欺骗它,例如使用Chrome的 User Agent Switcher 。话虽如此,绝大多数用户都不会欺骗它。

  2. 考虑到用户代理字符串,认为浏览器是相同的,但是不是操作系统...我认为用户已经打开了Device Toolbar并在 F12 Developer Tools 中启用了Responsive Mode。这样一来,您可以以不同的宽高比模拟网站的显示,并且确实可以在选择可用设备之一时操纵用户代理字符串。

  3. 这取决于您要尝试执行的操作。如果您要根据设备寻找其他逻辑,我建议您使用正则表达式。 DetectMobileBrowsers 中提供了一些使用不同编程语言的出色示例。但是,如果您要查找其他显示,我建议 media queries 。您可以满足widthpixel ratio甚至设备的orientation的需求。 CSS Tricks 上有很多常见查询。