為什麼瀏覽器的使用者代理字串以 Mozilla 開頭

發表於2018-03-06

最早流行的瀏覽器是 NCSA Mosaic,它稱自己為 NCSA_Mosaic/2.0 (Windows 3.1);後來一個新瀏覽器出現了,它的名字叫 Mozilla,是 Mosaic Killer 的縮寫,Mosaic 並不覺得這好笑,因此該瀏覽器改名為 Netscape,它稱自己為 Mozilla/1.0 (Win3.1)。

Netscape 支援框架(frame),而 Mosaic 不支援,因此使用者代理嗅探(User Agent sniffing)出現了,網站在檢測到 Mozilla 後就傳送框架,如果不是就不傳送。後來微軟開發了 IE,希望它成為 Netscape Killer,IE 也支援框架,但由於它不是 Mozilla,網站沒有向它傳送框架。

微軟沒有耐心等待網站修改而是聲稱它相容於 Mozilla,因此冒充 Netscape 稱自己為 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。第一次瀏覽器戰爭以 Netscape 的失利結束,但 Netscape 以 Mozilla 的名字獲得了新生。

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。因為 Gecko 好於 IE,因此使用者代理嗅探又出現了,網站在檢測到 Gecko 後會提供更好的頁面程式碼。

YL}%@8@6764CYM (9J]%W[LU.png

Linux 上的瀏覽器 Konqueror 使用的渲染引擎是 KHTM,它只能冒充 Gecko 稱自己為 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。Opera 則提供了選項,讓使用者想冒充哪個瀏覽器就冒充哪個瀏覽器。蘋果後來建立了 KHTML 的一個分支 WebKit,稱自己為 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。這就是為什麼瀏覽器的使用者代理字串以 Mozilla 開頭。

相關文章