fex-team / ua-device

userAgent解析库
http://fex-team.github.io/ua-device/
BSD 3-Clause "New" or "Revised" License
1.45k stars 173 forks source link

魅蓝note2在微信中机型识别错误 #3

Closed TooBug closed 8 years ago

TooBug commented 8 years ago

自带浏览器,识别准确

Mozilla/5.0 (Linux; Android 5.1; MZ-m2 note Build/LMY47D) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/45.0.2454.94 Mobile Safari/537.36

在微信中,识别成小米

Mozilla/5.0 (Linux; U; Android 5.1; zh-cn; m2 note Build/LMY47D) AppleWebKit/533.1 (KHTML, like Gecko)Version/4.0 MQQBrowser/5.4 TBS/025489 Mobile Safari/533.1 MicroMessenger/6.3.15.49_r8aff805.760 NetType/WIFI Language/zh_CN
kevindu1993 commented 8 years ago

你好,这个问题是微信在读取本机数据的时候,直接将 MZ-m2 note 读取成为 m2 note。 所以ua-device将其分别识别为 魅族小米 是正确的

TooBug commented 8 years ago

@kevindu1993 恕直言,这个回复其实是不太负责的。因为你的UA解析库的卖点之一就是解决各种苛刻UA的解析问题,现在在一些环境下解析有问题,应该是承认目前没有做好甚至是没有更好的处理办法,而不是说把魅族识别为小米是正确的。

当然,开源项目对谁负责是一个问题,并没有要责怪的意思,也不是说你提供了这个库就应该保证100%的准确率。

作为开发者,你的作品的使用者,我的态度是这个问题可以理解,但这仍然是一个问题,如果有可能,还是需要解决的。也正是因为我这样认为,所以才把它写到issue中来。

也希望这个库能不断地吸纳反馈,找出一些更理想的办法来不断提高识别的准确率。祝好。

kevindu1993 commented 8 years ago

@TooBug 首先为你执着的态度点赞,这个库也非常需要像你这样追求完美的人让它变得更加完善。

然后回到这个问题上,目前 ua-device 还只是通过获取UA信息来进行解析,无法通过前端技术识别一个UA信息是否是经过第三方改造而成,因为第三方软件完全有可能把小米的手机也改成这个UA数据,而我们不可能说要把它还原成魅族,所以说如果想通过特殊处理的方式来解决这种问题,是不可行的。

当然,如果发现了可识别的改造规则,我们也会更新我们的库,让你们用起来更加方便。

在demo页面中,只是简单的使用了navigator.userAgent来获取UA信息,而在实际生产环境中,更可能存在的一种现象是直接获取服务器日志的UA字符串然后进行批量处理,所以说这2种情景下,目前的ua-device都无法识别UA是否经过三方改造。

如果有好的解决方案欢迎提出,一起为社区贡献力量!!!