瀏覽器 UA 的變遷史

sunxyw發表於2022-07-09

本篇文章基於 WebAIM 釋出的《History of the browser user-agent string》潤色及修改。
原文地址:WebAIM: History of the browser user-agent string

在一切的開始,有個瀏覽器名為 NCSA Mosaic,它可以顯示文字和圖片,引起了人們的歡呼。在那時,它自稱 NCSA_Mosaic/2.0 (Windows 3.1)

不久後,一個新的瀏覽器核心,Mozilla 出現了,意為 Mosaic 的終結者,使用它的第一個瀏覽器,名為 Netscape,網景,它的 UA 叫 Mozilla/1.0 (Win3.1)

Netscape 帶來了劃時代的創新,Frames。越來越多的網站開始使用這種新技術,但它們面臨著一樣的難題,相容。是的,Mosaic 並不支援這種新穎的技術。為了保持網站在不同瀏覽器上的體驗,開發者開始採用瀏覽器嗅探技術,也就是判斷 UA 的手段,為 Mozilla 返回 frames,其他則不返回,這也是 UA 最初的作用。

後來,自大的 Netscape 取笑 Windows 為漏洞百出的裝置驅動器。微軟當然不能忍,當即研發了自己的瀏覽器,曾經的時代引領者,後來的眾人唾棄者,Internet Explorer。IE 同樣支援 Frames 技術,但當時的網站只為 Mozilla 返回帶 Frames 的頁面。IE 等不及各種網站適配自己,於是開始宣稱自己為 Mozilla,表示 Mozilla 能做的,我都能做。於是它的 UA 變成了 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)

IE 也能展示使用 Frames 的網站了,微軟上下都為自己的聰明才智感到高興,但開發者們卻陷入了困惑。

再後來,微軟透過捆綁銷售手段,把 IE 隨同 Windows 一起提供給使用者,使得 IE 的佔比遠超其他瀏覽器。第一次瀏覽器大戰以 Netscape 退場告終。

再之後,Netscape 以 Mozilla 之名重生,並帶來了 Gecko 渲染引擎。它自稱 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826

後來 Mozilla 改名叫做 Firefox,Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0

而以 Gecko 為核心開發的其他瀏覽器,比如 SeaMonkey 等,則自稱為 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0

嗅探技術大行其道,網站開始為 Gecko 返回更好的頁面。但使用 KHTML 的 Konquener 瀏覽器卻遭了殃,它明明跟 Gecko 一樣好,卻沒法收到好的頁面,於是它跟 IE 曾經的做法一樣,假裝自己是 Gecko。Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

大家都很高興,唯獨開發者們發了懵。

這時,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,卻包含了許多額外功能,並將其命名為 WebKit。但 Safari 也想拿到和 KHTML 一樣的網頁。於是它的 UA 變成了 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

UA 越來越長。

微軟害怕 Firefox 取代它的地位,於是開始自稱 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0),並支援各種 Firefox 功能。

再後來,Chrome 出現了。它基於 WebKit,也想獲得跟 Safari 一樣的網頁,於是自稱 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

最後的最後,瀏覽器 UA 是這樣的:Chrome 假裝是 Safari,WebKit 假裝是 KHTML,KHTML 假裝是 Gecko,最終,所有瀏覽器都假裝是 Mozilla。

它們互相假裝對方,UA 開始變得混亂、無用,變成了現在的樣子。

但 Chrome 出現後,瀏覽器似乎出現了大一統的局面,不同瀏覽器的技術不再分裂,而是基於同一個標準,大部分技術也在不同瀏覽器上達到了通用,瀏覽器嗅探技術現在也不再是必備。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章