1. 程式人生 > >有趣的瀏覽器發展史

有趣的瀏覽器發展史

血戰

普遍認為,91年正式釋出的WorldWideWeb是全球最早的一款瀏覽器,後來改名為Nexus,特點是可以相容Unix和Microsoft DOS的,但是還不支援圖片的顯示,雖然功能有限,但在當時卻非常流行。

93年,美國伊利諾州的NCSA組織發明了一款可以顯示圖片的瀏覽器,可是偏偏就命名為馬賽克(Mosaic),這不當緊,讓“網路管理員”抓狂了,怎麼分辨你的瀏覽器是否能顯示圖片呢,所以 UserAgent就誕生了,Mosaic將自己標誌為NCSA_Mosaic/2.0(windows 3.1),這也是我們使用瀏覽器傳送請求的時候請求頭有一個欄位為UserAgent的最開始原因

94年,Mosaic開發的中心人物 馬克·安德森等成立了“MOSAIC Communication Corp”, 但是由於NCSA擁有Mosaic的商標權,使得開發團隊不得不徹底重新撰寫瀏覽器程式碼,試圖打破Mosaic的的壟斷,開發了一款瀏覽器 Mozilla ,Mozilla 啥意思呢 Mozilla = Mosaic Godzilla Killa ,Godzilla,哥斯拉龐然怪獸,Killa是俚語中Killer的拼發,大概的意思就是馬賽克終結者。但是Mosaic非常不高興,該瀏覽器最大的特點是以共享軟體的方式販賣,同時又支援框架(frame),而Mosaic不支援框架,所以網景當時的市場佔有率約有90%,可謂是一個瀏覽器界發展史上的重要里程碑。為了避免和NCSA的商標擁有問題,將公式改名為網景通訊公司(Netscape Communications Corporation),同年,瀏覽器軟體也改名為 Netscape Navigator,也就是我們所知道的大名鼎鼎的網景瀏覽器。有趣的是,它大名雖然叫網景,但是偷偷的把UserAgent 設定成 Mozilla/1.0,於是網站管理員探測UserAgent對於Mozilla瀏覽器傳送含有框架的頁面

接下來,網景瀏覽器繼續迅速發展,伴隨著Java等技術標準的提出,一種基於Internet而首次和微軟的作業系統無關的新的軟體體系形成,以網景為首的一批網際網路技術公司的崛起,迅速構成了一股隱隱的可以與微軟分庭抗禮的新力量。讓微軟感到害怕的是:如果網景在瀏覽器市場上取得壟斷性優勢,它就完全有可能和實力推出一套新的作業系統以替代微軟的Windows。所以比爾蓋茨和網景談判,希望能建立合作關係,這可是微軟僅有的一次“屈膝”。可是已經取得戰略先機的網景豈會買賬,談判破裂。

這下徹底惹怒了微軟,95年,被逼急了的微軟在短短的一年時間,投入20億美元,通過購買(包括Mosaic的授權)、兼併和開發等多種手段,迅速地推出了一個瀏覽器產品IE2.0。為了徹底摧毀網景,微軟決定,將這一產品實行免費開放。不要白不要的IE一下子就把瀏覽器市場的遊戲規則給衝亂了。在此之前,網景瀏覽器的收費標準為45美元,而IE的功能與之相近卻分文不收,無疑讓包括網景在內的所有公司和消費者都目瞪口呆。這還不夠,半年後,微軟又使出另一個殺手鐗,宣佈Windows95與IE捆綁銷售,這一招讓網景徹底絕望了,眼看著微軟利用作業系統的壟斷(當時windows作業系統擁有的90%以上的份額)去創造另一個新的壟斷,瀏覽器的市場迅速被微軟搶佔,有趣的是IE瀏覽器也支援框架,但是要等到所有網站管理員都瞭解到了IE,才給IE也傳送含有框架的頁面,顯然IE一刻也不想等了,它宣佈自己是相容Mozilla的,還將自己的UserAgent改成了 Mozilla/1.22(compatible; MSIE 2.0; Windows 95),所以IE瀏覽器就也能收到含有框架的頁面了

98年,網景在與IE瀏覽器競爭失利以後,為了挽回市場,宣佈旗下所有軟體以後都是免費,並開放了網景通訊家(Netscape Communicator)4.0的原始碼,成立了非正式組織Mozilla。

微軟已經佔據了作業系統的壟斷市場了,眼看瀏覽器的市場也將被壟斷。為了讓這不成為事實,98年11月美國線上AOL 耗資42億美元收購了網景,避免了這一切的發生。為了防止瀏覽器再度被壟斷,美國線上在後面幾年相繼釋出了 Netscape 5 6 等幾個版本。可是這對微軟來說完全都不是事,完全動搖不了IE的地位。於是美國線上和微軟因為瀏覽器壟斷這事情一直沒能達成協議,打官司。

