原文地址:History of the browser user-agent string 翻譯文章地址:瀏覽器user-agent的歷史css
譯者:一篇有些年頭的文章,若是你對於瀏覽器user agent的歷史不甚瞭解(就像我),那麼這篇文章對於你應該頗有幫助,另外原文下的評論也很精彩web
起初有款瀏覽器叫NCSA Mosaic,Mosaic自稱爲NCSA_Mosaic/2.0 (Windows 3.1)
,它能夠顯示一些圖片和文字,這是很使人欣喜的。chrome
後來,出現了一款名爲Mozilla的新型網絡瀏覽器,它的名字Mozilla是「Mosaic Killer」的縮寫。可是Mosaic以爲這並很差笑,因此Mozilla便改名爲Netscape,而且自稱Mozilla/1.0 (Win3.1)
。Netscape
支持那些很流行的框架,可是Mosaic卻不支持這些框架,所以當時就誕生了「user agent嗅探」,而且人們只向Mozilla的網站管理員貢獻一些框架,而不向其餘瀏覽器貢獻。瀏覽器
而後,Netscape說道,讓咱們一塊兒嘲笑一下微軟,而且稱Windows爲「難以調試的設備驅動」,微軟聽到這些後很生氣。因此微軟就自研出了被稱爲Internet Explorer
(譯者注:如下簡稱IE)的瀏覽器,而且但願這款瀏覽器成爲Netscape killer
。雖然IE支持框架,可是它畢竟不是Mozilla,因此沒有人爲IE提供框架,爲此微軟變得不耐煩了,它不肯再等待那些網站管理員學習IE而且給它貢獻框架,所以,IE宣佈它是「兼容Mozilla」的而且開始模仿Netscape,同時它自稱爲Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
,接下來IE就陸陸續續收到了其餘處貢獻的框架,微軟全員爲此都很高興,可是同時網站管理員們卻變得困惑了起來。網絡
隨後,微軟就利用Windows來迅速擴張IE,同時讓IE變得比Netscape更好,第一次瀏覽器大戰在這片土地上爆發了。而後,Netscape公司就被幹掉了,微軟以爲很開心。可是Netscape卻以Mizilla的名義東山再起了,前同事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開始大量被使用,其餘瀏覽器也都開始使用它的代碼,這些瀏覽器有的自稱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發展的很好,「user agent嗅探」又出現了,社區貢獻給Gecko一些其餘瀏覽器沒有的很好的代碼,因此此時IE又不行了。Linux愛好者們很難過,由於他們已經研發了Konqueror
,其引擎是KHTML
,他們認爲它和Gecko
同樣優秀,可是它畢竟不是Gecko
,因此它沒有被提供一些好的頁面,所以Konqueror
開始假裝成類Gecko型以獲取一些好的頁面,而且自稱爲Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)
,能夠看到這有不少混亂的地方。學習
接着,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, or Opera/9.51 (Windows NT 5.1; U; en)
,用戶能夠自行選擇這兩種類型。網站
隨後,蘋果公司研發了Safari,使用了KHTML
引擎,可是給引擎添加了不少功能特性,並且還把這個項目拆分了出來,稱它爲Webkit
,可是蘋果公司依然但願爲KHTML
編寫頁面,因此Safari稱它本身爲Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5
,對比以上的混亂,狀況變得更糟了。google
微軟很是懼怕Firefox,因此它從新拾起了IE,稱它爲Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
,而且它呈現很好的代碼,可是前提是網站管理員指示它這樣作翻譯
而後,Google研發了Chrome,使用了Webkit
引擎,就像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一團糟,幾乎毫無用處,每個都假裝成其餘的樣子,真真兒地混亂不堪
(全文完)
談一些個人感想吧
就拿我本身的機子上的幾個瀏覽器來講
一眼望去,很繁瑣並且很類似,並且我這仍是一些當前主流瀏覽器,一些小衆瀏覽器的ua可能會包含不少其餘繁雜的信息
對於ua,其實之前沒怎麼關注過,偶然看到這篇文章後我才發現,這ua的歷史真就像咱們大多數的老項目的迭代同樣呀,代碼一層包一層,user agent一層包一層,你假裝成我,我假裝成它,致使它的識別很容易被欺騙,因此猜想用戶正在使用的瀏覽器是一種很不靠譜的方式,若是能提供一種簡單的、有效的、直接了當的方法來區分用戶正在使用哪一種瀏覽器那就最好了