浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白

文章精选3个月前更新
4,193 1

一段你从未认真了解,但每天都在用的浏览器血雨腥风史

某天,我在做一个小项目,需要判断浏览器类型。很简单,控制台敲一句:

控制台敲下: 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列传: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年江湖恩怨,一串字符串的自白

浏览器野史 – 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年江湖恩怨,一串字符串的自白

浏览器野史 – 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年江湖恩怨,一串字符串的自白

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白

明明是 Firefox,却还带着 Mozilla、Gecko 等“历史遗产”。

六、师夷长技:Konqueror 与 “like Gecko”

KDE 桌面推出浏览器 Konqueror,使用 KHTML 引擎,但网站只对 Gecko 浏览器“好脸色”。

于是 Konqueror 在 UserAgent 中写下了一句含蓄的话:(KHTML, like Gecko)

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白

浏览器野史 – 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年江湖恩怨,一串字符串的自白

浏览器野史 – 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列传:30年江湖恩怨,一串字符串的自白

切换内核时,UserAgent 也跟着切换——谁强就像谁。


九、国共内战:3Q大战与伪装术

2010年,360 和腾讯的 3Q大战爆发。腾讯封杀 360 浏览器访问 QQ 空间。

360 浏览器怎么办?一招妙计——去掉 UserAgent 中的“360SE”字样!

这样一来,它看起来就和 IE 一模一样,腾讯也拿它没办法。

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白

浏览器野史 – UserAgent列传:30年江湖恩怨,一串字符串的自白

十、明日边缘:W3C 的规范化努力

混乱到极致,W3C 决定出手,推出了 UserAgent 规范:

User Agent Accessibility Guidelines

虽然规范不是强制,但总算有了希望的方向。可惜,规范制定容易,推广执行难。


彩蛋时刻

  • Chrome 的内核变成 Blink,但 UserAgent 还是写 Webkit

  • 微信拦截淘宝页面靠 UserAgent 中的 “MicroMessenger”

  • IE11 干脆去掉 MSIE 标识,只保留 Mozilla,躲避 CSS hack

  • 360 甚至提供用户切换 UserAgent 的选项,只是默认恢复为“伪装态”


查看你当前浏览器的 UserAgent?

试试这个工具 →
👉 在线浏览器UA检测器(46.la)

本文作者为Litten,本站转载后修改。

© 原创声明:本文由 四六啦工具 于 1 年 前发表在 文章精选 分类目录中,最后更新于2025年3月26日,转载请注明本文永久链接:https://www.46.la/useragent-history

相关文章

1 条评论