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

问题描述 投票:0回答:1

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

从日志信息开始,我看到用户代理是“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. 是否可以在不更改浏览器和设备的情况下更改用户代理字符串?什么时候?
  2. 对于我的情况,为什么会发生?
  3. 确定用户是在手机/平板电脑还是台式机上最有效的方法是什么?

谢谢。

user-agent
1个回答
0
投票
  1. 是。完全可以在不更改浏览器或设备的情况下操纵用户代理字符串。完全欺骗它是可能的(而且非常简单),例如使用User Agent Switcher for Chrome。话虽如此,绝大多数用户都不会去欺骗它。
  2. 考虑到用户代理字符串认为浏览器是相同的,但不是操作系统...我会假设用户已打开Device Toolbar并启用Responsive Mode中的F12 Developer Tools。这允许您以不同的宽高比模拟网站的显示,并且在您选择其中一个可用设备时确实操纵用户代理字符串。
  3. 这取决于你究竟想做什么。如果你正在寻找基于设备的不同逻辑,我会推荐一个正则表达式。在DetectMobileBrowsers上有不同编程语言的一些很好的例子。如果你正在寻找不同的显示器,我会推荐media queries。你可以满足设备的widthpixel ratio甚至orientation。在CSS Tricks有很多常见问题。
© www.soinside.com 2019 - 2024. All rights reserved.