关于Internet Explorer:为什么IE9 +,Chrome和Opera15 +浏览器在用户代理中将自己标识为Mozilla?

Why IE9 +, Chrome and Opera15 + browsers identify themselves as Mozilla in the User Agent?

我正在寻找一种用JavaScript识别IE的方法,突然,我注意到浏览器被识别为Mozilla:

歌剧

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 OPR/17.0.1241.53

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36

工业工程

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

现在我想知道为什么这些浏览器识别为Mozilla


这是网站开发者和网络浏览器之间永无休止的战争的结果。

每次浏览器出现新功能时,开发人员都希望使用该功能。但他们也需要处理不支持它的浏览器。

最明显的方法是经常使用UA字符串。查找支持该功能的浏览器,并相应地运行代码。容易的。

但这并不容易,因为不可避免的是,几个月后,其他浏览器也支持相同的功能。

所以现在其他浏览器有一个问题:站点被编写为使用他们支持的功能,但是这些站点只激活一个特定浏览器的功能。

浏览器供应商的解决方案是:修改他们的UA字符串,以便它愚弄站点激活该特性。

自从1990年代,IE和Netscape打"浏览器战争"("mozilla"是Netscape唯一的UA字符串名称,所以其他人为了兼容性把它复制到他们的UA字符串中),这种情况一直持续到今天(当IE11发布时,它的UA字符串与IE10的UA字符串完全不同,并且这是专门为打破浏览器嗅探代码而做的)。

最终的结果是,所有主要浏览器的UA字符串都是一团糟。它们充满了奇怪的东西,比如竞争对手的名字、错误的版本号、多个版本号和其他模糊的引用,所有这些都是为了愚弄任何愚蠢到试图阅读它的脚本。是的,解析它并获得可靠的浏览器检测可能只是可能的,但一旦任何浏览器发布新版本,它可能会再次中断。

除此之外,为了增加混乱,大多数浏览器还提供配置设置,以使用户能够更改UA字符串;一些第三方产品(防病毒、防火墙、代理等)也已知可以修改或替换UA字符串,所有这些都使得通过分析T

那么,所有这些都传达了什么回家的信息呢?

作为开发人员,您最好的做法就是完全忽略UA字符串。对于你来说,任何实际的目的都是毫无价值的。如果您需要使用并非在所有浏览器中都可用的功能,通常最好是进行功能检测,而不是嗅探UA字符串(为此,您可能需要考虑使用Modernizer库)。

假设UA字符串不存在,那么作为一个开发人员,您的生活会轻松很多。