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. Java细粒度锁实现的3种方式

    最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响.初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性.而java自 ...

  2. windows下pip安装python模块时报错总结

    http://www.cnblogs.com/liaojiafa/p/5100550.html 前言: 这几天把python版本升级后,发现pip安装模块好多都报错(暂不确定是不是因为升级导致的),我 ...

  3. Solr学习总结(四)Solr查询参数

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

  4. php函数fgets读取文件

    如果一个文件比较大,可以考虑用fgets函数 下面是个例子: #文件作用:fgets读取文件 $start_time = microtime(true); $file_name = "a.t ...

  5. ActiveMQ启动多个broker

    具体步骤如下: 1.把activemq目录下的conf文件复制一份,叫做conf2, 命令: cp -r conf conf2 2.修改conf2目录下的activemq.xml文件 a.修改brok ...

  6. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  7. PHP二维数组排序(list_order)

    /** * 对二维数组进行排序 * 模拟 数据表记录按字段排序 * * <code> * @list_order($list, $get['orderKey'], $get['orderT ...

  8. CentOS6.3编译安装Memcached的PHP客户端memcache

    在安装Memcached的PHP客户端memcache之前,可先看下先前的工作笔记: PHP5不重新编译,如何安装自带的未安装过的扩展,如soap扩展? 安装PHP的memcache扩展 cd /us ...

  9. 第3月第2天 find symbolicatecrash 生产者-消费者 ice 引用计数

    1.linux find export find /Applications/Xcode.app/ -name symbolicatecrash -type f export DEVELOPER_DI ...

  10. mongDB-- 3. 查询操作

    1. 准备工作 (1)启动mongo 进入mongo安装目录的bin/ 目录 , ./mongod (2)启动mongo客户端 ./mongo (3) 查看所有库 show dbs; (4) 切换到l ...