给产品经理讲技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

UA的故事

“UA”是“UserAgent”(用户代理)的简写,一般用来区分不同的浏览器。UA形如:

Mozilla/3.0(Win95; U)

这是 Netscape(网景)浏览器的标识,Mozilla/3.0表示 Netscape Navigator 3,Win95表示宿主平台,U为加密类型[U(128位加密)、I(40位加密)、N(没加密)]。

这是“血统最纯正”的UA。其他的浏览器(例如IE、Safari、Chrome等)都是以它为模板扩展出来的,比如下面这些UA:

IE

Mozilla/5.0(Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0)like Gecko

Safari

Mozilla/5.0(Macintosh; U; PPC Mac OS X; en)AppleWebKit/124(KHTML,like Gecko)Safari/125.1

Chrome

Mozilla/5.0(Windows; U; Windows NT 5.1; en-US)AppleWebKit/525.13(KHTML,like Gecko)Chrome/0.2.149.29 Safari/525.13

这些浏览器的标识中都有 Mozilla,读者可能会疑惑,这几个浏览器名气都比Netscape大,为什么要这样标记呢?因为那时Netscape已经发展了18年,而IE才发展了1年,当然要向Netscape看齐了。

Netscape支持网页框架,就给自己贴上Mozilla的标签,表示自己有这个能力。于是服务器给Netscape浏览器下发带框架的页面,这些网页在Netscape上表现得很好。虽然IE也支持框架,可大家都不识别,服务器给它下发的自然都是没框架的页面。于是IE摇身一变,也贴个Mozilla标签,让大家都给它发带框架的页面。

IE 就这样逐渐占领了 Netscape 的市场。Safari、Chrome 也紧随其后,贴上了Mozilla的标签,于是Mozilla成了浏览器界的UA的标配。

“KHTML,like Gecko”又是什么呢?

Gecko属于渲染引擎,用于对网页信息进行排版显示。因为Netscape不满自己的市场被挤占,让Firefox搭载了Gecko,使其拥有更强的能力,网页开发者又开始追捧Gecko。其他浏览器为了能享受相同的待遇,纷纷声称自己“like Gecko”,这里的like是“像”的意思,不是“喜欢”的意思。

KHTML是Linux上的渲染引擎。Gecko大火,KHTML只有迎合大趋势才不至于被冷落,但自己本来的标识不能丢,所以表明身份是 KHTML,只是带上了 like Gecko的标识。

看了上面的故事,再来看看快被大家忘掉的Opera。它本是一个坚持自己立场的浏览器,可它的UA还是从Opera/8.0(Windows NT 5.1; U; en)变成了Mozilla/5.0(Windows NT 5.1; U; en; rv:1.8.1)Gecko/20061208 Firefox/2.0.0 Opera 9.50,它的UA在诉说怎样的故事,读者可以自行推理。

最后,微软的Edge浏览器的UA拷贝如下:

Mozilla/5.0(Windows NT 10.0; Win64; x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586

至此,UA不再是冰冷的标识,而是一个个鲜活的故事。