In the beginning there was NCSA Mosaic, and Mosaic called itself NCSA_Mosaic/2.0 (Windows 3.1), and Mosaic displayed pictures along with text, and there was much rejoicing.

And behold, then came a new web browser known as “Mozilla”, being short for “Mosaic Killer,” but Mosaic was not amused, so the public name was changed to Netscape, and Netscape called itself Mozilla/1.0 (Win3.1), and there was more rejoicing. And Netscape supported frames, and frames became popular among the people, but Mosaic did not support frames, and so came “user agent sniffing” and to “Mozilla” webmasters sent frames, but to other browsers they sent not frames.

And Netscape said, let us make fun of Microsoft and refer to Windows as “poorly debugged device drivers,” and Microsoft was angry. And so Microsoft made their own web browser, which they called Internet Explorer, hoping for it to be a “Netscape Killer”. And Internet Explorer supported frames, and yet was not Mozilla, and so was not given frames. And Microsoft grew impatient, and did not wish to wait for webmasters to learn of IE and begin to send it frames, and so Internet Explorer declared that it was “Mozilla compatible” and began to impersonate Netscape, and called itself Mozilla/1.22 (compatible; MSIE 2.0; Windows 95), and Internet Explorer received frames, and all of Microsoft was happy, but webmasters were confused.

And Microsoft sold IE with Windows, and made it better than Netscape, and the first browser war raged upon the face of the land. And behold, Netscape was killed, and there was much rejoicing at Microsoft. But Netscape was reborn as Mozilla, and Mozilla built Gecko, and called itself Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826, and Gecko was the rendering engine, and Gecko was good. And Mozilla became Firefox, and called itself Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0, and Firefox was very good. And Gecko began to multiply, and other browsers were born that used its code, and they called themselves Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1 the one, and Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0 another, each pretending to be Mozilla, and all of them powered by Gecko.

And Gecko was good, and IE was not, and sniffing was reborn, and Gecko was given good web code, and other browsers were not. And the followers of Linux were much sorrowed, because they had built Konqueror, whose engine was KHTML, which they thought was as good as Gecko, but it was not Gecko, and so was not given the good pages, and so Konquerer began to pretend to be “like Gecko” to get the good pages, and called itself Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko) and there was much confusion.

Then cometh Opera and said, “surely we should allow our users to decide which browser we should impersonate,” and so Opera created a menu item, and Opera called itself Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51, or 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) depending on which option the user selected.

And Apple built Safari, and used KHTML, but added many features, and forked the project, and called it WebKit, but wanted pages written for KHTML, and so Safari called itself Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5, and it got worse.

And Microsoft feared Firefox greatly, and Internet Explorer returned, and called itself Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0) and it rendered good code, but only if webmasters commanded it to do so.

And then Google built Chrome, and Chrome used Webkit, and it was like Safari, and wanted pages built for Safari, and so pretended to be Safari. And thus Chrome used WebKit, and pretended to be Safari, and WebKit pretended to be KHTML, and KHTML pretended to be Gecko, and all browsers pretended to be Mozilla, and Chrome called itself 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, and the user agent string was a complete mess, and near useless, and everyone pretended to be everyone else, and confusion abounded.

share from http://webaim.org/blog/user-agent-string-history/

  译文:

  起初东边来一浏览器叫 NCSA Mosaic,自称 NCSA_Mosaic/2.0 (Windows 3.1),渲染网页图文并茂,人民群众见了喜大普奔。
  然后西边来一浏览器叫 Mozilla,就是“干死 Mosaic”的缩写。Mosaic 不高兴了,Mozilla 悻悻改名网景,但还是自称
Mozilla/1.0 (Win3.1),人民群众见有新浏览器用更加喜大普奔。网景首创网页框架,框架深得群众欢心。可惜 Mosaic
不认识框架,为了少麻烦智慧的劳动人民创造了 UA 探测:管自己叫 Mozilla 的有框架,不管自己叫 Mozilla 的一律不给发框架!
  网景做大了开始戏耍微软开心,管 Windows 叫“蓝屏死机烂驱动”。微软怒从中来,誓言自己做浏览器搞死网景,于是还真的做出了个 Internet
Explorer。IE 有框架可又不是 Mozilla,于是见到陌生人的服务器纷纷发没框架卡:对不起,你是一个
Mosaic。微软没耐心了,感到等到网管搞清楚 IE 是啥大概要猴年马月,于是让 IE 说自己是 Mozilla 兼容以便冒充网景——自称 Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。从此 IE 也有了框架用,微软上下喜大普奔,莫名奇妙的 UA 却搞得各家网管晕头转向。
  Windows
开始捆绑 IE,IE 越做越好远胜网景,于是第一次浏览器大战打响了。结果网景惨败,微软上下喜大普奔,却没注意到死后的网景涅盘成了
Mozilla 基金会。Mozilla 制作了 Gecko,自称 Mozilla/5.0 (Windows; U; Windows NT
5.0; en-US; rv:1.1) Gecko/20020826,里面的 Gecko 是个优秀的渲染引擎。Mozilla
后来又成了火狐,自称 Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5)
Gecko/20041108 Firefox/1.0,火狐是极好的。Gecko 又开始增殖扩张,不少浏览器站在 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
是好的,而 IE 又不行了,所以 UA 探测又焕发生机了:说自己有 Gecko 的浏览器有好网页,剩下的浏览器不合标准的残羹剩饭凑合吃吧。但是
Linux 用户不满了——因为他们有内心是 KHTML 的 Konqueror,而他们觉得自己的 KHTML 和 Gecko 一样棒。可是
KHTML 不是 Gecko,所以在服务器的眼里只能和 IE 一起扒剩饭吃。因此 Konqueror 开始自称“类似 Gecko”,全名
Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)。各家网管再次晕头转向。
  这
