Closed 0xtoorich closed 6 years ago
你是用真机测试的吗?
目前发现问题的Chrome36内核及以下,会出现误判…… 但是LBBROWSER、UBrowser、QQBrowser、2345Explorer应该不包含在里面才对
我们是跑在一个我们真实项目上,记录下来的用户数据,每天 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 的后缀。
那个部分代码可能有点不准,因为里面还有浏览器列表,按优先级匹配,比如同时匹配了chrome和360,判定为360
我的逻辑是判断有没有该浏览器的特征,在靠优先级匹配……如果同时有360和QQ浏览器的特征,但判定UA明显写着QQ浏览器,肯定判定为QQ浏览器啊
哦哦,这样呀。那我明白了,那再用这样的逻辑验证一下试试。这两天给你结果哈。感谢。
被误判的设备