你有没有注意过,几乎所有浏览器的 User-Agent 字符串开头都是 “Mozilla/”?
无论是 Chrome、Safari、还是 IE、Edge,都有 “Mozilla” 的痕迹。其实,这一切都源自一场 “浏览器伪装” 的历史闹剧。
这事得从 90 年代说起,那时互联网刚起步,第一个流行浏览器叫 Mosaic。后来,有人造出一款更强的浏览器,号称 “Mosaic Killer”,代号 Mozilla。
它上线后,不光能看图还能加载网页框架(frames),可谓是当年超前的黑科技。
很多网站为了兼容,只愿给 “Mozilla” 发完整版页面,其他浏览器只能看阉割版。
这就引发了一个问题:网站开始 “嗅探” 浏览器身份,也就是所谓的 User-Agent 识别。
后来,微软做了 Internet Explorer(IE),本来想正大光明竞争,但一看:网站只对 Mozilla 好,干脆就让自己也伪装成 Mozilla。
于是 IE 的 User-Agent 字符串成了这样:
Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
就这样,IE 成功骗过了网站,用户数也提升了。
而这场 “伪装游戏” 一旦开始,就收不住了。
1、Firefox 自己引以为傲的 Gecko 渲染引擎,也以 Mozilla 自称:
Mozilla/5.0 (...) Gecko/... Firefox/...
2、Linux 社区做的浏览器,用的是 KHTML 引擎,他们开始模仿 Gecko 写法:
Mozilla/5.0 (...) (KHTML, like Gecko)
3、苹果搞了 Safari,用的是 WebKit,而 WebKit 是 KHTML 的一个分支:
Mozilla/5.0 (...) AppleWebKit/... (KHTML, like Gecko) Safari/...
4、到了谷歌 Chrome 时代,它用的也是 WebKit,为了吃到 Safari 的待遇,其 User-Agent 变成了这种奇葩组合:
Mozilla/5.0 (...) AppleWebKit/... (KHTML, like Gecko) Chrome/... Safari/...
到这时,每个浏览器都在 User-Agent 里堆满了 “族谱”:
Chrome 假装是 Safari
Safari 假装是 KHTML
KHTML 假装是 Gecko
Gecko 假装是 Mozilla
而真正的 Mozilla,其实早就不在了。
最后结果就是:User-Agent 成了一串 “你是谁并不重要,重要的是你要说自己是 Mozilla” 的魔性自报家门。
也难怪现在的前端开发者一边调试一边吐槽:“我到底在给谁写页面啊?”