瀏覽器野史 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并不陌生,但明明一個單詞就可以說清楚的事情,卻是這么掏心掏肺的回答。怪可憐的,一定有冤情。

后來我查閱了很多資料,發(fā)現(xiàn)歷史非常的精彩。

image

 大事年表

  • 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發(fā)明了WorldWideWeb,即萬維網(wǎng)。同時,李大神也發(fā)明了第一款瀏覽器。真是具有跨時代意義的工具呀,好偉大呀,人們在想,叫什么好呢?

但大神就是大神,大神內心的想法又豈是爾等凡人能夠肆意揣摩?

萬萬沒想到,李大神說,我這瀏覽器,也叫WorldWideWeb!不行么?

行行行。

雖然李大神起名字這么拽,但他后來發(fā)覺,還是得賦予一點承上啟下的歷史意義,就改名成“Nexus”。值得注意的是,這瀏覽器,居然是可以兼容Unix跟Microsoft DOS的。它在當時流行的各種電腦上跑得飛起,應用也越來越廣,被稱為“殺手級應用”。殺手級…你們看互聯(lián)網(wǎng)一開始就是這么的腥風血雨。

但這個瀏覽器,還不支持圖片的顯示,這是出現(xiàn)UserAgent的導火索。

 二、唐堯虞舜

93年,伊利諾大學的NCSA組織認為,瀏覽器無圖無真相,這不好。因而他們發(fā)明了第一款可顯示圖片的瀏覽器。

真是具有跨時代意義的工具呀,好偉大呀,人們在想,叫什么好呢?

但大神就是大神,大神就是連起名字都讓你驚心動魄。

NCSA組織說,它能顯示圖片,偏偏我們就要叫它“馬賽克(Mosaic)”!不行么?

行行行。

但有人就問了,Nexus不顯示圖片,Mosaic能顯示,你們讓html提供者怎么寫代碼?你們是不是想逼死選擇困難癥患者?有沒有考慮過天秤座的感受?

因而UserAgent就誕生了。Mosaic將自己標志為 NCSA_Mosaic/2.0 (Windows 3.1),大家該怎么寫代碼就怎么寫,但請求會帶上這個信息,服務器就知道該不該返回能顯示圖片的html。UserAgent君,出生時跟我們設想的一樣簡單,僅僅標明了自己是什么瀏覽器,在什么系統(tǒng)運行,以及各自的版本號。

新舊瀏覽器們像彬彬有禮的君王,商議和讓位是為了更好的繁榮。但風雨欲來。

三、楚漢爭霸

像劉邦一樣,走出來一個攪局的小流氓。當然他還是很有志向的,他的目標,就是戰(zhàn)勝霸主Mosaic。后來,他還真的做到了。

如今,所有現(xiàn)代瀏覽器的UserAgent里都有它的標志,就像漢朝之后,我們都稱為“漢”人。一群很有天賦的程序員,一起締造了它的輝煌。

真是具有跨時代意義的工具呀,好偉大呀,人們在想,它叫什么呢?

但大神就是大神,大神就是讓你永遠也猜不到他們想了個什么名字。

大神們說,叫Mozilla,不行么?

行。但什么意思呢?

含義有二。其一,哥斯拉(Godzilla)諧音,誠然是一頭野心勃勃的怪獸;其二,”Mosaic Killa”之意,Killa是俚語中Killer的拼法,即“馬賽克的終結者”,赤裸裸的挑戰(zhàn)。

驚呆了的Mosaic小心翼翼的念著Mozilla這發(fā)音:“Mo…摸咋了?”勃然大怒,“摸你妹!”

鑒于Mosaic當時的權勢,Mozilla改名成Netscape Navigator(網(wǎng)景航海家)。小怪獸突然變成有點文藝小清新的名字,郁悶得很,但內心的血液沸騰著。雖然叫大名叫網(wǎng)景,但它把UserAgent偷偷設置成 Mozilla/1.0 (Win3.1)。還是摸咋了?咬我?

 四、宋元之戰(zhàn)

