浏览器野史 UserAgent 列传(上)

作者:Litten

原文链接:http://litten.me/2014/09/26/history-of-browser-useragent/


某天,我做一个小项目,需要判断一下浏览器类型。简单的呀。


控制台敲下: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 把 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 纠结的命运。


end


LeanCloud,领先的 BaaS 提供商,为移动开发提供强有力的后端支持。更多内容请关注「LeanCloud通讯」

 「福利 」


推荐朋友使用我们的服务,您将获得推荐用户全年消费额的10% 做为奖励 ~


首先需要新注册一个 LeanCloud Affiliate 账号,获取专有推荐链接,通过链接邀请好友注册,如果口头推荐无法返现哦……


点击下方「阅读原文」直接访问 LeanCloud Affiliate 网站 

https://a.leancloud.cn/

↓↓↓

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值