瀏覽器UserAgent的趣味史

1 評(píng)論 5644 瀏覽 7 收藏 16 分鐘

編輯導(dǎo)語(yǔ):User Agent,簡(jiǎn)稱UA,中文名為用戶代理,是一種向訪問(wèn)網(wǎng)站提供你所使用的瀏覽器類型及版本、操作系統(tǒng)及版本、瀏覽器內(nèi)核、等信息的標(biāo)識(shí)。通過(guò)這個(gè)標(biāo)識(shí),用戶所訪問(wèn)的網(wǎng)站可以顯示不同的排版從而為用戶提供更好的體驗(yàn)或者進(jìn)行信息統(tǒng)計(jì)。接下來(lái),本文作者為我們總結(jié)了其發(fā)展的趣味史。

最近在看《給產(chǎn)品經(jīng)理講技術(shù)》,其中有一段簡(jiǎn)要的提到了瀏覽器UserAgent的含義和作用。在最后作者暗示UserAgent的變遷是一段充滿趣味性的歷史,為了滿足我的好(吃)奇(瓜)心理,我去深扒了一下。

結(jié)果不扒不知道,一扒嚇一跳。今天就給大家分享一下這個(gè)陳年老瓜。

首先,我們先簡(jiǎn)要了解一下各大瀏覽器的出生日期:

瀏覽器UserAgent的趣味史

大家先對(duì)這些瀏覽器的出生時(shí)間有一個(gè)概念,然后大家把板凳和西瓜拿好,讓我們開(kāi)始吧~

一、第一個(gè)瀏覽器:Nexus

1989年,超級(jí)大神伯納斯·李教授發(fā)明了萬(wàn)維網(wǎng)(World Wide Web,簡(jiǎn)稱3W),然而大神并不滿足于此,為了大家能更方便地訪問(wèn)萬(wàn)維網(wǎng),大神大手一揮,推出了世界上第一款瀏覽器。

李大神尋思給它起個(gè)什么名字呢?

此時(shí),李大神可能是懶蟲(chóng)上身,想也不想,要不就叫World Wide Web,跟大兒子(萬(wàn)維網(wǎng))一個(gè)名字吧!

后來(lái)大神感覺(jué)交流起來(lái)不是很方便,經(jīng)常不知道World Wide Web指的是誰(shuí),而且這么偷懶的行為有點(diǎn)對(duì)不起小兒子,于是把小兒子的名字改成了Nexus。

由于是瀏覽器的祖師爺,沒(méi)有競(jìng)爭(zhēng)對(duì)手,Nexus馬上就流行了起來(lái)。

由于是最早的瀏覽器,Nexus只支持文字展示,還不支持圖片展示,而這恰好給了競(jìng)爭(zhēng)對(duì)手可乘之機(jī),同時(shí)也是UserAgent的由來(lái)。

二、第一個(gè)帶圖的瀏覽器:Mosaic

1993年,伊利諾伊的NCSA組織認(rèn)為沒(méi)有圖片的網(wǎng)頁(yè)就像失去顏色的世界!作為一群完美主義者,這完全不能忍!

因此他們發(fā)明了第一個(gè)可以顯示圖片的瀏覽器:Mosaic(馬賽克),能顯示圖片,但大神們偏偏任性取名叫馬賽克!眾多吃瓜群眾不禁直呼內(nèi)行!

瀏覽器UserAgent的趣味史

由于能顯示圖片的特性,Mosaic迅速流行了起來(lái)。但是到這里,大家可能會(huì)發(fā)現(xiàn),此時(shí)的霸主是Nexus,它是不能顯示圖片的,而Mosaic能顯示,這就叫html的開(kāi)發(fā)陷入了兩難的境地。

正當(dāng)html開(kāi)發(fā)者抓耳撓腮的時(shí)候,體貼的Mosaic想到了一個(gè)辦法:這本質(zhì)上就是一個(gè)身份的問(wèn)題嘛,那我就在給你發(fā)請(qǐng)求的時(shí)候告訴你們我的身份,和Nexus區(qū)分開(kāi)來(lái)不就行了?

這就是UserAgent的由來(lái),它最初的作用只是向服務(wù)器表明自己的身份——Mosaic的UserAgent為:NCSA_Mosaic/2.0 (Windows 3.1)

