【问题标题】:How to find difference between chrome & android native browser如何找到 chrome 和 android 原生浏览器之间的区别
【发布时间】:2016-03-21 06:04:31
【问题描述】:

请帮帮我

我在 chrome 中作为用户代理在下面

Mozilla/5.0 (Linux; Android 4.4.2; P470 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Safari/537.36

在本机浏览器中我作为用户代理得到以下信息

Mozilla/5.0 (Linux; Android 4.4.2; Micromax P470 Build/KOT49H)  AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36;

除了 version/version_code 之外,一切都相似

正如我们通过“version/version_code”看到的,我们可以区分它,但问题是它因设备而异

例如,我在三星 s 系列设备中没有获得版本/版本代码

检查每种不同类型的设备非常耗时。

有没有动态的方法来检查浏览器是原生浏览器还是chrome。

提前致谢

【问题讨论】:

  • ……这就是为什么用户代理检测被认为是一个糟糕的想法。改用特征检测。

标签: php browser user-agent


【解决方案1】:

对于android中的原生浏览器(webview),你可以寻找

Android 4.4 (KitKat) 基于 Chromium 的 WebView 将 Chrome/version 添加到用户代理字符串。

所以,在上面的例子中,Version/4.0 会告诉你它是一个原生网络视图。

如果您试图区分 WebView 和 Chrome for Android,您应该在 WebView 用户代理字符串中查找 Version/X.X 字符串。不要依赖特定的 Chrome 版本号(例如 30.0.0.0),因为版本号会随每个版本而变化。

参考:User Agent Strings

【讨论】:

  • 是的,我不依赖数字,而是检查“版本/”,正如我在示例中提到的,只有版本是不同的,但对于三星设备版本没有出现,所以它失败了那个案子。三星是一个案例..在其他情况下可能会有所不同。所以我正在寻找动态解决方案
  • 对不起,我以为你指的是 chrome 标签的版本。我可以看到三星设备的用户代理是什么吗?
  • 除了“SamsungBrowser/version”之外的一切都相似
  • 我认为我们可以假设SamsungBrowser/version 是三星原生的webview。你能根据这个过滤吗?并且用户代理有可能被欺骗。所以我建议你寻找一个替代参数来检查设备。
  • 是的,目前我正在做同样的事情,但不能假设同样的事情会作为所有设备的用户代理出现。正如您在示例中看到的,没有其他可识别的分离参数。
猜你喜欢
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 2018-09-22
  • 2018-04-28
  • 2011-07-31
相关资源
最近更新 更多