很快,NetScape戰(zhàn)勝了Mosaic,成為了新的霸主,因為其更優(yōu)的展示。

NetScape最先支持了html框架顯示,就是簡單的table布局,內外邊距之類,僅僅這點就將Mosaic拋諸身后。區(qū)別這兩個瀏覽器,還是用的UserAgent。如果是UserAgent里含有“Mozilla”字樣,那就發(fā)送支持框架的頁面,否則,就發(fā)送不含框架的頁面。

NetScape帝國日益龐大,歌舞升平,一切風平浪靜,直到微軟的鐵騎揮軍南下。

微軟發(fā)布了一款跟系統(tǒng)強綁定的瀏覽器,真是具有跨時代意義的工具呀,好偉大呀,人們在想,它叫什么呢?

不用想了,就是IE。這命名也相當簡單粗暴,Internet Explorer,直接把這工具的用途拍在你臉上。連說明書都可以免了。

IE也是支持html標準框架的,但由于前面的歷史原因,人們只會給UserAgent里含有“Mozilla”字樣的瀏覽器發(fā)送含框架的頁面。但這點小事能難倒我大微軟?IE呵呵一笑,把自己的UserAgent改成 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)???,我這里也有“Mozilla”字樣,也能收到含框架的頁面了!

當然,這個小流氓行為,跟后來把IE和Windows捆綁一起銷售的大流氓行為比起來,根本不為足道。后面的故事我們也知道了,IE把NetScape干掉了。但它的身體上,卻永遠的烙上了“Mozilla”的印記。

 五、康乾盛世

看過奧特曼的都知道,怪獸被打敗了會再回來。別忘了NetScape曾擁有一批大神們,失敗后,他們圍繞著瀏覽器排版引擎Gecko(壁虎)成立了非正式組織Mozilla。小怪獸再次出發(fā)。大神們發(fā)明了另一款優(yōu)秀的瀏覽器,它在插件拓展和開發(fā)調試領域做出的貢獻,絕對可以載入互聯(lián)網(wǎng)歷史。

真是具有跨時代意義的工具呀,好偉大呀,人們在想,它叫什么呢?

但大神就是大神,大神就是即使你知道了Mozilla的命名都是野獸,卻還是猜不到是什么。

Mozilla說,我們浴火重生,叫Phoenix(鳳凰)!不行么?

真不行。

剛推出就被人告了,原來已經(jīng)有一家公司叫做“鳳凰科技”。

Mozilla瀑布汗,改名叫Firebird(火鳥)!還不行么?

我們得原諒一下他們的取名,雖然現(xiàn)在看來滿滿的山寨感,可放在那個時代,F(xiàn)irebird這名字很炫酷。就像你當初的QQ昵稱叫赤炎天使感覺依然良好一樣。

但是,他們發(fā)現(xiàn),業(yè)內有個數(shù)據(jù)庫系統(tǒng),也叫的Firebird…淚流滿面的Mozilla感慨重生好難呀。最后才決定叫Firefox(火狐)。

基于Gecko引擎的Firefox非常優(yōu)秀,為了告訴大家,我使用了這個引擎,它標志自己的UserAgent為 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0
  這時候的UserAgent,雖然長了點,但它并不混亂,準確的標明了系統(tǒng),排版引擎,瀏覽器名稱等信息。雖然IE這時已經(jīng)占有了很大的市場份額,但基本停步不前;而Mozilla經(jīng)過一段時間的修生養(yǎng)息,F(xiàn)irefox在業(yè)內廣受好評,得到了快速的發(fā)展。

時值2003年,web2.0的浪潮前夕,瀏覽器的發(fā)展達到了空前的盛世。

然而所謂否極泰來,盛極則衰。涅槃的Firefox迎來盛世,卻又恰恰由于盛世,決定了UserAgent糾結的命運。

