幾乎所有的中國網民都不會忘記 2010 年的“3Q大戰”。
在騰訊做出那個“非常艱難的決定”之后,360 不但不能與 QQ 同時安裝了,使用 360 瀏覽器的用戶也不再能訪問 QQ 空間。
QQ 空間作為當時最受歡迎的社交網站,騰訊的這一操作就等同于宣判了 360 瀏覽器的死刑。
在此次大戰中,發揮著關鍵性作用的是「瀏覽器 UA」,我們今天就來好好討論一下這個話題。
一、瀏覽器 UA 的誕生
要講清楚這個話題,我們要從 1990 年說起。
1990 年,英國計算機科學家蒂姆·伯納斯·李巧妙地提出了 HTTP 協議,然后又編寫了世界上第一個瀏覽器 World Wide Web,萬維網就此誕生。
1993 年,美國國家超級電腦應用中心(NCSA)推出了一款叫做 Mosaic(馬賽克) 的瀏覽器,它第一次將圖片與文字同時在一起展示。
從此,瀏覽器就變得有趣且流行起來。
瀏覽器的“套娃行為”有多兇殘?
為了發揮 Mosaic 瀏覽器的優勢,Mosaic 瀏覽器在訪問網頁時,會事先向網頁服務器發送一段特定的字符串來標記自己,這樣使用 Mosaic 的用戶能收到有圖片的內容了。
這個字符串 Mosaic/2.0(Windows 3.1) 就是 UserAgent,簡稱 UA,中文叫作“用戶代理”。
瀏覽器的“套娃行為”有多兇殘?
從此,瀏覽器 UA 作為一種“根據用戶軟硬件環境,進而采用不同內容策略”的技術誕生了。
二、瀏覽器 UA 的偽裝
1994 年,Mosaic 項目的核心成員馬克·安德森離職,然后發布了一款全新的瀏覽器 Mozilla。
Mozilla 除了是 Godzilla 的諧音外,它還是 Mosaic Killa 的縮寫,意思是要做 Mosaic 的終結者。
然而在 Mosaic 的壓力之下, Mozilla 還是改名為了 Netscape(網景)瀏覽器。
不過在設置瀏覽器 UA 時,Netscape 仍然使用了 Mozilla 的名字,也就是 Mozilla/1.0 (Win3.1)。
瀏覽器的“套娃行為”有多兇殘?
接著,Netscape 瀏覽器率先支持了網頁框架技術,而其他瀏覽器要么不支持,要么支持得不夠好,Netscape 很快成為當時最流行的瀏覽器。
1995 年,微軟宣布進軍互聯網,然后發布了 IE 瀏覽器。
盡管 IE 瀏覽器同樣也支持框架技術,但總是收不到有框架的頁面,原因是網頁服務器會先檢測瀏覽器 UA 中是否包含有 Mozilla。
如果有,那就發送有框架的頁面,如果沒有,那就發送不含框架的頁面。
微軟等不及市場的反應,于是在 IE 瀏覽器的 UA 中加入了 Mozilla 的字樣,也就是Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。
這樣 IE 瀏覽器就能正常接收到有框架的頁面了。
瀏覽器的“套娃行為”有多兇殘?
于是,瀏覽器 UA 也成為了解決瀏覽器兼容性的一個重要手段。
三、瀏覽器 UA 的演變
沒過多久,微軟采用了將 IE 與 Windows 捆綁銷售的策略,Netscape 瀏覽器被打敗退出歷史舞臺。
不甘失敗的 Netscape 團隊在 2004 年又推出了一款新的瀏覽器 Firefox。
Firefox 瀏覽器使用的 Gecko 引擎非常優秀,為了告訴大家,我使用了這個引擎,于是就加入到了瀏覽器的 UA 里:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041108 Firefox/1.0。
瀏覽器的“套娃行為”有多兇殘?
由于 Gecko 的出色和 IE 的止步不前,瀏覽器 UA 的探測規則發生了變化。
使用 Gecko 引擎的瀏覽器可以得到更好的網頁代碼,而其他的瀏覽器則沒有這種待遇。
Linux 的追隨者對此很難過,因為他們開發了基于 KHTML 引擎的 Konqueror 瀏覽器,他們認為 KHTML 和 Gecko 一樣出色,但卻因為不是 Gecko 而得不到好的頁面。
于是他們宣布 KHTML 兼容 Gecko(like Gecko),瀏覽器 UA 就變成了:
Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。
瀏覽器的“套娃行為”有多兇殘?
一直使用自主 UA 的瀏覽器 Opera 也同樣有這樣的問題。
但 Opera 不是簡單地把自己也標記為 Gecko,而是主張讓用戶來決定變成什么樣的瀏覽器。
于是 Opera 在菜單里增加了瀏覽器 UA 的選項,讓用戶來選擇是變成 IE 還是 Firefox,又或者是它自己本體。
瀏覽器的“套娃行為”有多兇殘?
2003 年,蘋果公司從 KHTML 引擎中分支出來了 Webkit,然后開發了 Safari 瀏覽器。
為了兼容性的考慮,于是蘋果將 KHTML 內核 UA 中 的 Mozilla、KHTML、Gecko 統統繼承了下來,變成了:
Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。
瀏覽器的“套娃行為”有多兇殘?
2008 年,谷歌使用了蘋果的 Webkit 開發出了 Chrome 瀏覽器。
和 Safari 一樣,Chrome 瀏覽器也想兼容那些為 Safari 專門編寫的頁面,于是就繼承了 Safari 的 UA,然后再加入自己的 UA:
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。
瀏覽器的“套娃行為”有多兇殘?
如果要問誰是“偽裝之王”,那一定非 Edge 莫屬了。
2020 年,微軟轉用谷歌的 Chromium 內核開發 Edge 瀏覽器,為了不再受兼容性的困擾,Edge 瀏覽器幾乎將所瀏覽器的 UA 都加入了進來,于是就有了:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.70 Safari/537.36 Edg/90.0.818.38
瀏覽器的“套娃行為”有多兇殘?
如果把 UA 的偽裝比作是“俄羅斯套娃”的話,我們會發現:
Edge 偽裝成 Chrome,Chrome 偽裝成 Safari,Safari 偽裝成 KHTML,KHTML 偽裝成 Gecko,Gecko 和 IE 又偽裝成 Mozilla,最終,所有瀏覽器的 UA 都以 Mozilla 開頭。
盡管 Mozilla 作為一個瀏覽器而言,早已從市場上消失。
瀏覽器的“套娃行為”有多兇殘?
四、自定義瀏覽器 UA
瀏覽器 UA 的利用,通常與瀏覽器的功能性相關,但也會有其他的因素。
比如當年的“3Q大戰”,QQ 空間利用 360 瀏覽器 UA 中含有的“360SE”字樣來屏蔽 360 瀏覽器,而 360 瀏覽器為了躲避封殺,則將“360SE”的字樣從瀏覽器 UA 中移除。
瀏覽器的“套娃行為”有多兇殘?
又比如一些視頻網站,針對桌面瀏覽器和安卓手機瀏覽器,會推送視頻貼片廣告,而對蘋果的 Safari 瀏覽器則不推送。
還有如百度網盤,用一般的瀏覽器下載會大幅限速,而用自家的“百度云管家”則會小幅限速。
對于這類區別對待,我們有必要奪回瀏覽器 UA 的控制權。
首先,我們檢查一下當前使用瀏覽器的 UA,方法在地址欄中輸入 :
Chrome:chrome://version
Edge:edge://version
Firefox:about:support
又或者打開下面三個網站來檢測:
https://www.whatsmyua.info
https://passer-by.com/browser
http://useragentstring.com
然后,我們可以使用拓展 User-Agent Switcher and Manager 來自定義瀏覽器 UA,拓展同時還支持“白名單模式”,可以對不同的網站使用不同的瀏覽器 UA。
瀏覽器的“套娃行為”有多兇殘?
又或者使用拓展 Header Editor 來修改瀏覽器 UA。
它的優點在于多功能合一,可以省去安裝一個專門的瀏覽器 UA 拓展,支持 Chrome、Edge、Firefox 三款瀏覽器。
瀏覽器的“套娃行為”有多兇殘?
就是要注意,使用完后要切換回默認的 UA 哦。
結尾
說到底,瀏覽器 UA 其實是“瀏覽器大戰”的產物。
如果我們想要有一個更加暢通無阻的互聯網,那么就很有必要去了解它。
而且,隨著 Python 和大數據的火熱,「爬蟲技術」和「反爬蟲技術」的入門也都離不開瀏覽器 UA。
看完這篇文章后,相信你已經半只腳踏入這個領域了,至少在朋友面前裝個 B 已經是沒問題了。
瀏覽器的“套娃行為”有多兇殘?
瀏覽器的“套娃行為”有多兇殘?