NCSA_Mosaic代表自己是什么瀏覽器,2.0代表版本號(hào),Windows 3.1表示自己可以在什么系統(tǒng)下運(yùn)行。

這樣一來(lái),html開(kāi)發(fā)者該怎么開(kāi)發(fā)還是怎么開(kāi)發(fā),只是如果UserAgent表明是Mosaic就發(fā)送帶圖片的網(wǎng)頁(yè),如果不是,就發(fā)送不帶圖片的網(wǎng)頁(yè)。

但是,伊利諾伊的大神們到死也不會(huì)想到,就這么簡(jiǎn)單的一個(gè)UserAgent,竟然被后輩們玩出了花。

三、Mosaic殺手:Mozilla

看到Mozilla,大家是不是很眼熟?隨便打開(kāi)一個(gè)瀏覽器,查看它的UserAgent,都會(huì)發(fā)現(xiàn)帶有Mozilla標(biāo)記。是不是很奇怪,為什么不同公司的瀏覽器,不管是IE、谷歌、Safari等,都帶有Mozilla呢?聽(tīng)我慢慢道來(lái)。

在Mosaic如日中天的時(shí)候,一頭初生怪獸偏偏不服,它為自己設(shè)立了一個(gè)偉大的目標(biāo):推翻Mosaic的霸主地位!

這頭初生怪獸就是后來(lái)大名鼎鼎的網(wǎng)景公司,他們發(fā)明了一款瀏覽器,希望能夠取代Mosaic!而不愧是初生怪獸,沒(méi)別的,就是頭鐵,大神們給他們的瀏覽器取名為:Mozilla。

瀏覽器UserAgent的趣味史

什么意思呢? Mozilla由“Mosaic Killa”(Killa是俚語(yǔ)中Killer的拼法)變化而來(lái),并且是怪獸Godzilla(哥斯拉)的諧音,即“Godzilla eat the Mosaic!”

這就是赤果果的挑釁??!你看,互聯(lián)網(wǎng)的源頭就充斥著血腥!

Mozilla大聲喝問(wèn)道:Mosaic你這老頭子怕不怕!Mosaic瑟瑟發(fā)抖(不知道是氣的,還是怕的)地看著這頭狂妄的小怪獸,勃然大怒(惱羞成怒)到:“給老子走開(kāi)!”

于是網(wǎng)景礙于當(dāng)時(shí)Mosaic的江湖地位,不得已“從心”的把名字改成了Netscape Navigator(網(wǎng)景航海家)。

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

四、流氓來(lái)了:IE

小怪獸還是有點(diǎn)本事的,NetScape最先支持html框架顯示,就是簡(jiǎn)單的table布局,內(nèi)外邊距之類,僅僅這點(diǎn)在體驗(yàn)上就遠(yuǎn)超Mosaic。

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

開(kāi)發(fā)者為了區(qū)別這兩個(gè)瀏覽器,還是用的UserAgent。約定如果是UserAgent里含有“Mozilla”字樣,就發(fā)送支持框架的頁(yè)面,否則就發(fā)送不含框架的頁(yè)面。

瀏覽器作為萬(wàn)維網(wǎng)的入口,從來(lái)都是戰(zhàn)略必爭(zhēng)之地,競(jìng)爭(zhēng)自然無(wú)法避免。微軟率先使出了”不要臉“戰(zhàn)術(shù)”,仗著自己的操作系統(tǒng)地位,開(kāi)發(fā)了一款強(qiáng)行和系統(tǒng)綁定的瀏覽器。

古語(yǔ)云:流氓不可怕,就怕流氓有文化!古人誠(chéng)不欺我!

那么這個(gè)瀏覽器叫什么好呢?

吃瓜群眾:Mozilla killer?

微軟大神:能不能像我們一樣成熟一點(diǎn)?!

務(wù)實(shí)的微軟大神們?nèi)∶刹桓氵@些花里胡哨的,直接取名叫IE,即Internet Explore,雖然沒(méi)有Mozilla這么霸氣,但是簡(jiǎn)單易懂且易記啊。

