提醒:本文已经超过 1610 天未修改,其中某些信息可能已经过时,请谨慎使用!
你似乎正在查看一篇很久远的文章。
为了你这样的访客,我特地保留了我的历史博文。不要笑话过去的我,用温柔的目光看下去吧。

全文共分6个段落,共4604字,预计阅读时间:5分钟

#引言

不知道你在分析Nginx响应日志时候有没有发现各个浏览器的UA非常混乱,每条记录的UA几乎包含了所有的浏览器内核的UA,为什么会发展到如此地步?

列举几个UA:
浏览器User-Agent
Crome78 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Firefox Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 OPR/62.0.3331.116
Opera Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 OPR/62.0.3331.116
IE8Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0
IE11Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
EdgeMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18362
Xbox One上的EdgeMozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/14.14310
Xbox 360上的IEMozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; Xbox)
SafariMozilla/5.0 (iPad; CPU OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
手机QQ(内置) Mozilla/5.0 (Linux; Android 6.0; PRO 6 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043221 Safari/537.36 V1_AND_SQ_7.0.0_676_YYB_D QQ/7.0.0.3135 NetType/WIFI WebP/0.3.0 Pixel/1080

以上UA均由Edge模拟

#不管哪个浏览器均是带有 "Mozilla/5.0" Why?

时间回溯到90年代,在1993年National Center for Supercomputing Applications[简称"NCSA"]开发并发布了一款名为"NCSA Mosaic"[读音:mōˈzā-ik]的浏览器,她的特点是可以同时展示文本信息和图片,这使得页面变得生动又有趣起来。(是的,最早的网页只有文字) ,此时她的User-Agent叫 "NCSA_Mosaic/2.0(Windows 3.1)"。
然而,半路杀出来了一个网景公司推出了一个名叫Mozilla[读音: Mo zi lla ]的内核(即"Netscape网景浏览器"和后来使用"Mozilla/5.0"的"Firefox火狐浏览器"),此时她自称为"Mozilla/1.0(Win3.1)"。从这开始,事情就变得糟糕起来,因为网景浏览器支持框架("Frame"),使用了框架的页面开始变得流行起来,但是显然NCSA Mosaic并不支持这种高级玩意儿,于是乎机灵的各大站长就想出了通过向带有Mozilla UA的浏览器发送框架,而不带Mozilla UA的则不发送的区别对待方针,这样使得网景大火。
后来网景膨胀了拿微软寻开心,称微软的Windows是“没有调试过的硬件驱动程序”。 这让微软非常火大,微软很生气,后果很严重。秉着"一怒而诸侯惧,安居而天下息"的行事风格,微软搞出来了IE即"Internet Explorer"插一jio浏览器市场,并且极大的希望其能成为网景杀手"Netscape Killer" ,IE也支持框架,但她不是"Mozilla",所以网站并不鸟他不给他框架,最后,微软向世界公布了IE支持框架,并把IE乔装成"冒牌"Mozilla来获得框架,此时她自称为"Mozilla/1.22(compatible; MSIE 2.0; Windows 95)"。此时微软表示我真是HIGH到爆了,但是所有站长表示Unhappy,因为他们无法区分"Mozilla"和其他浏览器了。So,微软家IE就是那个最先搅浑UA的那根搅屎棍。
然而Netscape终究敌不过微软,因为微软捆绑IE作为Windows操作系统的自带浏览器,没想到吧,作为世界上使用人数最多的桌面视窗操作系统+捆绑销售的策略让IE的占有率大于了Netscape,Netscape被这套组合技打的直接自闭,你们好坏坏,我不跟你们玩了。这让本就很HIGH的微软变得更HIGH了(微软:消灭了你网景,我微软就是天下第一啦,IE远远强于网景啦)。但是没想到吧,网景怎么可能那么甘心退出历史舞台,人家带着更加NB的Mozilla/5.0和Gecko回来了,这时候她自称为"Mozilla/5.0(Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826",Gecko是一款非常出色的渲染引擎,接着Netscape的继任者即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" 或者 "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0",她们都叫自己Mozilla带着Gecko,以获得更好的页面。(各大站长:MMP)
Gecko的性能吊打了IE,因此,使用了Gecko的浏览器获得了更好的页面,但是Linux用户不知有一句MMP当讲不当讲,于是这帮大佬搞出来了"Konqueror",渲染引擎是"KHTML",我不要你觉得,我要我觉得,KHTML就是和Gecko一样好甚至能吊打她,但是你凭什么不给我更好的页面?于是KHTML学起来微软的套路,不等各大站长支持KHTML而是伪装成Gecko,所以她自称 "Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)" ,"like Gecko" 意为像是Gecko。本来UA这盆屎就够乱了,被她这么一搅和,更乱了。(站长:MMP一定要讲)
Opera欧朋:桥豆麻袋!你们不要再打了,我觉得用户有权利选择伪装,于是Opera做了个菜单,让用户选择UA(就是现在的UA模拟啦)。这一点让Opera能更好的适应更多的页面。
后来,苹果认为气势上不能输给苹果,操作系统咱有,就差个自己的浏览器了,于是苹果搞出来个"Safari"(就你们Apple手机电脑上那个,打心眼里瞧不起Flash那个)。本来呢,就是使用KHTML,但是Apple魔改了一番,这时候Apple就觉得自己很亏 哦天呐,我可是高贵奢侈的Apple,岂能和凡夫俗子一个名称?不行,我得改个名字,但我又不想放弃那些为KHTML编写的页面,噫!好!我改名为 "WebKit"对外我就说我叫"Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5"。本来被之前以及非常非常乱的UA又又又被搅和了一顿。什么?你说IE?IE?IE此时面对这样的大乱斗都直接弃疗了,这里没IE什么事情,虽然这场战争是IE挑起来的。
看着这么多大佬打来打去,Google觉得自己优势很大,觉得自己也要搅和上那么一下,于是一jio插进来个Chrome,Chrome用WebKit,她想要Safari那么华丽的页面,和之前的前辈一样,她也使用了伪装大法把自己装成了"Safari",对外叫自己"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.1" 。Chrome伪装成"Safari",Safari的WebKit伪装成KHTML,KHTML为了Gecko的页面伪装成为了她的样子,最后所有浏览器为了给Mozilla准备的页面全部伪装成了Mozilla,这下UA彻底乱了。这就是为什么所有浏览器UA都有Mozilla的原因了。Mozilla成了最大赢家嘲笑并议论其他浏览器。
最后还有使用Chrome开源项目内核 Chromium的国产浏览器,你说这玩意儿分兼容和极速模式,人不人鬼不鬼的,带着IE内核和Chrome内核,切换兼容和极速就是切换IE和Chrome,而这样子做的原因是因为国内大部分政府网站以及事业单位,银行,企业等网站大多对IE支持而不对Chrome支持,但是很多用户分不清,导致使用极速模式开了IE优化的网站,或者用兼容模式开了Chrome优化的网站,而各大站长也不知道到底要优化IE还是优化Chrome???当然大多数人包括我都是优化Chrome,所以IE/兼容模式直接劝退。至于遇到什么按钮不加载啊点不开啊空白啊之类的请更新您的浏览器到最新的Chrome或Firefox,切换为极速模式访问呢。
附录:各大浏览器发布日期
  • 1993年1月23日:Mosaic
  • 1994年12月:Netscape
  • 1994年:Opera
  • 1995年8月16日:Internet Explorer
  • 1996年10月14日:Kongqueror
  • 2003年1月7日:Safari
  • 2008年9月2日:Chrome
  • 2010年及以后:各大国产浏览器
  • 2018年8月15日:“国产”浏览器红芯浏览器在线丢人

—最后审计:By Small_xu,部分资料来自互网

版权声明:转载时请以超链接形式标明文章原始出处和作者信息,来源孤影墨香
本文链接: https://www.gymxbl.com/2016.html
访问时间:2024-12-09 07:01:00


正因为知道可以在空中翱翔,才会畏惧展翅的那一刻而忘却疾风 努力学习ing