轉:爲什麼瀏覽器的user-agent字符串以'Mozilla'開頭呢?

原文鏈接:https://blog.csdn.net/S_gy_Zetrov/article/details/79463093

本文轉自:https://blog.csdn.net/S_gy_Zetrov/article/details/79463093 感謝sgyzetrov翻譯

如果熟悉元素審查的童鞋,很多都會發現request headers中的user-agent基本都是以‘Mozilla’開頭的
如我把博客編輯器元素審查一下,發現:

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/604.5.6 (KHTML, like Gecko) Version/11.0.3 Safari/604.5.6

那麼,這到底是怎麼回事呢?是與火狐有什麼關係麼?原來,最早流行的瀏覽器是 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,就發送框架,如果不是就不發送,俗稱“看人下菜碟“。

而後M$(微軟)開發了 IE,微軟希望它成爲 Netscape Killer,IE 也支持框架,但由於它不是 Mozilla,所以網站沒有向它發送框架。微軟十分不爽,也並沒有耐心等待網站修改用戶代理嗅探(User Agent sniffing)去支持IE,而是聲稱它兼容於 Mozilla,因此IE冒充 Netscape 稱自己爲:
Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
騙過了網站得以收到網站發送的框架。由於IE根植於遍地都是的Windows系統,於是第一次瀏覽器戰爭以 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,因此用戶代理嗅探(User Agent sniffing)又出現了,網站在檢測到 Gecko 後會提供更好的頁面代碼。Linux 上的瀏覽器 Konqueror 使用的渲染引擎是 KHTM,它只能冒充Gecko 稱自己爲:

Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

Opera 則提供了選項,讓用戶想冒充哪個瀏覽器就冒充哪個瀏覽器。Apple 後來創建了 KHTML 的一個分支 WebKit,稱自己爲:

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

這就是爲什麼瀏覽器的用戶代理字符串以 Mozilla 開頭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章