【译】浏览器user-agent的历史

原文地址: https://webaim.org/blog/user-...

译者:一篇有些年头的文章,若是你对于浏览器user agent的历史不甚了解(就像我),那么这篇文章对于你应该颇有帮助,另外原文下的评论也很精彩css

  起初有款浏览器叫NCSA Mosaic,Mosaic自称为NCSA_Mosaic/2.0 (Windows 3.1),它能够显示一些图片和文字,这是很使人欣喜的。166831df2b374b73?w=50&h=55&f=jpeg&s=2310web

  后来,出现了一款名为Mozilla的新型网络浏览器,它的名字Mozilla是“Mosaic Killer”的缩写。可是Mosaic以为这并很差笑,因此Mozilla便改名为Netscape,而且自称Mozilla/1.0 (Win3.1)Netscape支持那些很流行的框架,可是Mosaic却不支持这些框架,所以当时就诞生了“user agent嗅探”,而且人们只向Mozilla的网站管理员贡献一些框架,而不向其余浏览器贡献。166831df23359ec2?w=100&h=75&f=jpeg&s=2983chrome

  而后,Netscape说道,让咱们一块儿嘲笑一下微软,而且称Windows为“难以调试的设备驱动”,微软听到这些后很生气。因此微软就自研出了被称为Internet Explorer(译者注:如下简称IE)的浏览器,而且但愿这款浏览器成为Netscape killer。虽然IE支持框架,可是它毕竟不是Mozilla,因此没有人为IE提供框架,为此微软变得不耐烦了,它不肯再等待那些网站管理员学习IE而且给它贡献框架,所以,IE宣布它是“兼容Mozilla”的而且开始模仿Netscape,同时它自称为Mozilla/1.22 (compatible; MSIE 2.0; Windows 95),接下来IE就陆陆续续收到了其余处贡献的框架,微软全员为此都很高兴,可是同时网站管理员们却变得困惑了起来。166831df234db4b8?w=64&h=63&f=png&s=2645浏览器

166831df2b603781?w=90&h=79&f=png&s=3609
  随后,微软就利用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驱动的。166831df2c016d68?w=90&h=85&f=jpeg&s=5475网络

  后来,Gecko发展的很好,“user agent嗅探”又出现了,社区贡献给Gecko一些其余浏览器没有的很好的代码,因此此时IE又不行了。Linux爱好者们很难过,由于他们已经研发了Konqueror,其引擎是KHTML,他们认为它和Gecko同样优秀,可是它毕竟不是Gecko,因此它没有被提供一些好的页面,所以Konqueror开始假装成类Gecko型以获取一些好的页面,而且自称为Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko),能够看到这有不少混乱的地方。166831df239e308b?w=48&h=48&f=jpeg&s=2929框架

  接着,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),用户能够自行选择这两种类型。166831dfcfefb0d7?w=60&h=52&f=jpeg&s=9473学习

  随后,苹果公司研发了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,对比以上的混乱,状况变得更糟了。166831dfd1146733?w=80&h=80&f=jpeg&s=3789网站

  微软很是惧怕Firefox,因此它从新拾起了IE,称它为Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0),而且它呈现很好的代码,可是前提是网站管理员指示它这样作google

  而后,Google研发了Chrome,使用了Webkit引擎,就像Safari同样,想要为Safari构建页面,因此它假装成Safari。所以Chrome使用了Webkit,并假装成Safari,Webkit假装成KHTMLKHTML假装成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一团糟,几乎毫无用处,每个都假装成其余的样子,真真儿地混乱不堪166831e073f1e033?w=70&h=65&f=jpeg&s=3208spa

(全文完)

谈一些个人感想吧

就拿我本身的机子上的几个浏览器来讲

  • Chrome 69:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
  • Safari 12:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Safari/605.1.15
  • Firefox Nightly 59.0a1:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0

一眼望去,很繁琐并且很类似,并且我这仍是一些当前主流浏览器,一些小众浏览器的ua可能会包含不少其余繁杂的信息

对于ua,其实之前没怎么关注过,偶然看到这篇文章后我才发现,这ua的历史真就像咱们大多数的老项目的迭代同样呀,代码一层包一层,user agent一层包一层,你假装成我,我假装成它,致使它的识别很容易被欺骗,因此猜想用户正在使用的浏览器是一种很不靠谱的方式,若是能提供一种简单的、有效的、直接了当的方法来区分用户正在使用哪一种浏览器那就最好了

相关文章