浏览器 User-Agent 详解
Http Header 之 User-Agent
User Agent 中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。
通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的 UA 来判断的。UA可以进行伪装。
字段简介
浏览器的UA字串的标准格式:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识版本信息
。
示例:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
各个浏览器有所不同。字串说明:
浏览器标识。出于兼容及推广等目的,很多浏览器的标识相同,因此浏览器标识并不能说明浏览器的真实版本,真实版本信息在 UA 字串尾部可以找到。
Mozilla/5.0
:表示浏览器使用的是Mozilla浏览器引擎,版本号为5.0。Mozilla/5.0
是网景公司浏览器的标识,由于互联网初期浏览器市场主要被网景公司占领,很多服务器被设置成仅响应含有标志为Mozilla的浏览器的请求,因此,新款的浏览器为了打入市场,不得不加上这个字段。
操作系统标识。
(Windows NT 10.0; Win64; x64)
:表示操作系统为Windows 10,使用的是64位架构。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38FreeBSD
X11; FreeBSD (version no.) i386
X11; FreeBSD (version no.) AMD64
Linux
X11; Linux ppc
X11; Linux ppc64
X11; Linux i686
X11; Linux x86_64
Mac
Macintosh; PPC Mac OS X
Macintosh; Intel Mac OS X
Solaris
X11; SunOS i86pc
X11; SunOS sun4u
Windows:
Windows NT 10.0 对应操作系统windows 10
Windows NT 6.2 对应操作系统 windows 8
Windows NT 6.1 对应操作系统 windows 7
Windows NT 6.0 对应操作系统 windows vista
Windows NT 5.2 对应操作系统 windows 2003
Windows NT 5.1 对应操作系统 windows xp
Windows NT 5.0 对应操作系统 windows 2000
Windows ME
Windows 98
IOS
iPhone_OS 4_3_3 iPhone
iPod_OS 4_3_3 iPod
OS 4_3_3 iPad
Android
Android 2.3.7
WebOs
hwOS/3.0.0
SymbianOS
SymbianOS/9.4
Windows Phone OS
Windows Phone OS 7.5
BlackBerry
BlackBerry加密等级标识
1
2
3N: 表示无安全加密
I: 表示弱安全加密
U: 表示强安全加密浏览器语言。在首选项 > 常规 > 语言中指定的语言。
AppleWebKit/537.36
:表示浏览器使用的是Webkit引擎,版本号为537.36。
渲染引擎。显示浏览器使用的主流渲染引擎有:Gecko、WebKit、KHTML、Presto、Trident、Tasman等,格式为:渲染引擎/版本信息。
(KHTML, like Gecko)
:表示浏览器使用的是KHTML渲染引擎,类似于Gecko。
版本信息。显示浏览器的真实版本信息,格式为:浏览器/版本信息。
Chrome/91.0.4472.124
:表示浏览器为Chrome,版本号为91.0.4472.124。Safari/537.36
:表示浏览器为Safari,版本号为537.36。
3.浏览器识别
IE浏览器(以IE 9.0 为例)
- PC端:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0
- 移动设备:
Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; HTC; Titan)
由于遨游、世界之窗、360浏览器、腾讯浏览器以及搜狗浏览器、Avant、Green Browser均采用IE的内核,因此IE浏览器判断的标准是”MSIE“字段,MSIE字段后面的数字为版本号,但同时还需要判断不包含”Maxthon“、”The world“、”360SE“、”TencentTraveler“、”SE“、”Avant“等字段(Green Browser没有明显标识)。移动设备还需要判断IEMobile+版本号。
- PC端:
360浏览器
- PC端:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; 360SE)
- 移动设备:暂无
360浏览器的判断标准是”360SE”字段,没有版本表示。
- PC端:
搜狗浏览器
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)
- 移动设备:暂无
搜狗浏览器的判断标准是”SE“、”MetaSr“字段,版本号为SE后面的数字。
Chrome
- PC端:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10\_7\_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
- 移动设备:
Mozilla/5.0 (Linux; U; Android 2.2.1; zh-cn; HTC\_Wildfire\_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
PC端chrome浏览器的判断标准是chrome字段,chrome后面的数字为版本号;移动端的chrome浏览器判断”android“、”linux“、”mobile safari“等字段,version后面的数字为版本号。
- PC端:
Safari
- PC端:
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10\_6\_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50
- 移动设备:
Mozilla/5.0 (iPhone; U; CPU iPhone OS 4\_3\_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5
由于 Chrome 及 Nokia’s Series 60 browser也使用WebKit内核,因此Safari浏览器的判断必须是:包含safari字段,同时不包含chrome等信息,确定 后”version/“后面的数字即为版本号。在以上条件下包含Mobile字段的即为移动设备上的Safari浏览器。
- PC端:
腾讯浏览器
- PC端:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler 4.0; .NET CLR 2.0.50727)
- 移动设备:
MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
腾讯浏览器的判断标准是”TencentTraveler“或者”QQBrowser“,TencentTraveler或QQBrowser后面的数字为版本号。
- PC端:
Firefox
- PC端:
Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
- 移动设备:
Mozilla/5.0 (Androdi; Linux armv7l; rv:5.0) Gecko/ Firefox/5.0 fennec/5.0
Firefox的判断标准是Firefox字段,firefox后面的数字为版本号。
- PC端:
The world
- PC端:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; The World)
- 移动设备:暂无
The world浏览器的判断标准是”The world“字段,没有标示版本号。需要注意的是:The world 2.x版本的User-Agent中没有”The world“的字段。
- PC端:
遨游
- PC端:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)
- 移动设备:暂无
遨游浏览器的判断标准是”Maxthon“,Maxthon后面的数字为版本号。
- PC端:
Opera
- PC端:
Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11
- 移动设备:
Opera/9.80 (Android 2.3.4; Linux; Opera mobi/adr-1107051709; U; zh-cn) Presto/2.8.149 Version/11.10
opera浏览器的判断标准是opera字段,opera字段后面的数字为版本号。
- PC端:
UC浏览器
- UC Web 有多种模式浏览方式,对应的 User-Agent 为:
- UC无:
UCWEB7.0.2.37/28/999
- UC标准:
NOKIA5700/ UCWEB7.0.2.37/28/999
- UCOpenwave:
Openwave/ UCWEB7.0.2.37/28/999
- UC Opera
Mozilla/4.0 (compatible; MSIE 6.0; ) Opera/UCWEB7.0.2.37/28/999
UC 浏览器的判断标准是”UCWEB“字段,UCWEB后面的数字为版本号。
一个有趣的小故事
很久很久以前有一个浏览器名字叫 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”的,开始模仿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”那样以看到更漂亮的网页,并标称自己为 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使用了WebKit渲染引擎,想装成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