image

 六、師夷長技

前面說到,微軟靠Windows系統(tǒng)捆綁IE銷售。而Windows自然也有它的對手,Linux。一個技術快速發(fā)展的時代,系統(tǒng)的世界里也是戰(zhàn)火紛飛。Linux系統(tǒng)自從有了可視化界面,也需要瀏覽器呀。桌面系統(tǒng)KDE的締造者們就發(fā)明了一個。

真是具有跨時代意義的工具呀,好偉大呀,人們在想,它叫什么呢?

但大神就是大神,大神就是講究先從文字上占據(jù)壓垮你的氣勢。

先有Navigator航海家,再有Explorer探索者,咱就叫Konqueror(Conqueror的變體)征服者吧。

行行行。我已懶得理這幫大神…

可是,問題來了。Konqueror使用KHTML排版引擎,即使它們認為自己跟Gecko引擎一樣優(yōu)秀,但用戶不買單。你UserAgent里沒有“Gecko”字樣,我就不給你經(jīng)過優(yōu)良排版的html。

結果,Konqueror思來想去,做了一個艱難但很萌的決定,把UserAgent寫成Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

這就是現(xiàn)代瀏覽器里like Gecko這一萌詞的由來。

就這樣,偉大的排版引擎KHTML為了獲得更好的資源,師夷長技。這并沒什么不好,卻造成了UserAgent的越發(fā)混亂。

KHTML與Gecko這一對,永遠卿卿我我比翼雙飛在UserAgent里面了。那個滿含深意的“l(fā)ike”,有人覺得翻譯成“像”,但也有人覺得應該是“喜歡”…

 七、世界大戰(zhàn)

首先是IE冷靜下來了,他覺得,你們不帶這么玩的?

就我年少時不懂事,首先改了個Mozilla字樣,后面追究這歷史我豈不是成了罪魁禍首?我改還不行嗎?

在IE6,它明確自己UserAgent為 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)。除去已經(jīng)注定不可抹去的“Mozilla”字樣,其余信息簡潔,準確,清晰。

但事態(tài)已經(jīng)不可收拾。

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.51,Opera/9.51 (Windows NT 5.1; U; en)三個選擇項。第一個是易容成IE,第二個是易容成火狐,第三個才是自己,選誰就是誰!

其實這并不是一件壞事。因為Opera是站在能夠讓用戶通過選擇,去獲得更好的瀏覽體驗的基礎上的。你提供選擇,或是不提供,混亂的UserAgent還是在這,不離,不棄。再者,這對網(wǎng)頁的開發(fā)者有極大的好處,在某些情況,你不必同時打開幾個不同的瀏覽器去調試。到目前,最新的Chrome瀏覽器更加炫酷,能夠支持近40種不同的UserAgent,甚至你還可以自定義。當然這是后話。

與此同時,蘋果公司依靠內核WebKit,開發(fā)出Safari,命名UserAgent為Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

有人就會問了,不是Webkit內核嗎,怎么還有KHTML, like Gecko?注意,內核Webkit包含了一個排版引擎叫WebCore,而WebCore是KHTML衍生而來的。也就是說,WebCore是KHTML的兒子,子承父業(yè),基因差不多。為了能夠正常排版,safari只能這么寫。

后來,google也開發(fā)了自己的瀏覽器Chrome,其內核也是Webkit,但它設定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希望能得到為Safari編寫的網(wǎng)頁,于是決定裝成Safari,Safari使用了WebKit渲染引擎,而WebKit呢又偽裝自己是KHTML,KHTML呢又是偽裝成Gecko的。同時所有的瀏覽器又都宣稱自己是Mozilla。

這就是整個UserAgent世界大戰(zhàn)的格局…

 八、軍閥混戰(zhàn)

