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

你有没有注意过,几乎所有浏览器的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/

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/357071/user-agent-string-history

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。