浏览器UserAgent的趣味史

浏览器UserAgent的趣味史

閱讀本文約花費: 14 (分鐘)

最近在看《给产品经理讲技术》,其中有一段简要的提到了浏览器UserAgent的含义和作用。在最后作者暗示UserAgent的变迁是一段充满趣味性的历史,为了满足我的好(吃)奇(瓜)心理,我去深扒了一下。

结果不扒不知道,一扒吓一跳。今天就给大家分享一下这个陈年老瓜。

首先,我们先简要了解一下各大浏览器的出生日期:

浏览器UserAgent的趣味史

大家先对这些浏览器的出生时间有一个概念,然后大家把板凳和西瓜拿好,让我们开始吧~

一、第一个浏览器:Nexus

1989年,超级大神伯纳斯·李教授发明了万维网(World Wide Web,简称3W),然而大神并不满足于此,为了大家能更方便地访问万维网,大神大手一挥,推出了世界上第一款浏览器。

李大神寻思给它起个什么名字呢?

此时,李大神可能是懒虫上身,想也不想,要不就叫World Wide Web,跟大儿子(万维网)一个名字吧!

后来大神感觉交流起来不是很方便,经常不知道World Wide Web指的是谁,而且这么偷懒的行为有点对不起小儿子,于是把小儿子的名字改成了Nexus。

由于是浏览器的祖师爷,没有竞争对手,Nexus马上就流行了起来。

由于是最早的浏览器,Nexus只支持文字展示,还不支持图片展示,而这恰好给了竞争对手可乘之机,同时也是UserAgent的由来。

二、第一个带图的浏览器:Mosaic

1993年,伊利诺伊的NCSA组织认为没有图片的网页就像失去颜色的世界!作为一群完美主义者,这完全不能忍!

因此他们发明了第一个可以显示图片的浏览器:Mosaic(马赛克),能显示图片,但大神们偏偏任性取名叫马赛克!众多吃瓜群众不禁直呼内行!

浏览器UserAgent的趣味史

由于能显示图片的特性,Mosaic迅速流行了起来。但是到这里,大家可能会发现,此时的霸主是Nexus,它是不能显示图片的,而Mosaic能显示,这就叫html的开发陷入了两难的境地。

正当html开发者抓耳挠腮的时候,体贴的Mosaic想到了一个办法:这本质上就是一个身份的问题嘛,那我就在给你发请求的时候告诉你们我的身份,和Nexus区分开来不就行了?

这就是UserAgent的由来,它最初的作用只是向服务器表明自己的身份——Mosaic的UserAgent为:NCSA_Mosaic/2.0 (Windows 3.1)

NCSA_Mosaic代表自己是什么浏览器,2.0代表版本号,Windows 3.1表示自己可以在什么系统下运行。

这样一来,html开发者该怎么开发还是怎么开发,只是如果UserAgent表明是Mosaic就发送带图片的网页,如果不是,就发送不带图片的网页。

但是,伊利诺伊的大神们到死也不会想到,就这么简单的一个UserAgent,竟然被后辈们玩出了花。

三、Mosaic杀手:Mozilla

看到Mozilla,大家是不是很眼熟?随便打开一个浏览器,查看它的UserAgent,都会发现带有Mozilla标记。是不是很奇怪,为什么不同公司的浏览器,不管是IE、谷歌、Safari等,都带有Mozilla呢?听我慢慢道来。

在Mosaic如日中天的时候,一头初生怪兽偏偏不服,它为自己设立了一个伟大的目标:推翻Mosaic的霸主地位!

这头初生怪兽就是后来大名鼎鼎的网景公司,他们发明了一款浏览器,希望能够取代Mosaic!而不愧是初生怪兽,没别的,就是头铁,大神们给他们的浏览器取名为:Mozilla。

浏览器UserAgent的趣味史

什么意思呢? Mozilla由“Mosaic Killa”(Killa是俚语中Killer的拼法)变化而来,并且是怪兽Godzilla(哥斯拉)的谐音,即“Godzilla eat the Mosaic!”

