Chrome

如果网站想要了解他们的读者使用的什么浏览器,最简单的办法就是检测读者浏览器客户端的user agent(用户代理,也称 UA string)了,在使用浏览器打开网页的时候,客户端都会发送这个包含浏览器版本和操作系统的字串,让读者所访问的网站能够掌握读者的一些最基本的资料。Google Chrome 当然也有这个字串,如目前 Chrome 10 正式版的 user agent 就是下面这样的,其他之前的版本的格式也基本类似,只是版本号不同罢了。

Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16

Mozilla/5.0 (X11; U; Linuxx86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16

不过今天 Google 的软件工程师 Peter Kasting 在 Chromium 官方博客宣布 Chrome 11将对 Chrome 的 user agent 进行除版本号之外的改动,目前 Beta 和 Dev分支的 Chrome 11已经迎来了新的字符串,如下:

Mozilla/5.0 (Windows NT 6.0; WOW64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24

Mozilla/5.0 (X11; Linuxx86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.16 Safari/534.24

大家细看的话就能看出区别,其实 Chrome 11 的 user agent 字符串相对于以前版本的 Chrome 有四处变动,其中两处是专门为 Windows 版 Chrome 实施的,下面我们来详细的看一下这几处变动:

1、删除掉Windows 版中前面的“windows”平台身份识别,因为除了这个串之外后面还有一个操作系统版本识别字串(Windows NT 6.0),前者的存在根本没啥意义,这样改了之后更加有利于我们于IE浏览器的兼容性,因为IE的UA string中就没有前面这个令牌。

2、删除掉SSL加密强度令牌字串“U”,由于这个强度数据已经是10多年前美国定的SSL加密强度标准,现在所有浏览器都已经支持“U”强度加密,所以没有任何炫耀的必要了。

小知识:U=128-bit加密的美国标准;I=表示国际通用的40-bit加密标准;N=None,即不支持加密。

3、将64bit版本Windows的识别字串加到操作系统版本后面,比如以32bit模式运行在64bit Windows 中的 Chrome 会在 user agent 的操作系统版本后面添加“WOW64”,表示 Windows 32-bit On Windows 64-bit。同时Chrome的源代码中还加入了为原生64bit系统准备的字串,包括适用于x64处理器的“Win64; x64”,适用于安腾处理器的“Win64; IA64”,不过目前这些原生64bit版本的 Chrome 还没有发布,具体什么时间发布也还不清楚。

4、删除浏览器语言识别字串,因为网站如果想要了解用户使用的浏览器语言的话,完全可以使用 HTTP Accept-Language 头部来取代,而且可以支持多语言。而且这个也不准确,比如给 Chrome 团队发送Bug报告的时候,不管用户使用的什么语言都会发送一个“en-US”字串。

很多人可能想问,为什么 Google 要在这时候修改 Chrome 浏览器的 user agent?对于这个问题 Google 也给处了解释,是因为 Mozilla 最近在 Firefox4 中也像这样修改了 user agent,所以让 Chrome 保持和 firefox同步而已。