aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/http/headers/user-agent/index.html
blob: 69041e1eedb12ba0e39d2737af8da4175196f060 (plain)
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
---
title: User-Agent
slug: Web/HTTP/Headers/User-Agent
tags:
  - 参考
  - 头标签
  - 浏览器
  - 用户代理
  - 首部
translation_of: Web/HTTP/Headers/User-Agent
---
<div>{{HTTPSidebar}}</div>

<div></div>

<p><strong>User-Agent</strong> 首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。</p>

<div class="note">
<p>请阅读<a href="/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent">使用用户代理字段进行浏览器检测</a>来了解为什么为不同的浏览器提供不同的页面或者服务通常不是一个好主意。</p>
</div>

<table class="properties">
 <tbody>
  <tr>
   <th scope="row">Header type</th>
   <td>{{Glossary("Request header")}}</td>
  </tr>
  <tr>
   <th scope="row">{{Glossary("Forbidden header name")}}</th>
   <td>no</td>
  </tr>
 </tbody>
</table>

<h2 id="语法">语法</h2>

<pre class="syntaxbox">User-Agent: &lt;product&gt; / &lt;product-version&gt; &lt;comment&gt;</pre>

<p class="syntaxbox"></p>

<p class="syntaxbox">浏览器通常使用的格式为:</p>

<pre class="syntaxbox">User-Agent: Mozilla/&lt;version&gt; (&lt;system-information&gt;) &lt;platform&gt; (&lt;platform-details&gt;) &lt;extensions&gt;</pre>

<h2 id="指令">指令</h2>

<dl>
 <dt>&lt;product&gt;</dt>
 <dd>产品识别码。</dd>
 <dt>&lt;product-version&gt;</dt>
 <dd>产品版本号。</dd>
 <dt>&lt;comment&gt;</dt>
 <dd>零个或多个关于组成产品信息的注释。</dd>
</dl>

<h2 id="Firefox_UA_字符串">Firefox UA 字符串</h2>

<p>查阅 <a href="/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox">Firefox 用户代理字符串参考</a>来获取更多关于基于 Firefox 和 Gecko 渲染引擎的用户代理字符串的细节信息。Firefox 的用户代理字符串自身可以分为四部分:</p>

<p><strong>Mozilla/5.0 (<em>platform</em>; rv:<em>geckoversion</em>) Gecko/<em>geckotrail</em> Firefox/<em>firefoxversion</em></strong></p>

<ul>
 <li><em><strong>Mozilla/5.0 </strong></em>是一个通用标记符号,用来表示与 Mozilla 兼容,这几乎是现代浏览器的标配。</li>
 <li><strong><em>platform</em></strong> 用来说明浏览器所运行的原生系统平台(例如 Windows、Mac、Linux 或 Android),以及是否运行在手机上。搭载 Firefox OS 的手机仅简单地使用了 "Mobile" 这个字符串;因为 web 本身就是平台。注意 <em><strong>platform</strong> </em>可能会包含多个使用 "; " 隔开的标记符号。参见下文获取更多的细节信息及示例。</li>
 <li><strong>rv:<em>geckoversion</em></strong> 表示 Gecko 的发布版本号(例如  "17.0")。在近期发布的版本中,<strong><em>geckoversion</em></strong> 表示的值与 <strong><em>firefoxversion </em></strong>相同。</li>
 <li><strong><em>Gecko/geckotrail</em></strong> 表示该浏览器基于 Gecko 渲染引擎。</li>
 <li>在桌面浏览器中, <em><strong>geckotrail</strong></em>  是固定的字符串 "20100101" 。</li>
 <li><em><strong>Firefox/firefoxversion</strong></em> 表示该浏览器是 Firefox,并且提供了版本号信息(例如  "17.0")。</li>
</ul>

<h3 id="示例">示例</h3>

<pre>Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Mozilla/5.0 (Macintosh; Intel Mac OS X <em>x.y</em>; rv:42.0) Gecko/20100101 Firefox/42.0
</pre>

<h2 id="Chrome_UA_字符串">Chrome UA 字符串</h2>

<p>Chrome (或 Chromium/blink-based engines)用户代理字符串与 Firefox 的格式类似。为了兼容性,它添加了诸如 "KHTML, like Gecko" 和 "Safari" 这样的字符串。</p>

<h3 id="示例_2">示例</h3>

<pre>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36</pre>

<h2 id="Opera_UA_字符串">Opera UA 字符串</h2>

<p>现在,Opera 也是一款基于 blink 引擎的浏览器,这也是为什么它的 UA 看起来(和 Chrome 的)几乎一样的原因,不过,它添加了一个 "<code>OPR/&lt;version&gt;</code>"。</p>

<h3 id="示例_3">示例</h3>

<pre>Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41</pre>

<p>使用 Presto 引擎的、更老的 Opera 浏览器使用:</p>

<pre>Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00
Opera/9.60 (Windows NT 6.0; U; en) Presto/2.1.1</pre>

<h2 id="Safari_UA_字符串">Safari UA 字符串</h2>

<p>在这个示例中,这是 Safari 的移动版本的用户代理字符串。因为其中包含了单词 "Mobile" 。</p>

<h3 id="示例_4">示例</h3>

<pre>Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1</pre>

<h2 id="Internet_Explorer_UA_字符串">Internet Explorer UA 字符串</h2>

<h3 id="示例_5">示例</h3>

<pre>Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0)</pre>

<h2 id="爬虫和机器人的_UA_字符串">爬虫和机器人的 UA 字符串</h2>

<h3 id="示例_6">示例</h3>

<pre>Googlebot/2.1 (+http://www.google.com/bot.html)</pre>

<h2 id="规范">规范</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">规范</th>
   <th scope="col">标题</th>
  </tr>
  <tr>
   <td>
    <p>{{RFC("7231", "User-Agent", "5.5.3")}}</p>

    <p>{{RFC(2616, "User-Agent", "14.43")}}</p>
   </td>
   <td>
    <p>超文本传输协议 (HTTP/1.1): 语义和内容</p>

    <p>超文本传输协议 -- HTTP/1.1</p>
   </td>
  </tr>
 </tbody>
</table>

<h2 id="浏览器兼容性">浏览器兼容性</h2>

<p class="hidden"><span id="result_box" lang="zh-CN"><span>此页面中的兼容性表格由结构化数据生成。</span> <span>如果您想为数据做出贡献,请查看<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data </a>并向我们发送拉取请求。</span></span></p>

<p>{{Compat("http.headers.User-Agent")}}</p>

<h2 id="相关内容">相关内容</h2>

<ul>
 <li><a href="https://hacks.mozilla.org/2013/09/user-agent-detection-history-and-checklist/">User-Agent 探测,历史及检查清单</a></li>
 <li><a href="/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox">Firefox 用户代理字符串参考</a></li>
 <li>
  <p><a href="/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent">使用用户代理字段进行浏览器检测</a></p>
 </li>
</ul>