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. 网页中嵌入可以点击“运行代码”执行html/css/js代码

    html代码 <textarea name="textarea" cols="60" rows="10" id="rn01& ...

  2. Redis总结(四)Redis 的持久化

    前面已经总结了Redis 的安装和使用今天讲下Redis 的持久化. redis跟memcached类似,都是内存数据库,不过redis支持数据持久化,也就是说redis可以将内存中的数据同步到磁盘来 ...

  3. CentOS Linux解决Device eth0 does not seem to be present

    在VMware里克隆出来的Centos Linux.. ifconfig...没有看到eth0..然后重启网卡又报下面错误. 故障现象: 解决办法: 首先,打开/etc/udev/rules.d/70 ...

  4. javascript数据结构与算法---栈

    javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...

  5. JS中数组Array的用法{转载}

    js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^var arr = new Array();arr[0] = "aaa";arr[1] ...

  6. PHP数据采集curl常用的5个例子

    用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等.但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者是 ...

  7. 如何对Azure磁盘性能进行测试

    Azure的云存储一直是Azure比较自豪的东西,想到AWS的LSA后面有若干个9,搞得大家都以为它的存储最优秀,其实不然,Azure存储到现在没有丢过客户1bit的数据,但是Azure不会去说我们的 ...

  8. 在浏览器上直接输入url 时,中文传参乱码问题

    这样的地址 xxx.asp?name=中国  ,通过 超链接打开这个链接 ,xxx.asp能够成才接收参数,但是如果将地址直接放到浏览器地址栏上,回车, xxx.asp就无法正确接收中文参数,一直显示 ...

  9. html5页面打包成App - Android或Iphone安装程序

    下载安装前端开发工具:HBuilder 官网下载:http://www.dcloud.io/ 根据官网说明安装 * 打开登录HBuilder,把做好的H5页面通过添加app项目把H5的文件夹加入进来( ...

  10. 如何查找本地的ip

    输入cmd调出指令框然后输入ipconfig指令用快捷键ctrl右侧的键+R