mumuy / browser

浏览器检测 - Useragent分析/浏览器识别/浏览器判断/UA解析/用户代理信息/Useragent analysis tool/Browser detection
https://passer-by.com/browser/
MIT License
1.51k stars 326 forks source link

部分浏览器被错误识别为 360 浏览器 #11

Closed 0xtoorich closed 6 years ago

0xtoorich commented 6 years ago

被误判的设备

mumuy commented 6 years ago

你是用真机测试的吗?

mumuy commented 6 years ago

目前发现问题的Chrome36内核及以下,会出现误判…… 但是LBBROWSER、UBrowser、QQBrowser、2345Explorer应该不包含在里面才对

0xtoorich commented 6 years ago

我们是跑在一个我们真实项目上,记录下来的用户数据,每天 6 万 PV。

不过没有直接用,只用了部分代码:

function getUserAgent() {
  var userAgent = navigator.userAgent;
  if (window.showModalDialog && window.chrome) {
    for (var i = 0; i < navigator.mimeTypes.length; i++) {
        var item = navigator.mimeTypes[i];
        if (item['type'] === 'application/gameplugin') {
            userAgent += ' QIHU 360SE';
            break;
        }
    }
    if (! /360SE/.test(userAgent)) {
        userAgent += ' QIHU 360EE';
    }
  }
  return userAgent;
}

然后通过这段代码,直接保存完整 User Agent 到后端数据库。然后发现了上面那些原始 User Agent,也加了 360 UA 的后缀。

mumuy commented 6 years ago

那个部分代码可能有点不准,因为里面还有浏览器列表,按优先级匹配,比如同时匹配了chrome和360,判定为360

mumuy commented 6 years ago

我的逻辑是判断有没有该浏览器的特征,在靠优先级匹配……如果同时有360和QQ浏览器的特征,但判定UA明显写着QQ浏览器,肯定判定为QQ浏览器啊

0xtoorich commented 6 years ago

哦哦,这样呀。那我明白了,那再用这样的逻辑验证一下试试。这两天给你结果哈。感谢。