浏览器 UA 的变迁史

本篇文章基于 WebAIM 发布的《History of the browser user-agent string》润色及修改。
原文地址:WebAIM: History of the browser user-agent string

在一切的开始,有个浏览器名为 NCSA Mosaic,它可以显示文字和图片,引起了人们的欢呼。在那时,它自称 NCSA_Mosaic/2.0 (Windows 3.1)

不久后,一个新的浏览器内核,Mozilla 出现了,意为 Mosaic 的终结者,使用它的第一个浏览器,名为 Netscape,网景,它的 UA 叫 Mozilla/1.0 (Win3.1)

Netscape 带来了划时代的创新,Frames。越来越多的网站开始使用这种新技术,但它们面临着一样的难题,兼容。是的,Mosaic 并不支持这种新颖的技术。为了保持网站在不同浏览器上的体验,开发者开始采用浏览器嗅探技术,也就是判断 UA 的手段,为 Mozilla 返回 frames,其他则不返回,这也是 UA 最初的作用。

后来,自大的 Netscape 取笑 Windows 为漏洞百出的设备驱动器。微软当然不能忍,当即研发了自己的浏览器,曾经的时代引领者,后来的众人唾弃者,Internet Explorer。IE 同样支持 Frames 技术,但当时的网站只为 Mozilla 返回带 Frames 的页面。IE 等不及各种网站适配自己,于是开始宣称自己为 Mozilla,表示 Mozilla 能做的,我都能做。于是它的 UA 变成了 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)

IE 也能展示使用 Frames 的网站了,微软上下都为自己的聪明才智感到高兴,但开发者们却陷入了困惑。

再后来,微软通过捆绑销售手段,把 IE 随同 Windows 一起提供给用户,使得 IE 的占比远超其他浏览器。第一次浏览器大战以 Netscape 退场告终。

再之后,Netscape 以 Mozilla 之名重生,并带来了 Gecko 渲染引擎。它自称 Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826

后来 Mozilla 改名叫做 Firefox,Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0

而以 Gecko 为核心开发的其他浏览器,比如 SeaMonkey 等,则自称为 Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0

嗅探技术大行其道,网站开始为 Gecko 返回更好的页面。但使用 KHTML 的 Konquener 浏览器却遭了殃,它明明跟 Gecko 一样好,却没法收到好的页面,于是它跟 IE 曾经的做法一样,假装自己是 Gecko。Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)

大家都很高兴,唯独开发者们发了懵。

这时,Opera 出现了,它选择让用户自己选择假装成什么浏览器。

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51

Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51

Opera/9.51 (Windows NT 5.1; U; en)

苹果也带来了自家的 Safari 浏览器,它基于 KHTML,却包含了许多额外功能,并将其命名为 WebKit。但 Safari 也想拿到和 KHTML 一样的网页。于是它的 UA 变成了 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5

UA 越来越长。

微软害怕 Firefox 取代它的地位,于是开始自称 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0),并支持各种 Firefox 功能。

再后来,Chrome 出现了。它基于 WebKit,也想获得跟 Safari 一样的网页,于是自称 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

最后的最后,浏览器 UA 是这样的:Chrome 假装是 Safari,WebKit 假装是 KHTML,KHTML 假装是 Gecko,最终,所有浏览器都假装是 Mozilla。

它们互相假装对方,UA 开始变得混乱、无用,变成了现在的样子。

但 Chrome 出现后,浏览器似乎出现了大一统的局面,不同浏览器的技术不再分裂,而是基于同一个标准,大部分技术也在不同浏览器上达到了通用,浏览器嗅探技术现在也不再是必备。

本作品采用《CC 协议》,转载必须注明作者和本文链接
sunxyw
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!