將目光聚焦到國內,更是狼煙四起,混亂不堪。大家都知道,瀏覽器是互聯(lián)網(wǎng)的入口,這塊肥肉誰也不想丟。因而一個接一個的“國產”瀏覽器進入斗獸場。

360,百度,QQ,UC,搜狗,獵豹,遨游,世界之窗…你能說出一大堆。連淘寶,酷狗,hao123都有瀏覽器,不信你搜。

注意我前面“國產”兩個字必須加上雙引號,因為這個made in china并不純。國人并沒能像遠古大神一樣,硬生生發(fā)明一個內核出來,我們更擅長“微創(chuàng)新”。

利用Trident(IE的內核),包裝一下皮膚,美化一下,就可以說:完美兼容

利用Webkit,包裝一下皮膚,美化一下,就可以說:極速瀏覽

把兩個內核都包起來,就可以說:智能雙核

是微創(chuàng)新!讀書人的事,能叫偷嗎?

在這插播一下,瀏覽器的“雙核”,并不是你聽說手機雙核電腦雙核那回事。再多個核,速度也不會更快,當然這么說,會顯得很厲害的樣子。德藝雙馨,智勇雙全,名利雙收,才貌雙絕,夫妻雙雙把家還,你看帶“雙”字的詞都很牛的。

但我上面的敘述,的確有夸張的成分。瀏覽器的誕生,肯定不僅僅是包一下皮膚那么簡單,國內的工程師們,也苦心研究做了許多工作。如果要說優(yōu)化策略,我可以再寫一篇超級長的文章。優(yōu)化無止境,路漫漫其修遠,向同行們致敬。只是我非常討厭那些不把事實說清楚,純粹靠文案去忽悠人的產品…

話說回來,這么多國產瀏覽器,總得靠不同UserAgent標志自己呀。

大家自動分為兩個陣營:使用Trident內核的,在IE已有UserAgent后添加自己的名稱;使用Webkit內核的,就在Chrome的UserAgent后面添加。

前者像QQ瀏覽器:Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.7.26717.400)。

后者像獵豹:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36 LBBROWSER。
當然雙核瀏覽器誠然就是墻頭草,切換內核時UserAgent也需要跟著變化。

如此的混戰(zhàn)格局,這廂的IE和Chome想必也是醉了。

 九、國共內戰(zhàn)

適者生存是不變的生存法則,國產瀏覽器們經(jīng)過一段時間的用戶篩選,自然優(yōu)勝劣汰。時值2010年,真正還在運營和更新的瀏覽器數(shù)量慢慢下降,用戶集中在幾家表現(xiàn)更優(yōu)異的廠商手中。就在這時,好看的故事來了——3Q大戰(zhàn)爆發(fā)。

有人說,騰訊電腦管家的推出是導火索。其實這場仗,大家都忍了好久,推不推出,都一定會在某個事件后爆發(fā)。360瀏覽器是奇虎的重量級產品,用戶量眾多,2009年它推出一個功能:過濾其它網(wǎng)站的廣告。誠然民眾們都很喜歡??墒瞧渌ヂ?lián)網(wǎng)公司肯定就不樂意了,用戶看不到更點擊不到廣告,這錢還怎么賺?

因而在3Q大戰(zhàn)爆發(fā)后,騰訊的一個手段就是:如果你使用360瀏覽器,就不能訪問QQ的網(wǎng)站(單單QQ空間就有巨大的用戶量),也直接反攻360的最大收入來源。一個艱難的決定背后,往往是需要無數(shù)種的技術戰(zhàn)略支撐的。企鵝判斷用戶是否使用360瀏覽器,依靠的就是UserAgent里是否有“360SE”的字樣。

戰(zhàn)報傳來:號外,360瀏覽器上不了QQ空間!已經(jīng)買了黃鉆的殺馬特貴族急了呀!只能換瀏覽器了呀!感覺侢乜卟噲噯嘞呀!

2011年11月3日,騰訊網(wǎng)站封殺360瀏覽器

