在解释 “为何每一个浏览器的 User-Agent 都有 Mozilla 字样?” 以前先贴一段目前常见的浏览器 User-Agent 。浏览器
Chrome|谷歌浏览器
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36网络
Firefox|火狐浏览器
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0框架
Opera|欧朋浏览器
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.32ide
Safari|苹果浏览器
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2性能
微软 Edge 浏览器
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586网站
Internet Explorer 11 浏览器
Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Geckospa
IE11 ↓调试
IE11兼容模式 ↓blog
谷歌 ↓ 图片
火狐↓
Edge ↓
故事还得从头提及,最初的主角叫 NCSA Mosaic ,简称 Mosaic(马赛克),是 1992 年底位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心 (National Center for Supercomputing Applications,简称 NCSA)开发,并于 1993 年发布的一款浏览器。它自称 “NCSA_Mosaic/2.0(Windows 3.1)”,Mosaic 能够同时展现文字和图片,今后浏览器变得有趣多了。
然而很快就出现了另外一个浏览器,这就是著名的 Mozilla ,中文名称摩斯拉。一说 Mozilla = Mosaic + Killer,意为 Mosaic 杀手,也有说法是 Mozilla = Mosaic & Godzilla,意为马赛克和哥斯拉,而 Mozilla 最初的吉祥物是只绿色大蜥蜴,后来更改成红色暴龙,跟哥斯拉长得同样。
但 Mosaic 对此很是不高兴,因而后来 Mozilla 改名为 Netscape ,也就是网景。Netscape 自称 “Mozilla/1.0(Win3.1)” ,事情开始变得更加有趣。网景支持框架(frame),因为你们的喜欢框架变得流行起来,可是 Mosaic 不支持框架,因而网站管理员探测 User-Agent ,对 Mozilla 浏览器发送含有框架的页面,对非 Mozilla 浏览器发送没有框架的页面。
后来网景拿微软寻开心,称微软的 Windows 是“没有调试过的硬件驱动程序”。微软很生气,后果很严重。此后微软开发了本身的浏览器,这就是 Internet Explorer ,并但愿它能够成为 Netscape Killer 。IE一样支持框架,但它不是 Mozilla ,因此它老是收不到含有框架的页面。微软很郁闷很快就沉不住气了,它不想等到全部的网站管理员都了解 Internet Explorer 而且给 Internet Explorer 发送含有框架的页面,它选择宣布IE是兼容 Mozilla ,而且模仿 Netscape 称 Internet Explorer 为 “Mozilla/1.22(compatible; MSIE 2.0; Windows 95)” ,因而 Internet Explorer 能够收到含有框架的页面了,全部微软的人都嗨皮了,可是网站管理员开始晕了。
由于微软将 Internet Explorer 和 Windows 捆绑销售,而且把 Internet Explorer 作得比 Netscape 更好,因而第一次浏览器血腥大战爆发了,结果是 Netscape 以失败退出历史舞台,微软更加嗨皮。但没想到 Netscape 竟然又以 Mozilla 的名义重生了(为何要用“又”,由于在成立 Netscape 以前就是 Mozilla ,意为 Mosaic 杀手,当时的创立网络浏览模式的 Mosaic 对此很是不高兴,因而后来 Mozilla 改名为 Netscape,如今又绕回来了。 ),而且开发了 Gecko ,此次它自称为 “Mozilla/5.0(Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826”。
Gecko 是一款渲染引擎而且很出色。Mozilla 后来变成了如今咱们熟知的 Firefox,并自称 “Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0”。Firefox 性能很出色,Gecko 也开始攻城略地,其余新的浏览器使用了它的代码,而且将它们本身称为 “Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1”,以及 “Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0”,每个都将本身装做 Mozilla ,而它们全都使用 Gecko 。
Gecko 很出色,而 Internet Explorer 彻底跟不上它,所以 User-Agent 探测规则变了,使用 Gecko 的浏览器被发送了更好的代码,而其余浏览器则没有这种待遇。Linux 的追随者对此很难过,由于他们编写了 Konqueror ,它的引擎是 KHTML ,他们认为 KHTML 和 Gecko 同样出色,但却由于不是 Gecko 而得不到好的页面,因而 Konqueror 为获得更好的页面开始将本身假装成 “like Gecko”,并自称为 “Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)”。自此 User-Agent 变得更加混乱。
这时更有 Opera 跳出来讲,“毫无疑问,咱们应该让用户来决定他们想让咱们假装成哪一个浏览器。” ,因而 Opera 干脆建立了菜单项让用户自主选择让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 做为渲染引擎,但苹果加入了许多新的特性,因而苹果从 KHTML 另辟分支称之为 WebKit ,但它又不想抛弃那些为 KHTML 编写的页面,因而 Safari 自称为 “Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5”,增长了 AppleWebKit/… 字段,这进一步加重了 User-Agent 的混乱局面。
由于微软十分忌惮 Firefox ,因而 Internet Explorer 重装上阵,此次它自称为 “Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) ”,而且渲染效果一样出色,可是须要网站管理员的指令它这么作才行。
再后来,谷歌开发了 Chrome 浏览器,Chrome 使用 Webkit 做为渲染引擎,和 Safari 以前同样,它想要那些为 Safari 编写的页面,因而它假装成了 Safari 。因而 Chrome 使用 WebKit ,并将本身假装成 Safari,WebKit 假装成 KHTML ,KHTML 假装成 Gecko ,最后全部的浏览器都假装成了 Mozilla ,这就是为何全部的浏览器 User-Agent 里都有 Mozilla 。Chrome 自称为 “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”。
由于以上这段历史,如今的 User-Agent 字符串变得一团糟,几乎根本没法彰显它最初的意义。追根溯源,微软能够说是这一切的始做俑者,但后来每个人都在试图假扮别人,最终把 User-Agent 搞得混乱不堪。
一句话结论:由于网站开发者可能会由于你是某浏览器(这里是 Mozilla),因此输出一些特殊功能的程序代码(这里指好的特殊功能),因此当其它浏览器也支持这种好功能时,就试图去模仿 Mozilla 浏览器让网站输出跟 Mozilla 同样的内容,而不是输出被阉割功能的程序代码。你们都为了让网站输出最好的内容,都试图伪装本身是 Mozilla 一个已经不存在的浏览器……
各大浏览器诞生年表 | ||
浏览器 | 发布时间 | 所属公司 |
Mosaic | 1993年1月23日 | NCSA |
Netscape | 1994年12月 | Mozilla |
Opera | 1995年4月 | Opera Software ASA |
Internet Explorer | 1995年8月16日 | Microsoft |
Kongqueror | 1996年10月14日 | Kongqueror |
Safari | 2003年1月7日 | Apple |
Firefox | 2004年11月8日 | Mozilla |
Chrome | 2008年9月2日 |