浏览器UserAgent的趣味史

1 评论 5619 浏览 7 收藏 16 分钟

编辑导语:User Agent,简称UA,中文名为用户代理,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计。接下来,本文作者为我们总结了其发展的趣味史。

最近在看《给产品经理讲技术》,其中有一段简要的提到了浏览器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是怎么来的了吧。

 

作者:Jarvan;公众号:产品叨比叨

本文由 @Jarvan 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 欧摩西罗伊

    来自四川 回复