这就是赤果果的挑衅啊!你看,互联网的源头就充斥着血腥!

Mozilla大声喝问道:Mosaic你这老头子怕不怕!Mosaic瑟瑟发抖(不知道是气的,还是怕的)地看着这头狂妄的小怪兽,勃然大怒(恼羞成怒)到:“给老子滚粗!”

于是网景碍于当时Mosaic的江湖地位,不得已“从心”的把名字改成了Netscape Navigator(网景航海家)。

但是“小怪兽”口服心不服,仍然偷偷地在自己的UserAgent后面写上了Mozilla/1.0 (Win3.1)。

四、流氓来了:IE

小怪兽还是有点本事的,NetScape最先支持html框架显示,就是简单的table布局,内外边距之类,仅仅这点在体验上就远超Mosaic。

所以,最后Mozilla如愿”吃掉了”Mosaic,成为了霸主。

开发者为了区别这两个浏览器,还是用的UserAgent。约定如果是UserAgent里含有“Mozilla”字样,就发送支持框架的页面,否则就发送不含框架的页面。

浏览器作为万维网的入口,从来都是战略必争之地,竞争自然无法避免。微软率先使出了”不要脸“战术”,仗着自己的操作系统地位,开发了一款强行和系统绑定的浏览器。

古语云:流氓不可怕,就怕流氓有文化!古人诚不欺我!

那么这个浏览器叫什么好呢?

吃瓜群众:Mozilla killer?

微软大神:滚蛋,能不能像我们一样成熟一点?!

务实的微软大神们取名可不搞这些花里胡哨的,直接取名叫IE,即Internet Explore,虽然没有Mozilla这么霸气,但是简单易懂且易记啊。

要想和Mozilla竞争,IE肯定也是支持html框架的,但是开发者们才不管,开发者们只会给UserAgent带有Mozilla的浏览器发送带框架的页面。

但是你以为这点小事就能难倒我大微软,天真!

微软眼咕噜一转,呵呵一笑:切,既然如此,那我易容成Mozilla不就行了?

于是,微软给IE披上了一层怪兽皮,把自己的UserAgent改成了:Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。

你看,我也是Mozilla,这样你就可以把带框架的页面发给我了~

尝到耍流氓甜头的微软一发不可收拾,利用自己操作系统的优势,将易容后的IE强制和操作系统绑定:你就用我的系统免费赠送的IE浏览器,还要啥自行车?!

凭借不输Mozilla的性能和流氓的手段,IE最终战胜了Mozilla,但是从此IE也永久带上了Mozilla的标记。

五、浴火重生的狐狸:FireFox

但是,怪兽不愧是怪兽,强大的怪兽怎么能被流氓轻易击败呢?!

曾经Mozilla的大神们卷土重来,他们使用浏览器排版引擎Gecko(壁虎)发明了另一款优秀的浏览器,它在插件拓展和开发调试领域做出的贡献,绝对可以载入互联网历史。

这么跨时代的创造,叫什么好呢?众所周知,Mozilla的大神们总是对怪兽情有独钟,既然我们从失败中浴火重生,那么其名曰:Phoenix(凤凰)!!

但是Phoenix(凤凰)还没起飞就遭遇了折翼,旁边一家叫凤凰科技的公司强烈抗议:魂淡,是我先叫Phoenix(凤凰)的,你们侵权了!

大神们很无奈,没办法,那我们叫Firebird(火鸟),总行了吧?!虽然听起来挺中二的,但是也不行。因为有一款数据库也叫这个名字。

大神们抓狂,起个名字怎么这么难?!泪流满面的大神们最终给这款划时代的浏览器起名叫FireFox(火狐)。

浏览器UserAgent的趣味史

FireFox(火狐)至今还是最常用的浏览器之一,可见其优秀程度竟恐怖如斯!

大神们为了告诉开发者们,我是如此的优秀,你们可以给我更好更炫酷的页面了!