时候自由派的 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,敲敲打打修修补补一番满意之后改称 WebKit。Safari 想要用给 KHTML
准备的网页,因此自称 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de)
AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5。这个世界愈发混乱了。
  微软惧怕 Firefox 抢占市场,因此 IE 再度回归,自称 Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)。IE 8 是能渲染好网页的——不过只限网管明确命令它如此做的情况下。
  然后谷歌又有了 Chrome,Chrome 和 Safari 一样用 WebKit,所以想要用写给 Safari 的网页,于是就假装自己是
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简史(user-agent)的更多相关文章

  1. zabbix监控告警Received empty response from Zabbix Agent Assuming that agent dropped connection

    zabbix监控告警Received empty response from Zabbix Agent Assuming that agent dropped connection错误 查看zabbi ...

  2. Received empty response from Zabbix Agent at [agent]. Assuming that agent dropped connection because of access permission

    Received empty response from Zabbix Agent at [agent]. Assuming that agent dropped connection because ...

  3. 浏览器默认样式(User Agent Stylesheet)

    原文:http://www.zjgsq.com/898.html 不同浏览器对于相同元素的默认样式并不一致,这也是为什么我们在CSS的最开始要写 * {padding:0;marging:0}: 不过 ...

  4. 大数据学习day35----flume01-------1 agent(关于agent的一些问题),2 event,3 有关agent和event的一些问题,4 transaction(事务控制机制),5 flume安装 6.Flume入门案例

    具体见文档,以下只是简单笔记(内容不全) 1.agent Flume中最核心的角色是agent,flume采集系统就是由一个个agent连接起来所形成的一个或简单或复杂的数据传输通道.对于每一个Age ...

  5. zabbix安装配置agent程序之agent配置文件详解

    安装zabbix-agent http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/ 下载:zabbix-agent-3.2.0-1.el6.x86_64.r ...

  6. 用浏览器模拟各种User Agent

    转至:http://www.cnblogs.com/top5/archive/2012/06/07/2540686.html 测试页面的时候经常需要不同的User Agent,Firefox.Chro ...

  7. 设备指纹识别之User Agent 解析

    设备指纹识别之User Agent 解析User Agent 解析 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-4- ...

  8. User Agent 用户代理

    User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本.CPU 类型.浏览器及版本.浏览器渲染引擎.浏览器语言.浏览器插件等. User A ...

  9. open-falcon ---客户机agent操作

    open-falcon的agent用于采集机器负载监控指标,比如cpu.idle.load.1min.disk.io.util等等,每隔60秒push给Transfer.agent与Transfer建 ...

  10. JDWP Agent

    JDWP Agent Implementation Description Revision History Disclaimer 1. About this Document 1.1 Purpose ...

随机推荐

  1. oracle中将自建用户下的所有表删除

    select 'drop table '||table_name||' ;' from user_tables;select 'drop sequence '||sequence_name||' ;' ...

  2. 机器学习笔记—svm算法(上)

    本文申明:本文原创,如转载请注明原文出处. 引言:上一篇我们讲到了logistic回归,今天我们来说一说与其很相似的svm算法,当然问题的讨论还是在线性可分的基础下讨论的. 很多人说svm是目前最好的 ...

  3. rpm---linux软件安装与管理

    linux的安装命令选项太多,整理一下,方便后期查找. 汇总: install: rpm -ivh 包全名 安装 upgrade: rpm -Uvh 包全名 升级 erase: rpm -e 包名 删 ...

  4. myeclipse 第一步

    今天查myeclipse的一个不常用快捷键的时候,意外发现了一个学习myeclipse开端的博文(别问我是怎么查到这篇博文的....两个字:顺手),感觉比较详细,特意记下来, 别人的分享博客: htt ...

  5. Android网络请求通信之Volley

    一.Volley简介 Volley网络框架是Google公司在2013年发布的一款Android平台上的网络请求通信库.以下是对Volley的简单归纳. Volley的优点: 使网络通信更快.更简单. ...

  6. C# 使用Silverlight toolkit Chart

    一.基础介绍 Silverlight ToolKit是微软发布的基于Microsoft-Public License(MS-PL)许可协议的控件集.MS-PL许可协议允许商业或非商业的发布,所以我们可 ...

  7. PHP中curl的CURLOPT_POSTFIELDS参数使用细节

    CURL确实是一个不错的好工具,不仅在PHP中还是其他的操作系统中,都是一个非常好用的.但是如果你有些参数没有用好的话,那可能会得不到自己理想中的结果. 在通常情况下,我们使用 CURL 来提交 PO ...

  8. python , angular js 学习记录【2】

    1.不同scope之间的通信 (1)无父子关系的scope通信: 在需要操作的scope里面定义一个事件,名称为delete_host,参数为data $rootScope.$on('delete_h ...

  9. php时区问题

    今天遇到一个很诡异的问题: 数据库中存的日期信息为时间戳,用php取出数据库中的日期信息,并用date()函数转化为“Y-m-d”后,发现和mysql格式化函数Date_Format()处理后的结果不 ...

  10. ToolStripMenuItem

    MenuStrip 类 为窗体提供菜单系统. 继承层次结构 System.Object  System.MarshalByRefObject    System.ComponentModel.Comp ...