要想和Mozilla競(jìng)爭(zhēng),IE肯定也是支持html框架的,但是開(kāi)發(fā)者們才不管,開(kāi)發(fā)者們只會(huì)給UserAgent帶有Mozilla的瀏覽器發(fā)送帶框架的頁(yè)面。

但是你以為這點(diǎn)小事就能難倒我大微軟,天真!

微軟眼咕嚕一轉(zhuǎn),呵呵一笑:切,既然如此,那我易容成Mozilla不就行了?

于是,微軟給IE披上了一層怪獸皮,把自己的UserAgent改成了:Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。

你看,我也是Mozilla,這樣你就可以把帶框架的頁(yè)面發(fā)給我了~

嘗到耍流氓甜頭的微軟一發(fā)不可收拾,利用自己操作系統(tǒng)的優(yōu)勢(shì),將易容后的IE強(qiáng)制和操作系統(tǒng)綁定:你就用我的系統(tǒng)免費(fèi)贈(zèng)送的IE瀏覽器,還要啥自行車?!

憑借不輸Mozilla的性能和流氓的手段,IE最終戰(zhàn)勝了Mozilla,但是從此IE也永久帶上了Mozilla的標(biāo)記。

五、浴火重生的狐貍:FireFox

但是,怪獸不愧是怪獸,強(qiáng)大的怪獸怎么能被流氓輕易擊敗呢?!

曾經(jīng)Mozilla的大神們卷土重來(lái),他們使用瀏覽器排版引擎Gecko(壁虎)發(fā)明了另一款優(yōu)秀的瀏覽器,它在插件拓展和開(kāi)發(fā)調(diào)試領(lǐng)域做出的貢獻(xiàn),絕對(duì)可以載入互聯(lián)網(wǎng)歷史。

這么跨時(shí)代的創(chuàng)造,叫什么好呢?眾所周知,Mozilla的大神們總是對(duì)怪獸情有獨(dú)鐘,既然我們從失敗中浴火重生,那么其名曰:Phoenix(鳳凰)!!

但是Phoenix(鳳凰)還沒(méi)起飛就遭遇了折翼,旁邊一家叫鳳凰科技的公司強(qiáng)烈抗議:魂淡,是我先叫Phoenix(鳳凰)的,你們侵權(quán)了!

大神們很無(wú)奈,沒(méi)辦法,那我們叫Firebird(火鳥(niǎo)),總行了吧?!雖然聽(tīng)起來(lái)挺中二的,但是也不行。因?yàn)橛幸豢顢?shù)據(jù)庫(kù)也叫這個(gè)名字。

大神們抓狂,起個(gè)名字怎么這么難?!淚流滿面的大神們最終給這款劃時(shí)代的瀏覽器起名叫FireFox(火狐)。

瀏覽器UserAgent的趣味史

FireFox(火狐)至今還是最常用的瀏覽器之一,可見(jiàn)其優(yōu)秀程度竟恐怖如斯!

大神們?yōu)榱烁嬖V開(kāi)發(fā)者們,我是如此的優(yōu)秀,你們可以給我更好更炫酷的頁(yè)面了!

于是,F(xiàn)ireFox(火狐)標(biāo)志自己的UserAgent為:Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0。

雖然這個(gè)UserAgent看起來(lái)很長(zhǎng),但是信息還是比較清晰,表明了自己的身份是Moziila5.0和Firefox/1.0,支持的系統(tǒng)和使用的Gecko的引擎。

和之前一樣,開(kāi)發(fā)者們只會(huì)給作為開(kāi)創(chuàng)者的FireFox(火狐)發(fā)送更優(yōu)質(zhì)的html頁(yè)面。FireFox(火狐)憑借優(yōu)秀的性能,發(fā)展非常迅速,雖然沒(méi)有打敗IE,但是也能和IE分庭抗禮。

六、萌賤萌賤的Konqueror

而在IE和FireFox(火狐)互掐的時(shí)候,其實(shí)市場(chǎng)上還存在另外一個(gè)著名的操作系統(tǒng)Linux。Linux看著Window的IE瀏覽器非常眼紅,于是尋思著也開(kāi)發(fā)一款基于Linux的瀏覽器。

