原文地址:History of the browser user-agent string 翻译文章地址:浏览器user-agent的历史css
译者:一篇有些年头的文章,若是你对于浏览器user agent的历史不甚了解(就像我),那么这篇文章对于你应该颇有帮助,另外原文下的评论也很精彩web
起初有款浏览器叫NCSA Mosaic,Mosaic自称为
NCSA_Mosaic/2.0 (Windows 3.1)
,它能够显示一些图片和文字,这是很使人欣喜的。chrome
后来,出现了一款名为Mozilla的新型网络浏览器,它的名字Mozilla是“Mosaic Killer”的缩写。可是Mosaic以为这并很差笑,因此Mozilla便改名为Netscape,而且自称
Mozilla/1.0 (Win3.1)
。Netscape
支持那些很流行的框架,可是Mosaic却不支持这些框架,所以当时就诞生了“user agent嗅探”,而且人们只向Mozilla的网站管理员贡献一些框架,而不向其余浏览器贡献。浏览器
而后,Netscape说道,让咱们一块儿嘲笑一下微软,而且称Windows为“难以调试的设备驱动”,微软听到这些后很生气。因此微软就自研出了被称为Internet Explorer
(译者注:如下简称IE)的浏览器,而且但愿这款浏览器成为Netscape killer
。虽然IE支持框架,可是它毕竟不是Mozilla,因此没有人为IE提供框架,为此微软变得不耐烦了,它不肯再等待那些网站管理员学习IE而且给它贡献框架,所以,IE宣布它是“兼容Mozilla”的而且开始模仿Netscape,同时它自称为
Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)
,接下来IE就陆陆续续收到了其余处贡献的框架,微软全员为此都很高兴,可是同时网站管理员们却变得困惑了起来。网络
随后,微软就利用Windows来迅速扩张IE,同时让IE变得比Netscape更好,第一次浏览器大战在这片土地上爆发了。而后,Netscape公司就被干掉了,微软以为很开心。可是Netscape却以Mizilla的名义东山再起了,前同事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开始大量被使用,其余浏览器也都开始使用它的代码,这些浏览器有的自称
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发展的很好,“user agent嗅探”又出现了,社区贡献给Gecko一些其余浏览器没有的很好的代码,因此此时IE又不行了。Linux爱好者们很难过,由于他们已经研发了
Konqueror
,其引擎是KHTML
,他们认为它和Gecko
同样优秀,可是它毕竟不是Gecko
,因此它没有被提供一些好的页面,所以Konqueror
开始假装成类Gecko型以获取一些好的页面,而且自称为Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)
,能够看到这有不少混乱的地方。学习
接着,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, or Opera/9.51 (Windows NT 5.1; U; en)
,用户能够自行选择这两种类型。网站
随后,苹果公司研发了Safari,使用了KHTML
引擎,可是给引擎添加了不少功能特性,并且还把这个项目拆分了出来,称它为Webkit
,可是苹果公司依然但愿为
KHTML
编写页面,因此Safari称它本身为Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5
,对比以上的混乱,状况变得更糟了。google
微软很是惧怕Firefox,因此它从新拾起了IE,称它为Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
,而且它呈现很好的代码,可是前提是网站管理员指示它这样作翻译
而后,Google研发了Chrome,使用了Webkit
引擎,就像Safari同样,想要为Safari构建页面,因此它假装成Safari。所以Chrome使用了
Webkit
,并假装成Safari,Webkit
假装成KHTML
,KHTML
假装成Gecko
,全部浏览器都伪装是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一团糟,几乎毫无用处,每个都假装成其余的样子,真真儿地混乱不堪
(全文完)
谈一些个人感想吧
就拿我本身的机子上的几个浏览器来讲
一眼望去,很繁琐并且很类似,并且我这仍是一些当前主流浏览器,一些小众浏览器的ua可能会包含不少其余繁杂的信息
对于ua,其实之前没怎么关注过,偶然看到这篇文章后我才发现,这ua的历史真就像咱们大多数的老项目的迭代同样呀,代码一层包一层,user agent一层包一层,你假装成我,我假装成它,致使它的识别很容易被欺骗,因此猜想用户正在使用的浏览器是一种很不靠谱的方式,若是能提供一种简单的、有效的、直接了当的方法来区分用户正在使用哪一种浏览器那就最好了