瀏覽器UserAgent的趣味史
編輯導語:User Agent,簡稱UA,中文名為用户代理,是一種向訪問網站提供你所使用的瀏覽器類型及版本、操作系統及版本、瀏覽器內核、等信息的標識。通過這個標識,用户所訪問的網站可以顯示不同的排版從而為用户提供更好的體驗或者進行信息統計。接下來,本文作者為我們總結了其發展的趣味史。
最近在看《給產品經理講技術》,其中有一段簡要的提到了瀏覽器UserAgent的含義和作用。在最後作者暗示UserAgent的變遷是一段充滿趣味性的歷史,為了滿足我的好(吃)奇(瓜)心理,我去深扒了一下。
結果不扒不知道,一扒嚇一跳。今天就給大家分享一下這個陳年老瓜。
首先,我們先簡要了解一下各大瀏覽器的出生日期:
大家先對這些瀏覽器的出生時間有一個概念,然後大家把板凳和西瓜拿好,讓我們開始吧~
一、第一個瀏覽器:Nexus1989年,超級大神伯納斯·李教授發明了萬維網(World Wide Web,簡稱3W),然而大神並不滿足於此,為了大家能更方便地訪問萬維網,大神大手一揮,推出了世界上第一款瀏覽器。
李大神尋思給它起個什麼名字呢?
此時,李大神可能是懶蟲上身,想也不想,要不就叫World Wide Web,跟大兒子(萬維網)一個名字吧!
後來大神感覺交流起來不是很方便,經常不知道World Wide Web指的是誰,而且這麼偷懶的行為有點對不起小兒子,於是把小兒子的名字改成了Nexus。
由於是瀏覽器的祖師爺,沒有競爭對手,Nexus馬上就流行了起來。
由於是最早的瀏覽器,Nexus只支持文字展示,還不支持圖片展示,而這恰好給了競爭對手可乘之機,同時也是UserAgent的由來。
二、第一個帶圖的瀏覽器:Mosaic1993年,伊利諾伊的NCSA組織認為沒有圖片的網頁就像失去顏色的世界!作為一羣完美主義者,這完全不能忍!
因此他們發明了第一個可以顯示圖片的瀏覽器:Mosaic(馬賽克),能顯示圖片,但大神們偏偏任性取名叫馬賽克!眾多吃瓜羣眾不禁直呼內行!
由於能顯示圖片的特性,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。
什麼意思呢? 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(火狐)。
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直接在菜單提供了三個選擇項:
- Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51;
- Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0;
- 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。
所以,最後讓我們來順一下:
- Chrome希望獲得Safari的頁面,所以偽裝成了Safari;
- 而Safari的內核是WebKit引擎,而WebKit又是KHTML的兒子;
- KHTML又不得不易容成Gecko;
- 而由於IE的騷操作,瀏覽器又都宣稱自己是Mozilla……
至此,現在的瀏覽器,你隨便打開一個,查看他們的UserAgent,都會發現或多或少帶有這些印記。
大家現在應該明白瀏覽器中那長長的UserAgent是怎麼來的了吧。
作者:Jarvan;公眾號:產品叨比叨
本文由 @Jarvan 原創發佈於人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基於CC0協議