最後微軟因濫用壟斷能力而敗訟後,美國線上向微軟提出索償訴訟。在2003年5月,微軟和美國線上達成和解協議,願意支付網景7.5億美元,並同意向美國線上提供7年無限制的使用和散佈Internet Explorer的權利。這被認為是“網景退出的訊號”。

03年七月,美國線上解散網景公司,網景的標誌也從辦公大樓中去除,並且將Netscape的原始碼送給開源社群,並且成立了Mozilla基金會,而這個基金會就是現在Firefox瀏覽器的管理與推進組織

瀏覽器中的Mozilla

因為微軟將IE和Windows捆綁銷售,並且把IE做得比Netscape更好,於是第一次瀏覽器血腥大戰爆發了,結果是Netscape以失敗退出歷史舞臺,微軟更加嗨皮。但沒想到Netscape居然以Mozilla的名義重生了,並且開發了Gecko,這次它自稱為“Mozilla/5.0(Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826”。

Gecko是一款渲染引擎並且很出色。Mozilla後來變成了Firefox,並自稱“Mozilla/5.0 (Windows; U;Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108
Firefox/1.0”。Firefox效能很出色,Gecko也開始攻城略地,其他新的瀏覽器使用了它的程式碼,並且將它們自己稱為“Mozilla/5.0
(Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825
Camino/0.8.1”,以及“Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008
SeaMonkey/1.0”,每一個都將自己裝作Mozilla,而它們全都使用Gecko。

Gecko很出色,而IE完全跟不上它,因此useragent探測規則變了,使用Gecko的瀏覽器被髮送了更好的程式碼,而其他瀏覽器則沒有這種待遇。Linux的追隨者對此很難過,因為他們編寫Konqueror,它的引擎是KHTML,他們認為KHTML和Gecko一樣出色,但卻因為不是Gecko而得不到好的頁面,於是Konqueror為得到更好的頁面開始將自己偽裝成“like Gecko”,並自稱為“Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”。自此user agent變得更加混亂。

這時更有Opera跳出來說“毫無疑問,我們應該讓使用者來決定他們想讓我們偽裝成哪個瀏覽器。”於是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)”。

後來蘋果開發了Safari瀏覽器,並使用KHTML作為渲染引擎,但蘋果加入了許多新的特性,於是蘋果從KHTML另闢分支稱之為WebKit,但它又不想拋棄那些為KHTML編寫的頁面,於是Safari自稱為“Mozilla/5.0(Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”,這進一步加劇了user agent的混亂局面。

因為微軟十分忌憚Firefox,於是IE重灌上陣,這次它自稱為“Mozilla/4.0 (compatible; MSIE 8.0;Windows NT 6.0) ”,並且渲染效果同樣出色,但是需要網站管理員的指令它這麼做才行。

再後來,谷歌開發了Chrome瀏覽器,Chrome使用Webkit作為渲染引擎,和Safari之前一樣,它想要那些為Safari編寫的頁面,於是它偽裝成了Safari。於是Chrome使用WebKit,並將自己偽裝成Safari,WebKit偽裝成KHTML,KHTML偽裝成Gecko,最後所有的瀏覽器都偽裝成了Mozilla,這就是為什麼所有的瀏覽器User-Agent裡都有Mozilla。Chrome自稱為“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”。

因為以上這段歷史,現在的User-Agent字串變得一團糟,幾乎根本無法彰顯它最初的意義。追根溯源,微軟可以說是這一切的始作俑者,但後來每一個人都在試圖假扮別人,最終把User-Agent搞得混亂不堪。
一句話結論:因為網站開發者可能會因為你是某瀏覽器(這裡是
Mozilla),所以輸出一些特殊功能的程式程式碼(這裡指好的特殊功能),所以當其它瀏覽器也支援這種好功能時,就試圖去模仿 Mozilla
瀏覽器讓網站輸出跟 Mozilla 一樣的內容,而不是輸出被閹割功能的程式程式碼。大家都為了讓網站輸出最好的內容,都試圖假裝自己是 Mozilla 一個已經不存在的瀏覽器……

附各大瀏覽器誕生年表:
- 1993年1月23日:Mosaic
- 1994年12月:Netscape
- 1994年:Opera
- 1995年8月16日:Internet Explorer
- 1996年10月14日:Kongqueror
- 2003年1月7日:Safari
- 2008年9月2日:Chrome