某天,我做一个小项目,需要判断一下浏览器类型。简单的呀。
控制台敲下:navigator.userAgent
浏览器回应:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
天,这串是啥?你怎么连话都说不清楚?
我对userAgent并不陌生,但明明一个单词就可以说清楚的事情,却是这么掏心掏肺的回答。怪可怜的,一定有冤情。
后来我查阅了很多资料,发现历史非常的精彩。
大事年表
- 1990年: Nexus(WorldWideWeb)诞生
- 1993年1月23日:Mosaic诞生
- 1994年12月:Netscape(Mozilla)诞生
- 1995年4月:Opera诞生
- 1995年8月16日:Internet Explorer诞生
- 2002年9月23日:Firefox诞生
- 2003年1月7日:Safari诞生
- 2008年9月2日:Chrome诞生
一、盘古开天地
很久很久之前,上古大神Berners-Lee发明了WorldWideWeb,即万维网。同时,李大神也发明了第一款浏览器。真是具有跨时代意义的工具呀,好伟大呀,人们在想,叫什么好呢?
但大神就是大神,大神内心的想法又岂是尔等凡人能够肆意揣摩?
万万没想到,李大神说,我这浏览器,也叫WorldWideWeb!不行么?
行行行。
虽然李大神起名字这么拽,但他后来发觉,还是得赋予一点承上启下的历史意义,就改名成“Nexus”。值得注意的是,这浏览器,居然是可以兼容Unix跟Microsoft DOS的。它在当时流行的各种电脑上跑得飞起,应用也越来越广,被称为“杀手级应用”。杀手级…你们看互联网一开始就是这么的腥风血雨。
但这个浏览器,还不支持图片的显示,这是出现UserAgent的导火索。
二、唐尧虞舜
93年,伊利诺大学的NCSA组织认为,浏览器无图无真相,这不好。因而他们发明了第一款可显示图片的浏览器。
真是具有跨时代意义的工具呀,好伟大呀,人们在想,叫什么好呢?
但大神就是大神,大神就是连起名字都让你惊心动魄。
NCSA组织说,它能显示图片,偏偏我们就要叫它“马赛克(Mosaic)”!不行么?
行行行。
但有人就问了,Nexus不显示图片,Mosaic能显示,你们让html提供者怎么写代码?你们是不是想逼死选择困难症患者?有没有考虑过天秤座的感受?
因而UserAgent就诞生了。Mosaic将自己标志为NCSA_Mosaic/2.0 (Windows 3.1)
,大家该怎么写代码就怎么写,但请求会带上这个信息,服务器就知道该不该返回能显示图片的html。UserAgent君,出生时跟我们设想的一样简单,仅仅标明了自己是什么浏览器,在什么系统运行,以及各自的版本号。
新旧浏览器们像彬彬有礼的君王,商议和让位是为了更好的繁荣。但风雨欲来。
三、楚汉争霸
像刘邦一样,走出来一个搅局的小流氓。当然他还是很有志向的,他的目标,就是战胜霸主Mosaic。后来,他还真的做到了。
如今,所有现代浏览器的UserAgent里都有它的标志,就像汉朝之后,我们都称为“汉”人。一群很有天赋的程序员,一起缔造了它的辉煌。
真是具有跨时代意义的工具呀,好伟大呀,人们在想,它叫什么呢?
但大神就是大神,大神就是让你永远也猜不到他们想了个什么名字。
大神们说,叫Mozilla,不行么?
行。但什么意思呢?
含义有二。其一,哥斯拉(Godzilla)谐音,诚然是一头野心勃勃的怪兽;其二,”Mosaic Killa”之意,Killa是俚语中Killer的拼法,即“马赛克的终结者”,赤裸裸的挑战。
惊呆了的Mosaic小心翼翼的念着Mozilla这发音:“Mo…摸咋了?”勃然大怒,“摸你妹!”
鉴于Mosaic当时的权势,Mozilla改名成Netscape Navigator(网景航海家)。小怪兽突然变成有点文艺小清新的名字,郁闷得很,但内心的血液沸腾着。虽然叫大名叫网景,但它把UserAgent偷偷设置成Mozilla/1.0 (Win3.1)
。还是摸咋了?咬我?
四、宋元之战
很快,NetScape战胜了Mosaic,成为了新的霸主,因为其更优的展示。
NetScape最先支持了html框架显示,就是简单的table布局,内外边距之类,仅仅这点就将Mosaic抛诸身后。区别这两个浏览器,还是用的UserAgent。如果是UserAgent里含有“Mozilla”字样,那就发送支持框架的页面,否则,就发送不含框架的页面。
NetScape帝国日益庞大,歌舞升平,一切风平浪静,直到微软的铁骑挥军南下。
微软发布了一款跟系统强绑定的浏览器,真是具有跨时代意义的工具呀,好伟大呀,人们在想,它叫什么呢?
不用想了,就是IE。这命名也相当简单粗暴,Internet Explorer,直接把这工具的用途拍在你脸上。连说明书都可以免了。
IE也是支持html标准框架的,但由于前面的历史原因,人们只会给UserAgent里含有“Mozilla”字样的浏览器发送含框架的页面。但这点小事能难倒我大微软?IE呵呵一笑,把自己的UserAgent改成Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
。看,我这里也有“Mozilla”字样,也能收到含框架的页面了!
当然,这个小流氓行为,跟后来把IE和Windows捆绑一起销售的大流氓行为比起来,根本不为足道。后面的故事我们也知道了,IE把NetScape干掉了。但它的身体上,却永远的烙上了“Mozilla”的印记。
五、康乾盛世
看过奥特曼的都知道,怪兽被打败了会再回来。别忘了NetScape曾拥有一批大神们,失败后,他们围绕着浏览器排版引擎Gecko(壁虎)成立了非正式组织Mozilla。小怪兽再次出发。大神们发明了另一款优秀的浏览器,它在插件拓展和开发调试领域做出的贡献,绝对可以载入互联网历史。
真是具有跨时代意义的工具呀,好伟大呀,人们在想,它叫什么呢?
但大神就是大神,大神就是即使你知道了Mozilla的命名都是野兽,却还是猜不到是什么。
Mozilla说,我们浴火重生,叫Phoenix(凤凰)!不行么?
真不行。
刚推出就被人告了,原来已经有一家公司叫做“凤凰科技”。
Mozilla瀑布汗,改名叫Firebird(火鸟)!还不行么?
我们得原谅一下他们的取名,虽然现在看来满满的山寨感,可放在那个时代,Firebird这名字很炫酷。就像你当初的QQ昵称叫赤炎天使感觉依然良好一样。
但是,他们发现,业内有个数据库系统,也叫的Firebird…泪流满面的Mozilla感慨重生好难呀。最后才决定叫Firefox(火狐)。
基于Gecko引擎的Firefox非常优秀,为了告诉大家,我使用了这个引擎,它标志自己的UserAgent为Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0
。
这时候的UserAgent,虽然长了点,但它并不混乱,准确的标明了系统,排版引擎,浏览器名称等信息。虽然IE这时已经占有了很大的市场份额,但基本停步不前;而Mozilla经过一段时间的修生养息,Firefox在业内广受好评,得到了快速的发展。
时值2003年,web2.0的浪潮前夕,浏览器的发展达到了空前的盛世。
然而所谓否极泰来,盛极则衰。涅槃的Firefox迎来盛世,却又恰恰由于盛世,决定了UserAgent纠结的命运。
To Be Continue.
litten 2014.9.28