【问题标题】:why is the user agent string got changed?为什么用户代理字符串被改变了?
【发布时间】:2019-02-02 11:32:43
【问题描述】:

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

从日志信息中,一开始我看到用户代理是“Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/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, like Gecko) Version/ 11.1 Safari/605.1.15",应该是 macOS (High Sierra) 上的 Safari 11.1。从 tealeaf 我看到用户没有更改浏览器或设备。

所以我的问题是:

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

  2. 就我而言,为什么会这样?

  3. 确定用户是使用移动设备/平板电脑还是桌面设备的最可靠方法是什么?

谢谢。

【问题讨论】:

    标签: user-agent


    【解决方案1】:
    1. 。完全可以在不更改浏览器或设备的情况下操作用户代理字符串。完全欺骗它是可能的(而且非常简单),例如使用 User Agent Switcher 来欺骗 Chrome。话虽如此,绝大多数用户不会去欺骗它。

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

    3. 这取决于您到底想做什么。如果您正在寻找基于设备的不同 逻辑,我会推荐一个正则表达式。 DetectMobileBrowsers 上有一些针对不同编程语言的优秀示例。但是,如果您正在寻找不同的 显示,我会推荐 media queries。您可以满足设备的widthpixel ratio 甚至orientationCSS Tricks 上有大量常见查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 2012-08-31
      • 2013-06-27
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多