瀏覽器User-Agent的前世今生
Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。
一切的開始還得從
NCSA Mosaic說起,
Mosaic是由國家超級計算機應用中心開發的一款瀏覽器。稱作
「
NCSA_Mosaic/2.0(
Windows 3.1)」,
Mosaic支持在文本中展示圖片,因此瀏覽器變的非常有趣了。
然而很快就出現了一個全新的瀏覽器,那就是著名的
Mozilla,它被稱為「
Mosaic殺手」,然而
Mosaic顯得不高興了,於是後來
Mozilla更名為
Netscape,
Netscape自稱「
Mozilla/1.0(Win3.1)」,事情開始變得更加有趣了。
Netscape支持框架,框架深受大家喜愛便流行開來,但是
Mosaic不支持框架,於是網站管理員探測瀏覽器的
User-Agent
,對
Mozilla瀏覽器發送含有框架的頁面,對非
Mozilla瀏覽器發送沒有框架的頁面。
後來
Netscape戲稱微軟的
Windows是「非調試過的硬體驅動程序」,結果微軟很生氣。於是微軟開發了自己的網路瀏覽器
Internet Explorer,微軟對
Internet Explorer
寄予厚望,並希望它可以成為「Netscape
殺手
」。
Internet Explorer也支持框架,但它不像
Mozilla可以接收有框架的頁面。微軟很快失去了耐心,它不能坐以待斃,微軟選擇將
Internet Explorer兼容
Mozilla,開始模仿
Netscape,稱
Internet Explorer為「
Mozilla/1.22(compatible; MSIE 2.0; Windows 95)」,所以
Internet Explorer
可以收到含有框架的頁面了,所有微軟的人都很高興,但是網站管理員卻為此大為苦惱。
微軟將
Internet Explorer和
Windows捆綁銷售,而且把
Internet Explorer做得比
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
表現出色,而
Internet Explorer比不過它,之後嗅探規則變了,
Gecko的瀏覽器被發送了更優秀的代碼,而其他瀏覽器卻不是。那些使用
Linux
的人對此很難過,因為他們編寫了
Konqueror,它的引擎是
KHTML,他們認為
KHTML和
Gecko一樣優秀,但卻因為不是
Gecko不能接收好的頁面,於是
Konqueror開始將自己偽裝成「
like Gecko」,並自稱「
Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)」。事情變得有些複雜了。
這時
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)」。
之後蘋果使用
KHTML渲染引擎開發了
Safari,但加入了許多特性,並另闢分支稱之為
WebKit,但它仍想為
KHTML編寫頁面,所以
Safari自稱「
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5」,事情變得更加糟糕了。
微軟十分忌憚
Firefox的強大,
Internet Explorer重新回歸,這次它自稱
「
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)」,它提供了更加優秀的代碼,但是需要網站管理員的指令。
此時谷歌使用
Webkit作為渲染引擎開發了
Chrome,和
Safari一樣,那些想要那些為
Safari編寫的頁面,於是偽裝成了
Safari。於是
Chrome使用
WebKit,偽裝成
Safari,
WebKit偽裝成
KHTML,
KHTML偽裝成
Gecko,最後所有的瀏覽器都偽裝成
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最後完全混亂了,而且毫無章法,所有瀏覽器都偽裝成其它的瀏覽器,致使整個事情變得混亂有趣!
英文原文:https://webaim.org/blog/user-agent-string-history/
譯者:譚冰
![](https://pic.pimg.tw/zzuyanan/1488615166-1259157397.png)
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
TAG:Python程序員 |