为什么所有浏览器的的 User-Agent 字符串开头都是 "Mozilla/"?


你有没有注意过,几乎所有浏览器的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”的魔性自报家门。

也难怪现在的前端开发者一边调试一边吐槽:“我到底在给谁写页面啊?”

感兴趣的小伙伴可以点击原文:https://webaim.org/blog/user-agent-string-history/


相關推薦

2021-12-30

输入chrome://flags并启用#force-major-version-to-100flag。浏览器 User-Agent 信息中的主版本号便会变为 100。 启用之后,可访问 https://is-chrome-100-yet.glitch.me/ 检测主版本号是否已成功修改为 100。 如果修改主版本号后,使用浏览

2022-11-27

在 Firefox 105 中部署的一个小改变有效。 首先,要了解为什么在 Windows 上运行的应用程序与其他操作系统相比更容易耗尽内存产生崩溃,就必须了解 Windows 如何处理内存。 所有的现代操作系统都允许应用程序分配一块地址空

2022-10-26

态。 “减少用户代理”第五阶段,逐步减少用户代理(User-Agent )字符串的长度...   Chrome 发布博客 上有更多 v107 的详细信息,包括此版本的安全修复程序。  Chrome 107 的所有特性更新可在 ChromeStatus.com 中

2023-05-04

正式宣布已经收购了 AI 创业公司 Fakespot,这是一家提供浏览器扩展和移动端 App 来帮助用户识别和过滤虚假评论的公司,目前支持的网购平台包括亚马逊、沃尔玛、eBay、Best Buy、Shopify 和丝芙兰等,暂时不支持国内用户常用的淘

2021-11-11

的符号==与=====在进行比较的时候,如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。 ===在进行比较的时候,会先判断两种字符串的类型是否相等,再比较。

2022-09-08

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2023-02-21

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2023-03-05

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2024-05-30

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2022-02-16

ulti-Party Computation-  MPC)来避免任何单一广告实体(网站、浏览器制造商或者广告商)随意了解用户行为。Mozilla 在 MPC 系统方面有一些经验,比如其旗下的 Firefox 火狐浏览器已部署 Prio 以进行隐私保护遥测。其次,IPA 是一个聚

2024-04-01

Snack3,一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明,及 Xml dom 一切都是 Node 的设计。其下一切数据都以ONode表示,ONode也即 One node 之意,代表任何类型,也可以转换为任何类型。 强调文档树的操控和构建能

2022-07-12

最新的 Firefox 102.0.1 也无法打开该网站。 苹果没有透露为什么不支持 Firefox,有些网友猜测也许是技术限制,导致苹果的商业网站不兼容 Firefox。但这说法毫无依据,毕竟 Firefox 和 Chrome 多年来都在统一战线制定 Web 标准,支持

2022-03-14

浏览器制造商 Apple、Google、Microsoft 和 Mozilla ,以及软件公司 Bocoup 和 Igalia 正在合力制定一项名为的 Web 兼容性规范,以使 Web 技术和代码在不同的设备和浏览器中有统一的渲染效果(利好前端开发)。 这是有史以来第一次,所

2021-11-23

个将商业产品开源的企业。1998 年 1 月,网景公司宣布将浏览器套件开源,代号叫 Mozilla,并建立了专门负责该项目的组织,希望借助全球开发者的力量挽狂澜于既倒。彼时,它正与微软在浏览器市场激战正酣。微软攻势猛烈,