关于浏览器userAgent里的khtml,Gecko,applewebkit和safari都是什么

当我们查看浏览器的userAgent时,会发现一串长长的文字,里面出现khtml, Gecko, applewebkit, safari等等这些词,然后我们就会有个疑问,这都是什么鬼?

要解析清楚这些,那会是一个很长的故事,在讲故事前,我们先简单的解释一下这几个词:

  • khtml: HTML网页排版引擎
  • Gecko:也是HTML网页排版引擎
  • applewebkit: JavaScript执行引擎
  • safari:浏览器名称

好,简单的名词解释就到这里了,接下来开始讲故事。

话说很久很久以前,有一个浏览器名字叫 NCSA Mosaic。

紧接着,也出现了一个叫 Mozilla 的浏览器 (Mozilla 的意思是 Mosaic 终结者)。

后来,Mozilla 的正式发布版本是 Netscape,它把自己标称为Mozilla/1.0 (Win3.1)。

由于Netscape支持框架显示,后来框架在大家中间流行起来了,但Mosaic不支持框架。

所以网站管理员们则通过 User-Agent 判断,如果是 Netscape 浏览器则进入框架(html frame)的页面,如果不是 Netscape 浏览器则进入没有框架的页面。

Netscape 没有风光多久,微软也推出了自己的 IE 浏览器 。IE 浏览器也支持框架。但是很遗憾,网站管理员们不认识它呀,因为IE的 User-Agent 没有Mozilla, 所以没有人理它。

后来微软抓狂了,你们不就是只认识 User-Agent 头里有 Mozilla 字符的浏览器么,于是宣称自己是“兼容Mozilla”(compatible)的,开始模仿Netscape,把自己标称为Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)。这样一来, IE 也有了Mozilla (其实是伪装的…) 所以那些框架页面也能看到了。

后来随着微软把浏览器捆绑进自己的操作系统里一起卖,随之爆发了浏览器大战。结果大家都很清楚,Netscape失败了,而微软大胜了。至今微软的IE依然影响着 w3c 影响着所有浏览器。

Netscape 失败后重生为 Mozilla, 构造了Gecko,标称其为Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826。Gecko属于渲染引擎,表现优异。

Mozilla开发了Firefox,标称为Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0,并且Firefox表现也非常优秀.

由于 Gecko 的优秀,网站管理员们会判断浏览器是否是 Gecko 的,如果是则把更先进更漂亮页面显示给这个浏览器,其他浏览器就没有这个待遇了。

(比如现在的HTML5 , 如果我判断是你firefox的新版本则跳转到地址1,如果是ie则去地址2)

看到 Gecko 能浏览这么漂亮的页面, Linux平台的孩子们很桑心,因为他们创建了基于KHTML引擎支持的Konqueror浏览器,它跟 Gecko 一样优秀,但却不带有Gecko而无法被识别。结果Konquerer开始伪装自己“像Gecko”(like Gecko)那样以看到更漂亮的网页,并标称自己为 Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD)(KHTML, like Gecko)。

然后,这个世界就抽风了….

Apple开发了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。

世界更加混乱了。

Google也开发了自己的浏览器Chrome,使用了Webkit渲染引擎,有点像Safari,它希望能看到为Safari编写的网页,于是决定伪装成Safari。于是,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 。

最后:

IE伪装成 Mozilla

webKit 伪装成 KHTML

KHTML 伪装成 Gecko

最后 opera 伪装成上面任何浏览器

同时所有的浏览器又都宣称自己是 Mozilla

就是这样,把自己伪装得自己妈都不认识了,谁都不是谁的谁,谁也都是谁的谁。

总之浏览器世界一塌糊涂………

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) 供大家来选择,选谁是谁。

故事讲完了,你听懂了吗

 

转自 http://os.opensns.cn/weibo/detail/24069.html


发表评论

电子邮件地址不会被公开。 必填项已用*标注