为什么所有的浏览器前缀以Mozilla开头?

958 阅读8分钟

现在市场上所有的浏览器前缀都是以Mozilla开头,这是原因呢?Mozilla到底有什么含义尼?今天我来解开他的秘密。

网景时代

大家都知道网景公司在1994 年发布了第一款商业浏览器Netscape Navigator1,它的诞生点燃了历史的火箭,从此以后,计算机网络的发展翻开了新的篇章。它的创始人马克·安德森,因此在硅谷获得了互联网点火人的称号。

当时这个项目在网景公司内部代号就是Mozilla,这就是所有商业浏览器前缀是以Mozilla的源头的原因之一。那它是什么意思尼?它是Mosaic Killer的简写,听名字就知道它想把Mosaic干掉,那Mosaic又是什么尼?

马克·安德森还在在伊利诺伊大学上学时,利用业余时间在大学所在的NCSA(国家超级电脑应用中心)工作,领导开发了基于UNIX的浏览器Mosaic,这个浏览器迅速的在当时大火,上百万人使用它,那年正好他大学毕业了(1993年),毕业后来到了当时美国的热土-硅谷,遇到了SIG的创始人吉姆·克拉克,不同于青涩时期的安德森,克拉克拥有丰富的计算机商业经验,他敏锐的察觉到了这个Mosaic的商业价值。

两个人当年(1993年)就创办了Mosaic通信公司,可是很快就被伊利诺伊大学起诉,我想这就是为啥Netscape Navigator这个项目在当时公司的内部代号是Mosaic Killer的原因吧。

1994年发布了Netscape Navigator1,就是Mozilla,它的navigator.userAgent的开头就是Mozilla。

1996年8月19日**(请记住这个时间**)发布了Netscape Navigator3成功超越了Mosaic,成为最受欢迎的浏览器,1997年1月7日NCSA宣布停止维护Mosaic,至此Mozilla成功的实现了它诺言。

当时它的navigator.userAgent

Mozilla/3.0 (Win95; U)

微软时代

不管是Mosaic的流行还是Netscape Navigator的成功,都吸引了一大批资本的目光,其中就有微软这个巨鳄。

1995年微软用200万美金收购了一家浏览器制造公司Spyglass公司,这家公司从NCSA获得了技术和商标授权,用于开发自己的网页浏览器,但它从未使用任何NCSA Mosaic源代码,收购成功后,微软把它重新命名为Internet Explorer,这就是IE1.0,

1996年8月13日,微软发布了IE3.0,这个其实已经是完全脱离Spyglass公司的技术了,可以说是完全重写了,它亦是首个支持CSS技术的主流浏览器。它引进了ActiveX控件、Java Applet、内部网页多媒体以及互联网内容选择平台系统对内容元数据的支持。

IE3.0发布时 Netscape Navigator2已经是市场占有率最高的浏览器,很多服务器在返回网页之前都会特意检测navigator.userAgent。所以,聪明的微软就在navigator.userAgent中添加了兼容Netscape用户代理字符串的内容。

其格式为:

Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)

// 当时Netscape Navigator2是
Mozilla/2.0 (compatible; MSIE Version; Operating System)

IE通过修改navigator.userAgent伪装成Netscape Navigator,成功的获得了用户信赖。

还记得前面说过注意时间吗,《红宝书第四版-客户端检测》这章作者有个疑问,为啥微软IE3的userAgent不是当时红遍天的Mozilla/3.0打头,这个就是原因。

IE3发布之后,过了6天1996年8月19日,网景才发布了Netscape Navigator3,不是微软不想,而是当时网景还没有发布Netscape Navigator3

下面是IE浏览器各个版本的userAgent

// IE4
Mozilla/4.0 (compatible; MSIE 4.0; Windows 98)
// IE6
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
// IE7
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
// IE8,增加了渲染引擎的版本号Trident
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
// IE8,兼容模式
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)
// IE9 升级了Trident
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

从上述代码可以知道,到了IE9之后,Mozilla/5.0 这个请求头各大浏览器就再也没有变过了,这又是什么原因尼?

Gecko排版引擎

随着微软商业策略成功,它生态上的优势使得IE浏览器快速的发展,苹果宣布MAC内置的浏览器使用IE浏览器,而同年网景推出的Netscape Navigator4还有一堆的bug,特别是对CSS的渲染还有问题,到1997年,IE5.0在市场上的表现已经远远超过了 Netscape Navigator,不仅是商业的成功,在程序的运行速度、对W3C标准的支持度上也是如此。