大神就是大神,開(kāi)發(fā)瀏覽器就是小菜一碟!成功以后,Linux大神們一樣不能免俗,要為自己的孩子起一個(gè)響亮且霸氣的名字。

前有Moziila(哥斯拉),后有IE(探索者),那我們…..嗯,就叫:Konqueror(Conqueror的變體,低調(diào)低調(diào))征服者吧?。?66666)。

但是,Konqueror使用的是KHTML排版引擎,失去了先發(fā)優(yōu)勢(shì)。所以,Konqueror也遇到了和IE類似的問(wèn)題:開(kāi)發(fā)者們只認(rèn)UserAgent里面帶有Gecko的瀏覽器,不帶就休想獲得帶有良好排版的頁(yè)面!

小Konqueror非常無(wú)奈,萬(wàn)分糾結(jié)之下,做出了一個(gè)操作,把自己的UserAgent寫(xiě)成:Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。

就這樣,偉大的Konqueror為了獲取更優(yōu)質(zhì)的頁(yè)面,也不得不耍了點(diǎn)小心機(jī)。從此,(KHTML,like Gecko) 與IE的Mozilla一樣成了一道抹不去的印記。

七、魑魅魍魎,群魔亂舞!

發(fā)展到這,你以為就結(jié)束了嗎?天真!在互聯(lián)網(wǎng)這個(gè)狂熱的世界,只有你想不到,沒(méi)有你做不到!

腦洞大開(kāi)的Opera覺(jué)得IE和Konqueror的做法真的太棒了,甚得吾心!那咱也不能示弱?。杭热挥羞@么多可以選擇的UserAgent(馬甲),那我們是不是可以想變成誰(shuí)就變成誰(shuí)??。∣pera的大神們可能是百變小櫻的忠實(shí)粉絲)。

Opera直接在菜單提供了三個(gè)選擇項(xiàng):

  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)。

第一個(gè)是IE,第二個(gè)是火狐,第三個(gè)才是自己,芭芭拉小魔仙,你想變誰(shuí)就變誰(shuí)!

與此同時(shí),在科技的貴圈里,怎么能少得了我大Apple?!蘋果公司依靠“自己的”WebKit,開(kāi)發(fā)出Safari,并將UserAgent命名為:Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。

誒?!仔細(xì)一看,這不對(duì)啊,AppleWebKit不是蘋果公司自己的嗎,為啥還會(huì)帶有(KHTML, like Gecko)?!

蘋果邪魅一笑:呵呵,大驚小怪,因?yàn)槲覀兊膬?nèi)核Webkit排版引擎的核心叫WebCore,而WebCore是KHTML衍生而來(lái)的。也就是說(shuō),WebCore是KHTML的兒子,子承父業(yè),蘋果公司只能在UserAgent加上 (KHTML, like Gecko) 。

在越發(fā)混亂的瀏覽器貴圈里,谷歌也不甘寂寞,跳出來(lái)大聲宣布:我大谷歌也開(kāi)發(fā)了一款瀏覽器,它叫Chrome!

而Chrome設(shè)定的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一看:臥槽,從未見(jiàn)過(guò)如此厚顏無(wú)恥之徒!你怎么也在后面寫(xiě)有Safari?

Chrome呵呵一笑,你懂的——原來(lái)Chrome瀏覽器的內(nèi)核也是Webkit。

所以,最后讓我們來(lái)順一下:

  1. Chrome希望獲得Safari的頁(yè)面,所以偽裝成了Safari;
  2. 而Safari的內(nèi)核是WebKit引擎,而WebKit又是KHTML的兒子;
  3. KHTML又不得不易容成Gecko;
  4. 而由于IE的騷操作,瀏覽器又都宣稱自己是Mozilla……

至此,現(xiàn)在的瀏覽器,你隨便打開(kāi)一個(gè),查看他們的UserAgent,都會(huì)發(fā)現(xiàn)或多或少帶有這些印記。

大家現(xiàn)在應(yīng)該明白瀏覽器中那長(zhǎng)長(zhǎng)的UserAgent是怎么來(lái)的了吧。

 

作者:Jarvan;公眾號(hào):產(chǎn)品叨比叨

本文由 @Jarvan 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來(lái)自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 歐摩西羅伊

    來(lái)自四川 回復(fù)