一段你从未认真了解,但每天都在用的浏览器血雨腥风史
某天,我在做一个小项目,需要判断浏览器类型。很简单,控制台敲一句:
控制台敲下: navigator.userAgent
浏览器回应: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) chrome/35.0.1916.153 Safari/537.36
???这都能算回答?你是有什么冤情要向我倾诉吗?
UserAgent,我当然不陌生。但为什么本来一个词就能说明白的事,它却要这么“倾诉欲爆棚”?查资料后才发现,这背后,是一部真实的互联网江湖恩仇录。
大事年表
1990年: Nexus(WorldWideWeb)诞生
1993年1月23日:Mosaic诞生
1994年12月:Netscape(Mozilla)诞生
1995年4月:Opera诞生
1995年8月16日:Internet Explorer诞生
2002年9月23日:Firefox诞生
2003年1月7日:Safari诞生
2008年9月2日:Chrome诞生

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
一、盘古开天地:UserAgent 的前传
起点是 Tim Berners-Lee,也就是传说中的李大神,发明了万维网和世界上第一款浏览器。
这款浏览器,名字也叫 WorldWideWeb。
起名这事,大神不讲逻辑,讲气场。
后来,为了不跟整个互联网重名,他改名为 Nexus,并且做到了支持 Unix 和 MS-DOS,在当年简直是“杀手级应用”。
唯一问题是——它不支持图片。
二、唐尧虞舜:Mosaic 出现,UserAgent 诞生
1993年,NCSA(伊利诺大学)开发了第一款能显示图片的浏览器,起名也很中二——Mosaic(马赛克)。
问题来了:Mosaic 能显示图片,Nexus 不能。HTML 提供者该怎么写页面?怎么办?
UserAgent 诞生了。
Mosaic 发请求时加了一句话:NCSA_Mosaic/2.0 (Windows 3.1)

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
于是服务器可以识别请求来自 Mosaic,决定返回带图还是不带图的网页。
UserAgent 的使命最初就一个:告诉服务器“我是谁”。
三、楚汉争霸:Netscape 的野心
1994年,一群野心勃勃的程序员开发出一款浏览器,想干掉 Mosaic。
起名:Mozilla,意为 Mosaic Killer(Mosaic终结者),也是 Godzilla 的谐音。
但因为名声太嚣张,引起恐慌,改名为 Netscape Navigator。但在 UserAgent 里,它依然叫自己:Mozilla/1.0 (Win3.1)
用户、服务器都信了它,UserAgent 开始变得“不老实”。
四、宋元之战:IE 的“伪装术”
1995年,微软发布 IE 浏览器,为了能获得服务器“只对 Mozilla 说实话”的优待,IE 把自己 UserAgent 写成了:Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
简而言之:我不是Mozilla,但我可以伪装成它!
结果,IE 逐渐干掉 Netscape,成了新霸主。但 Mozilla 的印记却永远留在了 IE 的 UserAgent 中。
五、康乾盛世:Firefox 的重生
Netscape 死后,团队没散,他们基于 Gecko 引擎重新开发浏览器,起初叫 Phoenix(凤凰),结果商标被注册了,改成 Firebird,也被注册了,最终才叫 Firefox。
Firefox 非常优秀,尤其在开发者中人气高,UserAgent 如下:Mozilla/5.0 (…) Gecko/… Firefox/1.0

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
明明是 Firefox,却还带着 Mozilla、Gecko 等“历史遗产”。
六、师夷长技:Konqueror 与 “like Gecko”
KDE 桌面推出浏览器 Konqueror,使用 KHTML 引擎,但网站只对 Gecko 浏览器“好脸色”。
于是 Konqueror 在 UserAgent 中写下了一句含蓄的话:(KHTML, like Gecko)

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
这就是现代浏览器 UserAgent 里“like Gecko”这个萌点的由来。
七、世界大战:所有浏览器都变成了 Mozilla
接下来,一切都疯了:
-
Opera:我支持易容术,可以伪装成 IE,也能像 Firefox
-
Safari:我用了 WebKit,但WebKit是KHTML儿子,所以我写:Mozilla/… AppleWebKit/… (KHTML, like Gecko) Safari/…
- Chrome:我也用 WebKit,我也想被当成 Safari,就写:… Chrome/… Safari/…

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
于是形成神奇的一幕:
所有浏览器伪装成 Mozilla,Gecko 被假冒成 like Gecko,KHTML 假装成 Gecko,Chrome 假装 Safari,UserAgent 成了全是马甲的迷宫。
八、军阀混战:国产浏览器的 UserAgent 剧场
进入国内,UserAgent 的混乱被推向高潮:
-
“双核浏览器”:Trident + Webkit 组合拳
-
微创新:换皮+美化=新浏览器
-
浏览器名一大堆:360、QQ、搜狗、百度、UC、猎豹…
UserAgent 的命名也混乱:
-
QQ 浏览器:基于 IE,加个后缀 … MSIE 9.0 … QQBrowser/7.7 …
猎豹浏览器:基于 Chrome,加个后缀 … Chrome/34.0 … LBBROWSER

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
切换内核时,UserAgent 也跟着切换——谁强就像谁。
九、国共内战:3Q大战与伪装术
2010年,360 和腾讯的 3Q大战爆发。腾讯封杀 360 浏览器访问 QQ 空间。
360 浏览器怎么办?一招妙计——去掉 UserAgent 中的“360SE”字样!
这样一来,它看起来就和 IE 一模一样,腾讯也拿它没办法。

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白
十、明日边缘:W3C 的规范化努力
混乱到极致,W3C 决定出手,推出了 UserAgent 规范:
虽然规范不是强制,但总算有了希望的方向。可惜,规范制定容易,推广执行难。
彩蛋时刻
-
Chrome 的内核变成 Blink,但 UserAgent 还是写 Webkit
-
微信拦截淘宝页面靠 UserAgent 中的 “MicroMessenger”
-
IE11 干脆去掉 MSIE 标识,只保留 Mozilla,躲避 CSS hack
-
360 甚至提供用户切换 UserAgent 的选项,只是默认恢复为“伪装态”
查看你当前浏览器的 UserAgent?
试试这个工具 →
👉 在线浏览器UA检测器(46.la)
本文作者为Litten,本站转载后修改。
浏览器历史悠久哦