逼上绝路的网景,这个时候发现了一家小型技术公司DigitalStyle,专门用于研发下一代排版引擎,网景在同年对它进行了收购。

1998年这个新的排版引擎名为Raptor,受到当时流行的Linux等开放源代码项目影响,网景公司直接宣布开源,把源码直接发布在网上。后来,因为商标问题,Raptor改名为NGLayout(即Next Generation Layout之意)。而最后NGLayout被网景市场部门重命名为Gecko,商标就是这个小壁虎。

image.png

1998年10月,网景宣布下一代浏览器的排版引擎,将使用Gecko,并且工期乐观的估计只要六个月。这这个决定直接导致了网景的第五代浏览器出师未捷身先死,但是直到25个月后,就是2000年11月网景的第六代浏览器才发布。

1997年10月 IE4第四版发版,内置的排版引擎就是Trident,微软就是这么紧逼对手

1998年11月24日,陷入颓势的网景,股票暴跌,同年被美国在线收购

2003年7月15日,美国在线宣布解散网景,宣布当天,Mozilla基金会成立。

网景的破产,Mozilla基金会的成立,第二年Firefox正式发布,之后开始在网络流行,很多早期web开发者应该都非常喜欢Firefox,没有IE那么多安全漏洞,运行也非常流畅,一堆的插件支持,特别是对于开发人员来说,优秀的调试插件,让很多web开发者加入到Firefox使用者中。

网站“Forbes.com”称Firefox为“2004年最佳浏览器”

《PC World》在“2005年最佳百大产品”中也将Firefox列入

杂志《Which?》也提名Firefox为最佳的网页浏览器

2006年,Firefox下载量达2亿次

2008年,Firefox的下载数量到达了5亿次

随着Firefox发布,迅速的在全球流行下来,而它的排版引擎也是基于Gecko,这里我们看下Netscape 6.21和FirefoxuserAgent

// Windows XP上的Firefox 2.0.0.11:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.11) Gecko/20071127
  Firefox/2.0.0.11

到了这个阶段,排版引擎成了浏览器的重点,所以是不是Mozilla已经不重要了,但为了一些老网站的兼容性,所以后续的所有的浏览器都保留了Mozilla/5.0这个头。

Mozilla基金会其实基本上就是靠着Google活下来的,每年几亿美金砸下去,虽然曾经有过一段时间不美好,但是大部分时间和Google是甜蜜时间

webkit时代

2003年乔大爷宣布苹果将开发自己的浏览器Safari,同年6月正式对外发布,新的浏览器会面临以前IE的问题,就是如何让web网站知道,这个新的浏览器也是能渲染他们的网页应用的,所以开发者又对userAgent做了伪装处理。

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/124 (KHTML, like Gecko)
  Safari/125.1

当时市面上留下的浏览器因为都已经有了Mozilla/5.0的开头,Firefox又是以Gecko为主的,而Safari的排版引擎是基于KHTML的开发的webkit,所以用了上述奇怪的组合

2008年谷歌开发了自己的chrome浏览器,因为初版是基于webkit的,所以其userAgent和Safari的很像,后来28版本之后,谷歌已经成了webkit项目最大的代码贡献者,但是内部话语权确掌握在苹果手上,所以谷歌又基于webkit分支,开发了blink渲染引擎,用于替代webkit,但userAgent并没有发生变化。

最终浏览器的userAgent遵循了以下格式

Mozilla/5.0 (Platform; Encryption; OS-or-CPU; Language)
  AppleWebKit/AppleWebKitVersion (KHTML, like Gecko)
  Chrome/ChromeVersion Safari/SafariVersion

红宝书上提到了Opera,这个浏览器的userAgent一直变来变去,但最终还是逃不开大势,变的和其他浏览器一样,遵循上面的格式,只不过末尾加了OPR标识和其版本号

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/65.0.3325.181 Safari/537.36 OPR/52.0.2871.64

总结

这里总结下吧,一开始是因为网景公司的内部代号叫做Mozilla,后来因为排版引擎Gecko的原因,叫什么浏览器已经不重要了,最后苹果基于KHTML开发了新一代排版引擎webkit,为了兼容老的web项目,所以用了KHTML, like Gecko,至此,浏览器的userAgent的规则就算定下来了。

好了全文就到此结束了,如果你想进一步了解文中列举到的一些其他知识,可以参考下面链接。

参考链接

  1. 维基百科网页浏览器
  2. Mosaic历史
  3. Netscape Navigator
  4. JavaScript高级程序设计(第4版)客户端检测
  5. Gecko的历史