浏览器简史之UserAgent列传

曾经,在做一个小项目,需要判断一下浏览器类型。简单的呀。

控制台敲下:navigator.userAgent
浏览器回应:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36

天,这串是啥?明明一个单词就可以说清楚的事情,为什么要写的这么复杂?

大事年表

  • 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诞生

一、浏览器 UA 的诞生

1990 年,英国计算机科学家蒂姆·伯纳斯·李巧妙地提出了 HTTP 协议,然后又编写了世界上第一个浏览器 World Wide Web(后演进为Nexus),万维网就此诞生。但这个浏览器,还不支持图片的显示,这是出现UserAgent的导火索。

1993 年,美国国家超级电脑应用中心(NCSA)推出了一款叫做 Mosaic(马赛克) 的浏览器,它第一次将图片与文字同时在一起展示。从此,浏览器就变得有趣且流行起来。
在这里插入图片描述
但是,问题来了,Nexus不显示图片,Mosaic能显示,要让开发者怎么写代码?

为了发挥 Mosaic 浏览器的优势,Mosaic 浏览器在访问网页时,会事先向网页服务器发送一段特定的字符串来标记自己,这样使用 Mosaic 的用户能收到有图片的内容了。

这个字符串 Mosaic/2.0(Windows 3.1) 就是 UserAgent,简称 UA,中文叫作“用户代理”。
在这里插入图片描述
UserAgent出生时跟我们设想的一样简单,仅仅标明了自己是什么浏览器,在什么系统运行,以及各自的版本号。

二、Mozilla的出现

像刘邦一样,走出来一个搅局的小流氓。当然他还是很有志向的,他的目标,就是战胜霸主Mosaic。后来,他还真的做到了。
如今,所有现代浏览器的UserAgent里都有它的标志,就像汉朝之后,我们都称为“汉”人。一群很有天赋的程序员,一起缔造了它的辉煌。

1994 年,Mosaic 项目的核心成员马克·安德森离职,然后成立了自己的公司,并发布了一款全新的浏览器 Mozilla。Mozilla 除了是 Godzilla 的谐音外,它还是 Mosaic Killa 的缩写,意思是要做 Mosaic 的终结者。

然而在 Mosaic 的压力之下, Mozilla 还是改名为了 Netscape(网景)浏览器。不过在设置浏览器 UA 时,Netscape 仍然使用了 Mozilla 的名字,也就是 Mozilla/1.0 (Win3.1)。
在这里插入图片描述
接着,Netscape 浏览器率先支持了网页框架技术,而其他浏览器要么不支持,要么支持得不够好,Netscape 很快成为当时最流行的浏览器。

1995 年,微软宣布进军互联网,然后发布了 IE 浏览器。

尽管 IE 浏览器同样也支持框架技术,但总是收不到有框架的页面,原因是网页服务器会先检测浏览器 UA 中是否包含有 Mozilla,如果有,那就发送有框架的页面,如果没有,那就发送不含框架的页面。

微软等不及市场的反应,于是在 IE 浏览器的 UA 中加入了 Mozilla 的字样,也就是 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95),这样 IE 浏览器就能正常接收到有框架的页面了。
在这里插入图片描述
于是,浏览器 UA 也成为了解决浏览器兼容性的一个重要手段。

三、浏览器 UA 的演变

没过多久,微软采用了将 IE 与 Windows 捆绑销售的策略,Netscape 浏览器被打败退出历史舞台,不甘失败的 Netscape 团队在 2004 年浴火重生,又推出了一款新的浏览器,叫Phoenix(凤凰),因重名改名为Firebird(火鸟),还是重名,又改名为 Firefox(火狐)。

Firefox 浏览器使用的 Gecko 引擎非常优秀,为了告诉大家,我使用了这个引擎,于是就加入到了浏览器的 UA 里:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041108 Firefox/1.0。

使用 Gecko 引擎的浏览器可以得到更好的网页代码,而其他的浏览器则没有这种待遇。Linux 的追随者对此很难过,因为他们开发了基于 KHTML 引擎的 Konqueror 浏览器,他们认为 KHTML 和 Gecko 一样出色,但却因为不是 Gecko 而得不到好的页面。

于是他们宣布 KHTML 兼容 Gecko(like Gecko),浏览器 UA 就变成了:Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。
在这里插入图片描述
一直使用自主 UA 的浏览器 Opera 也同样有这样的问题。

但 Opera 不是简单地把自己也标记为 Gecko,而是给这狂躁的世界再添了一把火,它主张让用户来决定变成什么样的浏览器。于是 Opera 在菜单里增加了浏览器 UA 的选项,让用户来选择是变成 IE 还是 Firefox,又或者是它自己本体。
在这里插入图片描述
2003 年,苹果公司从 KHTML 引擎中分支出来了 Webkit,然后开发了 Safari 浏览器。

为了兼容性的考虑,于是苹果将 KHTML 内核 UA 中 的 Mozilla、KHTML、Gecko 统统继承了下来,变成了:Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。
在这里插入图片描述
2008 年,谷歌使用了苹果的 Webkit 开发出了 Chrome 浏览器。

和 Safari 一样,Chrome 浏览器也想兼容那些为 Safari 专门编写的页面,于是就继承了 Safari 的 UA,然后再加入自己的 UA: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。
在这里插入图片描述
如果要问谁是“伪装之王”,那一定非 Edge 莫属了。

2020 年,微软转用谷歌的 Chromium 内核开发 Edge 浏览器,为了不再受兼容性的困扰,Edge 浏览器几乎将所浏览器的 UA 都加入了进来,于是就有了:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.70 Safari/537.36 Edg/90.0.818.38
在这里插入图片描述
如果把 UA 的伪装比作是“俄罗斯套娃”的话,我们会发现:

Edge 伪装成 Chrome,Chrome 伪装成 Safari,Safari 伪装成 KHTML,KHTML 伪装成 Gecko,Gecko 和 IE 又伪装成 Mozilla,最终,所有浏览器的 UA 都以 Mozilla 开头。

尽管 Mozilla 作为一个浏览器而言,早已从市场上消失。
在这里插入图片描述

结尾

说到底,浏览器 UA 其实是“浏览器大战”的产物,“师夷长技以制夷”。

如果我们想要有一个更加畅通无阻的互联网,那么就很有必要去了解它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值