于是,FireFox(火狐)标志自己的UserAgent为:Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0。

虽然这个UserAgent看起来很长,但是信息还是比较清晰,表明了自己的身份是Moziila5.0和Firefox/1.0,支持的系统和使用的Gecko的引擎。

和之前一样,开发者们只会给作为开创者的FireFox(火狐)发送更优质的html页面。FireFox(火狐)凭借优秀的性能,发展非常迅速,虽然没有打败IE,但是也能和IE分庭抗礼。

六、萌贱萌贱的Konqueror

而在IE和FireFox(火狐)互掐的时候,其实市场上还存在另外一个著名的操作系统Linux。Linux看着Window的IE浏览器非常眼红,于是寻思着也开发一款基于Linux的浏览器。

大神就是大神,开发浏览器就是小菜一碟!成功以后,Linux大神们一样不能免俗,要为自己的孩子起一个响亮且霸气的名字。

前有Moziila(哥斯拉),后有IE(探索者),那我们…..嗯,就叫:Konqueror(Conqueror的变体,低调低调)征服者吧!(666666)。

但是,Konqueror使用的是KHTML排版引擎,失去了先发优势。所以,Konqueror也遇到了和IE类似的问题:开发者们只认UserAgent里面带有Gecko的浏览器,不带就休想获得带有良好排版的页面!

小Konqueror非常无奈,万分纠结之下,做出了一个又骚又贱但是又特别萌的操作,把自己的UserAgent写成:Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。

就这样,伟大的Konqueror为了获取更优质的页面,也不得不耍了点小心机。从此,(KHTML,like Gecko) 与IE的Mozilla一样成了一道抹不去的印记。

七、魑魅魍魉,群魔乱舞!

发展到这,你以为就结束了吗?天真!在互联网这个狂热的世界,只有你想不到,没有你做不到!

脑洞大开的Opera觉得IE和Konqueror的做法真的太棒了,甚得吾心!那咱也不能示弱啊:既然有这么多可以选择的UserAgent(马甲),那我们是不是可以想变成谁就变成谁?!(Opera的大神们可能是百变小樱的忠实粉丝)。

Opera直接在菜单提供了三个选择项:

  1. Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51;
  2. Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0;
  3. Opera 9.51Opera/9.51 (Windows NT 5.1; U; en)。

第一个是IE,第二个是火狐,第三个才是自己,芭芭拉小魔仙,你想变谁就变谁!

与此同时,在科技的贵圈里,怎么能少得了我大Apple?!苹果公司依靠“自己的”WebKit,开发出Safari,并将UserAgent命名为:Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。

诶?!仔细一看,这不对啊,AppleWebKit不是苹果公司自己的吗,为啥还会带有(KHTML, like Gecko)?!

苹果邪魅一笑:呵呵,大惊小怪,因为我们的内核Webkit排版引擎的核心叫WebCore,而WebCore是KHTML衍生而来的。也就是说,WebCore是KHTML的儿子,子承父业,苹果公司只能在UserAgent加上 (KHTML, like Gecko) 。

在越发混乱的浏览器贵圈里,谷歌也不甘寂寞,跳出来大声宣布:我大谷歌也开发了一款浏览器,它叫Chrome!

而Chrome设定的UserAgent为:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13。

Safari一看:卧槽,从未见过如此厚颜无耻之徒!你怎么也在后面写有Safari?

Chrome呵呵一笑,你懂的——原来Chrome浏览器的内核也是Webkit。

所以,最后让我们来顺一下:

  1. Chrome希望获得Safari的页面,所以伪装成了Safari;
  2. 而Safari的内核是WebKit引擎,而WebKit又是KHTML的儿子;
  3. KHTML又不得不易容成Gecko;
  4. 而由于IE的骚操作,浏览器又都宣称自己是Mozilla……

至此,现在的浏览器,你随便打开一个,查看他们的UserAgent,都会发现或多或少带有这些印记。

大家现在应该明白浏览器中那长长的UserAgent是怎么来的了吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up