用戶代理(User Agent)是用來表明瀏覽用戶的身份,讓網頁開發者可以得知訪問終端的信息。根據不同的終端發送不同的顯示內容,例如桌面版和移動版發送不同的網頁內容以適應屏幕和操作系統的差別(即響應式網頁的理解),或者是因爲不同的瀏覽器支持的標準不一樣,這樣做的目的當然是爲了避免瀏覽器不支持的功能以及獲得更好的用戶體驗。
隨着瀏覽器市場的競爭愈加激烈,網頁開發者會根據最流行的瀏覽器,設計一個用戶體驗最好的網站。這對其他瀏覽器來說是一種打擊, 所以他們也會很快完善自身的缺陷,希望可以支持這些用戶體驗好的網頁效果。
最初是 Mozilla Firefox 瀏覽器設置了自己的用戶代理字符串,例如“Mozilla/1.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101Firefox/4.0.1”,此字符串表明這是一個 Windows 版的使用 Gecko 引擎(火狐瀏覽器內核)的火狐瀏覽器。
隨後IE發現自己的展示的網頁效果沒有Firefox豐富,於是發佈了兼容Firefox的User Agent,看一下IE 的用戶代理設置就能明白——“Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)”。這個字符串的含義是什麼呢?它表明這是一個可以和 Mozilla 兼 容的 Windows 版 IE7 瀏覽器。這樣,內容提供商會根據“Mozilla”字符串信息,將發 送給 Firefox 瀏覽器的內容也發送給 IE 瀏覽器,因爲在他們看來,這些都是“Mozilla” 的瀏覽器。
此後,瀏覽器市場,越加競爭激烈,爲了相互兼容。蘋果的 Safari 瀏覽器也設 置了類似的代理,但是該瀏覽器額外加入了 AppleWebKit、Safari 等信息,隨着它的 流行(特別是移動領域),Chrome 等瀏覽器除了包含 Mozilla 之外,還添加了 Safari 瀏覽器的那些標誌信息,導致它的用戶代理字符串越來越長。
看一下Chrome的User-Agent
這裏可以看出來,該Chrome是MAC的發佈版,採用了兼容了Mozilla,Safari,內核兼容AppleWebkit和Gecko
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
看一下火狐的User-Agent
可以看出來,該Firefox爲Windows平臺的發佈版,內核爲Firefox的自家內核Gecko
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0
看一下Mac上的Safari
看出來,兼容了Mozilla,爲Mac系統的發佈版,採用自家的Webkit內核(Apple)
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14
最後是IE的User-Agent
看出來,兼容了Mozilla,採用兼容模式的IE10,採用自家的Trident內核
User-Agent:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)
模擬移動設備
我們這裏可以模擬一個移動設備來查看一下,顯示效果,模擬設備,Galaxy Note II ,通過該設備向服務端發送請求
請求標頭如下,
User-Agent:Mozilla/5.0 (Linux; U; Android 4.1; en-us; GT-N7100 Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
由於網頁已經經過移動設備的顯示處理,所以,出現了寬度自適應的顯示界面。
一切這些繁瑣的User-Agent,都是爲了更好的網頁內容體驗。 從上面幾個主流瀏覽器,可以看出,因爲某種瀏覽器的流行,很多網頁內容提供商和網站需要根據流行的瀏覽器來定製內容,當後來者需要相同內容的時候,就只能是通過這些用戶代理的信息來模仿獲得。
原文鏈接:http://mingkr.com/browser-user-agent