瀏覽器user-agent簡史

責(zé)任編輯:editor004

作者:Aaron Andersen

2017-12-25 11:17:32

摘自:INFOQ

很多人都知道瀏覽器的user-agent字符串,服務(wù)器端通過這個字符串進行客戶端的瀏覽器、操作系統(tǒng)、加密等級、瀏覽器語言、渲染引擎和版本信息的識別。

很多人都知道瀏覽器的user-agent字符串,服務(wù)器端通過這個字符串進行客戶端的瀏覽器、操作系統(tǒng)、加密等級、瀏覽器語言、渲染引擎和版本信息的識別。從1993年NCSA發(fā)布首款瀏覽器Mosaic以來,這個字符串經(jīng)歷了紛繁復(fù)雜的變化,以下是user-agent字符串的演變簡史。

1993年,NCSA公司發(fā)布了首款瀏覽器Mosaic,使用“NCSA_Mosaic/2.0(Windows 3.1)”作為user-agent字符串。

后來Mozilla瀏覽器問世,“Mozilla”意即“Mosaic Killer”,意思是要成為Mosaic瀏覽器的終結(jié)者。Mosaic自然不太高興,于是Mozilla就把名字改成Netscape,并把user-agent改為“Mozilla/1.0(Win 3.1)”。那個時候frame標簽很流行,Netscape支持frame,但Mosaic不支持,于是出現(xiàn)了“用戶代理嗅探”,如果字符串中帶有“Mozilla”字樣,服務(wù)器就發(fā)送frame給瀏覽器,否則就不發(fā)送。Netscape還開起了微軟的玩笑,笑稱Windows是“缺少調(diào)試的設(shè)備驅(qū)動器”,微軟很生氣,于是開發(fā)了自己的瀏覽器Internet Explorer,希望能夠成為“Netscape Killer”。

IE也支持frame,但它的user-agent字符串中沒有包含“Mozilla”,所以服務(wù)器不會發(fā)送frame給IE。微軟沒有太大耐心,他們就想著怎樣才能盡快讓服務(wù)器也能向IE發(fā)送frame,于是他們把IE聲明為與“Mozilla兼容”的瀏覽器,并使用了“Mozilla/1.22(compatible;MSIE 2.0;Windows 95)”的字符串。這樣,IE就能夠收到frame,微軟現(xiàn)在開心了,但其他人卻一頭霧水。微軟將IE捆綁在Windows上銷售,銷量比Netscape要好得多,于是第一場瀏覽器大戰(zhàn)爆發(fā)了。

Netscape在這場大戰(zhàn)中落敗,不過經(jīng)過了一場浴火重生,變成了Mozilla。Mozilla開發(fā)了Gecko渲染引擎,并把user-agent改為“Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826”。

再后來,Mozilla變成Firefox,并把user-agent改為“Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0”。Gecko開始多元化發(fā)展,其他瀏覽器也開始使用它的代碼,并使用了“Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Comino/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越來越好,但IE沒有,于是出現(xiàn)了新一輪的用戶代理嗅探,聲稱自己使用了Gecko內(nèi)核的瀏覽器總能收到更好的HTML代碼,但其他瀏覽器就沒這么好的待遇。

Linux的擁護者感到很傷心,因為他們開發(fā)了Konqueror,它使用了KHTML引擎,他們認為它比Gecko好。可惜的是,它不是Gecko,所以收不到好的頁面。于是Konqueror開始佯裝“Gecko”,使用了“Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”作為user-agent字符串。

然后Opera也來湊熱鬧了,它宣稱”我們應(yīng)該讓用戶來決定使用哪個字符串“,于是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.81.) Gecko/20061208 Firefox/2.0.0 Opera 9.51”、“Opera/9.51 (Windows NT 5.1; U; en)”。

蘋果開發(fā)了Safari瀏覽器,以KHTML為基礎(chǔ),添加了很多新特性,并創(chuàng)建了一個分支,叫作WebKit。為了能夠獲得KHTML頁面,Safari稱自己為“Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”。

經(jīng)歷了慘敗,IE再次回歸,這次它把字符串改為”Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)”,這樣就能夠接收到好的頁面。

谷歌后來開發(fā)了Chrome瀏覽器,它使用了WebKit,有點像Safari。為了獲得Safari那樣的頁面,它佯裝自己是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”。

user-agent字符串變得越來越復(fù)雜,也越來越讓人摸不著頭腦,只因為各個瀏覽器在爭相“佯裝”對方。

查看原文:History of the browser user-agent string

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號