2011年11月4日,360瀏覽器訪問量僅為昨日一半

2011年11月5日,360瀏覽器訪問量幾乎為0

有人說,騰訊就這么快贏了?恰恰相反,360瀏覽器通過一次強制的自動升級,又可以訪問QQ的網(wǎng)站了。360的工程師們在5日使用了偽裝術——把“360SE”字樣從UserAgent中去掉!

意思就是,360瀏覽器的UserAgent跟IE完全一樣,你根本判斷不出來(因而訪問量為0)。就怕流氓有文化!企鵝傻眼了,總不能把大微軟的IE也一并給禁了吧…

這場土匪遇惡霸的耍流氓大戰(zhàn),最終通過法律而化解。企鵝在技術側拿360沒辦法,而360則得到了一個跟IE一樣的身份證。在這場內戰(zhàn)中,受傷的除了廣大網(wǎng)民們,其實還有令人心疼UserAgent君,以往讓它越長越長就算了,這次長了還得閹割掉,真心dan疼呀。

十、明日邊緣

看到這里,大家會明白一個道理:如果未來不出現(xiàn)一款霸主級別的瀏覽器(或內核),UserAgent應該不會有大變化了。

不過,這道理并不全對。別忘了,移動側也是有瀏覽器的。

在早期能上網(wǎng)的手機里,內置了各手機廠商自研的瀏覽器。這些瀏覽器并不需要像PC一樣的復雜設計,可以訪問wap網(wǎng)頁就足夠了。因而它們的UserAgent命名,怎么簡單怎么來,就直接叫諾基亞 3100 Nokia3100/06.01 (UCWEB 3.3B), PHILIPS755 ObigoInternetBrowser/2.0 這樣,有甚者連瀏覽器叫什么都不帶 TCL-3199,三星 E618 SEC-SGHE618。

這樣任由發(fā)展下去,一種要歷史重演,往日重現(xiàn)的即視感壓迫而來。

web世界的聯(lián)合國——W3C組織,站在明日邊緣,面對著歷史和未來,終于發(fā)話,它制定UserAgent標準,以后都得按這規(guī)范去起名字。詳細請閱User Agent Accessibility Guidelines。至此,命運坎坷的UserAgent終于逐步走向規(guī)范。W3C大法好,有人說你怎么不早點來拯救世界呀!其實W3C一直在努力,但規(guī)范的制定,到推廣至大家認可并執(zhí)行,是一條漫長的道路,需要時間,也需要實踐。

W3C組織,在制定web標準這件工作之外,再我看來,還有兩個身份:1、和事佬;2、背黑鍋。和事不成,就得背黑鍋。是的就是這樣。

 彩蛋

那么,我們的故事接近尾聲。還有一些有趣的小彩蛋。

  1. Chome 28開始,與蘋果正式分道揚鑣,采用Blink內核,但它的UserAgent并不改變。

  2. 淘寶封殺微信打開淘寶頁面,靠的就是微信內置瀏覽器UserAgent里的MicroMessenger字樣。其實微信也可以像當初360一樣把UserAgent去掉,但微信并不這樣做。

  3. 360出招之時留有后招。也許,它一開始就想到了騰訊會告他們對于UserAgent的欺瞞,因而它其實提供了設置項。默認設置是“保持跟IE一樣的UserAgent”,但用戶也可以不勾選。只是這選項比較隱蔽,而且你重啟瀏覽器后…又會變回默認設置。如果沒有這個小小的設置,結果大家可以自行想象。

  4. 微軟又玩新花樣了,在IE11中,去掉了以往的MSIE字樣。初步猜測此舉是為了使現(xiàn)有的 CSS hack 失效,避免過去網(wǎng)頁設計師對IE差別對待的情況再度發(fā)生。但又會引發(fā)其他問題啊親。

裝載自:http://litten.me/2014/09/26/history-of-browser-useragent/

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容