/
276.txt
406 lines (297 loc) · 24 KB
/
276.txt
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
[59] [[HTTP]]、[[電子メール]]、[[ネットニュース]]、[[RTSP]]、[[SIP]] その他の[[プロトコル]]で使われている
[DFN[[CODE(HTTP)[User-Agent:]] 欄]]は、
使用されている[[利用者エージェント]]を表します。
[61] '''誘導''':
[Q[利用者エージェント]]一般については
[Q[[[利用者エージェント]]]]および [Q[[[User Agent]]]]
をご覧下さい。
[[CGI]] での利用に関しては [Q[[CODE(CGI)[[[HTTP_USER_AGENT]]]]]]
の項をご覧下さい。 [[HTTP]] その他に関してはここをご覧下さい。
その他関連プロトコル要素に関しては >>62 をご覧下さい。
* 仕様書
[REFS[
- [83] '''[CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-5.5.3>'''
- [29] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-08-07 05:54:02 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-9.6>
]REFS]
* 意味
[84] [CODE(HTTP)@en[[[User-Agent:]]]] は、[[要求]]を元々作成した[[利用者エージェント]]についての情報を含めるものです。
これはしばしば[[鯖]]が[[相互運用性]]の問題を究明する補助となったり、
特定の[[利用者エージェント]]の制限を回避したり、
利用されている[[ブラウザー]]や[[OS]]の分析に使ったりするものです。 [SRC[>>83]]
* 文脈
[85] [[利用者エージェント]]は、特に設定がない限り、各[[要求]]に
[CODE(HTTP)@en[[[User-Agent:]]]] を含める[['''べきです''']] [SRC[>>83]]。
* 構文
[86] 1つ以上の [CODE(ABNF)@en[[[product]]]] または [CODE(ABNF)@en[[[comment]]]]
を、 [[RWS]] 区切りで並べたものとされています。ただし、最初の1つは
[CODE(ABNF)@en[[[product]]]] でなければなりません。 [SRC[>>83]]
[FIG(railroad)[
= [CODE(ABNF)@en[[[product]]]]
= *
== [[RWS]]
== |
=== [CODE(ABNF)@en[[[product]]]]
=== [CODE(ABNF)@en[[[comment]]]]
]FIG]
[88] ここで [CODE(ABNF)@en[[[product]]]] は、[[利用者エージェント]]のソフトウェアと主要な部分製品を識別上の重要なものから順番に並べたもの
[SRC[>>83]] とされています。
[87] 現実にはこの構文は、ヒント程度にしか尊重されていません。 [[HTTP]]
仕様上の[[字句]]では認められていない文字列が使われることもありますし、
[CODE(ABNF)@en[[[product]]]] に複数 [CODE[[[/]]]] が含まれることもあります。
順序も必ずしも重要な順ではありません。実際のソフトウェアの識別に関与しない歴史的な値を設定することも多々あります。
[89] [[送信者]]は、[[生成]]する値を製品の識別に必要な程度に制限する[['''べきです''']]。
[[広告]]その他製品の識別に必要無い情報を[[生成]]しては[['''なりません''']]。
第三者による部分製品からの追加も制限する[['''べきです''']]。 [SRC[>>83]]
[90] 版番号の部分に版情報でないものを含める[['''べきではありません''']]
(つまり、同じ製品の後の版は版番号部分だけが違うべきです)。 [SRC[>>83]]
[92] 他の実装との互換性を示すためにその製品名を含めることは[RUBYB[推奨]@en[encourage]]しません
[SRC[>>83]]。
* プライバシー
[91] [CODE(HTTP)@en[[[User-Agent:]]]] の値は [[fingerprinting]]
に使われることがあり [SRC[>>83]]、注意が必要です。
* 歴史
[FIG(quote)[
[FIGCAPTION[
[82] RFC 1945 (HTTP/1.0) 10.15; RFC 2068 (HTTP/1.1) 14.42; RFC 2616 (HTTP/1.1) 14.43 User-Agent
]FIGCAPTION]
> The User-Agent request-header field contains information about the
user agent originating the request. This is for statistical purposes,
the tracing of protocol violations, and automated recognition of user
agents for the sake of tailoring responses to avoid particular user
agent limitations. [DEL[Although it is not required, user agents should]] [INS[User agents SHOULD]]
include this field with requests. The field can contain multiple product tokens
(Section [DEL[3.7]] [INS[3.8]]) and comments identifying the agent and any subproducts which
form a significant part of the user agent. By convention, the product tokens
are listed in order of their significance for identifying the application.
[DFN[[CODE(HTTP)[User-Agent]] [[要求頭欄]]]]は、要求を作成した[[利用者エージェント]]についての情報を含みます。
これは、統計目的、プロトコル違反の追跡、および特定利用者エージェントの制限を避けるために応答を手直しするための利用者エージェントの自動認識のためのものです。
利用者エージェントは、この欄を要求に含める'''べきです'''。
この欄は、複数の [CODE(ABNF)[[[product]]]] 字句ならびに利用者エージェントおよび利用者エージェントの重要な部分を形成する部分製品を識別する注釈を含めることができます。
慣習的に、 [CODE(ABNF)[product]] 字句は、その応用を識別するのに有意な順に列挙します。
>
- User-Agent = "User-Agent" ":" 1*( product | comment )
> Example:
- User-Agent: CERN-LineMode/2.15 libwww/2.17b3
[DEL[
> Note: Some current proxy applications append their product
information to the list in the User-Agent field. This is not
recommended, since it makes machine interpretation of these
fields ambiguous.
注意: 既存の[[串]]応用の中には [CODE(HTTP)[User-Agent]] 欄の並びに自身の製品情報を付加するものもあります。
これは、この欄の機械的解釈が曖昧になってしまうので、推奨しません。
> Note: Some existing clients fail to restrict themselves to
the product token syntax within the User-Agent field.
注意: 既存のクライアントの中には [CODE(HTTP)[User-Agent]] 欄の product 字句構文に反しているものもあります。
]DEL]
[INS[
注: 修正部はすべて RFC 1945→RFC 2068 での変更点。
]INS]
]FIG]
** USEFOR draft (電子ニュース・メッセージ) での規定に関して
[44] product の中身が [[HTTP]] では [[token]] でしたが、 usefor
では [[value]] になりました。このおかげで、漢字を使った名前とかも入れられます。
- [45] User-Agent-content = product-token *( CFWS product-token )
- [46] User-Agent-header = "User-Agent" ":" SP User-Agent-content *( ";" other-parameter )
- [47] product-token = value [ "/" product-version ]
- [48] product-version = value
- [17] [[ietf-usefor]] の議論をちょっと目を離した隙に、 [CODE(ABNF)[product]] が [CODE(ABNF)[token]] に変わってしまいました。 ([[HTTP]] と同じになった。) だから [SAMP["A User Agent"]] も [SAMP["なんかの利用者エージェント"]] も駄目になりました。 (なんでそうなったのかは、議論を追えてないので分かりませぬ。)
- [18] ''17'': [[電子ニュース]]記事の[[国際化]]を目指した [[usefor-article]] にとって大きな後退です。たとえこのままの仕様で [[RFC]] になってしまっても、 [[UTF-8]] が使える''旧仕様のメッセージを流し続けましょう''。そうすれば son-of-usefor でちゃんとなるかもしれん。
- [26] [WEAK[2002-12-22 21:46]] ''>>10'': [[comment]] の中なら [[encoded-word]] でも OK ですね。
- [27] [CODE(ABNF)[product-version]] に [[quoted-string]] を使った例: [CODE[User-Agent: FooNews/"1.0(Beta1)"]]
- [28] [CODE(ABNF)[encoded-word]] を [CODE(ABNF)[comment]] 中に使った例: [CODE[User-Agent: "Bar@"/1.2 (=?us-ascii?q?Micro=24oft_Windoze_XP?= ; i686)]]
- [31] [WEAK[2002-12-25 18:08]] ''>>17'': まだ関係する記事を全部読んでないんですが、どうも電子メイルに gatewaying する時に [CODE(ABNF)[product]] の部分が UTF-8 だったらどうするのかが問題になって、 [[encoded-word]] にするのは鬱だし、いっそのことやめちまえになったっぽいです。'''ま た e n c o d e d - w o r d か !'''
** Client-Specific Web Services by Using User Agent Attributes
[40] UA: にクライアント情報を一杯詰め込んじまおうという
'''Client-Specific Web Services by Using User Agent Attributes''' <http://www.w3.org/TR/NOTE-agent-attributes> W3C NOTE 12-30-1997。
仕様考えた会社位しか実装例が無いらしい(w)。
- [41] User-Agent: AVE-Front/2.0 (BrowserInfo Screen=640x480x256; InputMethod=REMOCON,KEYBOARD; Page=512K; Product=XXXX/Internet-TV; HTML-Level=3.2; Language=ja.JIS; Category=TV; CPU=SH2; Storage=NO;)
[42] 一応 [[BNF]] とかでちゃんと定義してある。
= Prop_def = "(" "BrowserInfo" Prop_items ")"
= Prop_items = Prop_item | Prop_items Prop_item
= Prop_item = Prop_name "=" Prop_value ";"
= Prop_name = STRING
= Prop_value = STRING
> The upper case and lower case in describing Prop_name and Prop_value
> have to be discriminated.
= Prop_name = "Screen" | "InputMethod" | "Page" | "Product" | "HTML-Level" | "Language" | "Category" | "CPU" | "Storage"
"Screen", "InputMethod", "Page", "Product", "HTML-Level" は強く推奨らしいぞ。
"Screen" の値: width (pixels) "x" height (pixels) "x" colors (colors
は 2, 4, 8, 16, 32, 64, 128, 256, 32K, 64K, 16M のどれか)
"InputMethod" の値: PEN, KEYBOARD, MOUSE, REMOCON, BUTTON, JOG, ...
のどれか(複数可)を、読点区切り。 (例では読点の後に SP が。)
以下説明略。面倒だ:-) 理解する側の実装は (まじめにしよーとすると)
面倒だと思うぞ。値の定義がいい加減だ。
ところで [[HTML]] 1.1 ってなに?
* 例
** RFC 2616 に適合する例
- User-Agent: CERN-LineMode/2.15 libwww/2.17b3
- User-Agent: tin/1.2-PL2
- User-Agent: tin/1.3-950621beta-PL0 (Unix)
- User-Agent: tin/unoff-1.3-BETA-970813 (UNIX) (Linux/2.0.30 (i486))
- User-Agent: tin/pre-1.4-971106 (UNIX) (Linux/2.0.30 (i486))
- User-Agent: Mozilla/4.02b7 (X11; I; en; HP-UX B.10.20 9000/712)
- User-Agent: Microsoft-Internet-News/4.70.1161
- User-Agent: Gnus/5.4.64 XEmacs/20.3beta17 ("Bucharest")
- User-Agent: Pluto/1.05h (RISC-OS/3.1) NewsHound/1.30
- User-Agent: inn/1.7.2
- User-Agent: telnet
- User-Agent: T-gnus/6.14.4 (based on Gnus v5.8.7) (revision 01) REMI/1.14.1 (=?ISO-8859-4?Q?Mushigawa=F2sugi?=) Chao/1.14.1 (=?ISO-8859-4?Q?Rokujiz?= =?ISO-8859-4?Q?=F2?=) APEL/10.2 MULE XEmacs/21.2 (beta33) (Melpomene) (i686-pc-linux)
[[#form:'%text (id => field-body, label => {User-Agent: }, size => 20); (%text(id => name, label => {UA ソフトウェア名}, size => 20);; %text(id => comment, label => {備考}, size => 20);) %submit (label => {追加});':'-[%index;] [CODE(HTTP)[User-Agent: %text (source => field-body);]] %text (source => name, prefix => {(}, suffix => {)});%text (source => comment, prefix => { ※});']]
** USEFOR draft に適合する例
- HTTP に適合するものは、 usefor にも適合します。
- User-Agent: "秀丸エディタ"/3.0 "Microsoft(R) Windows(R) Millenium Edition" (Windows Me)
- [49] User-Agent: "西瓜割"/1.5 Message-pm/1.23
[[#form:'%text (id => field-body, label => {User-Agent: }, size => 20); (%text(id => name, label => {UA ソフトウェア名}, size => 20);; %text(id => comment, label => {備考}, size => 20);) %submit (label => {追加});':'-[%index;] [CODE(HTTP)[User-Agent: %text (source => field-body);]] %text (source => name, prefix => {(}, suffix => {)});%text (source => comment, prefix => { ※});']]
** 間違った例とこれへの対処について
- [1]User-Agent: Mozilla/4.7 [ja]C-{C-UDP; EBM-SONY2}
- [2]User-Agent: DoCoMo/1.0/N503i/c10
- [3]User-Agent: H-Hash@StudyingHTTP.NET
- [4]User-Agent: HttpGet/1.0(Win32; GUI; ix86)
- [5]User-Agent: ネットスケープ 2.0
[[#form:'%text (id => field-body, label => {User-Agent: }, size => 20); (%text(id => name, label => {UA ソフトウェア名}, size => 20);; %text(id => comment, label => {備考}, size => 20);) %submit (label => {追加});':'-[%index;] [CODE(HTTP)[User-Agent: %text (source => field-body);]] %text (source => name, prefix => {(}, suffix => {)});%text (source => comment, prefix => { ※});']]
[34] 間違った例でもそれなりに使われている以上、対応する必要もあるでしょう。
(でも頭が痛いなあ。)
[6] >>1 は、 [ja] 以降の部分で []{}; を使うのを止めるか、全体を
comment にしてしまうべきものでしょう。 usefor 的には {} は
OK なんですが。あるいは全体を quoted-string にするとか。
読む側としては、不正だから無視するのが一番楽。
どうしても読むなら、 http-token の代わりに *<"/" を除く CHAR>
を使うとか。それでも後半が2部分に分かれますが。
[7] >>2 は、 N503i 以降を comment にするか、区切りを "/" じゃなくて "-"
にするとかすべきだったと。読む実装側は・・・悩ましい。
[8] >>3 は、 usefor なら quoted-string にしておくとか。 HTTP では無理だねえ。
(こんなところにメイルアドレスなんて入れるなよ。)
読む側は 1 と同じ対処かな。
[9] >>4 は、 comment の前に SP 入れなさい、って話。 HTTP では必須らしいけど、
usefor 的には無くても OK だねぇ。互換性のために入れた方がいいと
思うけど。読む側は無くても解釈できるのが望ましかろう。
[10] >>5 は、実際、生 [[ISO-2022-JP]] (ならまだ良い。) とか
[[EUC-JP]] とか
[[シフトJIS]] とか入れる人が少なくないらし。御丁寧にも
[[encoded-word]]
使う人とかもいるらしいねえ。 なんにせよ、 http-token 以外の文字を
使う時は、 quoted-string にしましょ。 (但し usefor only.)
古い版の MacIE は、日本語版では「ネットスケープ 2.0」とかほざくらしい。
シフト JIS でね。英語版では 「Mozilla/2.0」だったと思われ。藁。
[35] <http://www.dais.is.tohoku.ac.jp/logs/agentgripes.html> からめぼしい(謎)もの。
(適当に上の方から。)
- [11]User-Agent: A.G.E.N.T. http://masui.net/agent/libwww-perl/5.44
- [12]User-Agent: Acoon Robot v1.50.001 (www.acoon.de)
[13] >>11 URI 生書きいや〜ん。 >>12 構文としては問題ないけど''名前/版''形式きぼんぬ。
- [51] どうせ規格に違反するなら、 >>44 の usefor の改良された方法で [[quoted-string]] を使うようにしていった方が、見よう見まねの実装で正しい値を使うようになるんじゃないかと思います。(甘いかな。) ですから新しい実装は、 >>44 の usefor の形式に合致する値を出力するのが望ましいと考えられます。
- [52] >>51 の考え方からすれば、現実的に表現力が小さいだけで何の役にも立っていない今の HTTP の書式を無理に使うよりは、 >>44 の usefor のより自由な方式に (現状では HTTP RFC と一致しなくても) 切り替えていった方が良いかもしれません。
- [53] >>10 HTTP/1.0 ([[RFC1945]]) では、 [CODE(ABNF)[%x80-FF]] は [[ISO-8859-1]] と解釈しても'''良い'''のであって強制ではありませんから、'''注釈の中なら'''シフト JIS を入れたり日本語 EUC を入れたり Big5 を入れたりしても問題ありませんね。して欲しくないけど。更に注釈外の生書きはもちろん駄目だけど。
- [54] >>53 また、 [[encoded-word]] を使う場合も注釈内なら構いませんが、注釈外はいけませんね。 (HTTP の場合)
- [55] 但し、 >>44- のように電子ニュースの手法を使って勝手に拡張してしまうなら、 [SAMP["=?us-ascii?q?A_Sample_User_Agent?= (ASUA)"/"2.45 =?us-ascii?q?=28Lilly=29?="]] みたいなのもありだと思います。 ([[MIME]] 的には [[quoted-string]] の中に [CODE(ABNF)[encoded-word]] を入れるのはよくないんだけど、 HTTP 的にはあまり気にしない。)
- [56] もちろん、 >>55 の例は例であって、 US-ASCII だけの文字列を [CODE(ABNF)[encoded-word]] にするなんてばかげたことは (普通は) しないで下さい、念のため。
** 色々な実装における値の付け方
- [20] Mozilla での UA 名の指針
-- [14] '''user-agent string'''
--- <http://www.mozilla.org/build/revised-user-agent-strings.html> (原文)
--- <http://jt.mozilla.gr.jp/build/revised-user-agent-strings.html> (和訳)
- [21] ''J-Sky Web/技術資料 ユーザーエージェントについて''
<http://www.dp.j-phone.com/jsky/user.html>
- [22] ''iモード対応HTMLの考え方'' <http://www.nttdocomo.co.jp/mc-user/i/tag/s2.html>
- [23] ''NTT東日本:Lモード'' <http://www.ntt-east.co.jp/Lmode/06_contents/02_tsukuri.html> から入手できる技術条件説明書 <http://www.ntt-east.co.jp/Lmode/06_contents/pdf/cp_gijutsu2_2.exe>
- [24] [[Monazilla]] <http://members.jcom.home.ne.jp/monazilla/document/oyster_subjecttxt.html>
- [25] [[DOLIB]] 1.00 <http://kage.monazilla.org/system_DOLIB100.html>
- [60] [[au]]] ''技術情報'' <http://www.au.kddi.com/ezfactory/tec/spec/4_4.html>
[64]
[CITE[端末属性通知プロトコルの標準提案]] ([TIME[2002-09-05 20:59:22 +09:00]] 版) <http://www.mcf.to/eia/news/0909protocol.html>
* 実際に使われている値の収集
- [19] [[HTTPのUserAgentの一覧]]
- [43] '''Some Gripes on User-Agent'''
<http://www.dais.is.tohoku.ac.jp/logs/agentgripes.html> [[UA]] の実例が一杯。
[63]
[CITE@en[The ELinks Manual]] ([[Petr Baudis, Jonas Fonseca Madsen, Miciah Dashiel Butler Masters]] 著, [CODE[2007-03-18 16:03:15 +09:00]] 版) <http://elinks.or.cz/documentation/manual.html#useragent>
* 利用者エージェント名詐称問題
[36]
⇒[[MozillaとcompatibleなUAとは?]]を参照。
* User-Agent: 欄の値による処理の分岐
[50] 実際のところ、規格違反の文字列を使う例や詐称により実際の情報が注釈内に押し込まれている例が多すぎることから、仕様に基づいた parser を作って前半(名前)・後半(版)を見て処理を云々というのは現実的でなく、そうした処理をする多くの実装 ([[CGI]] script やサーバーなど。) は[[正規表現]]を使って処理しています。確かにこれが最も現実的な方法でしょう。
[57] ''ブラウザ判別では"Gecko"を調べてください - Web標準普及プロジェクト'' <http://www.mozilla.gr.jp/standards/webtips1005.html>
[58] [[RFC2936]] HTTP MIME 型取扱器判別
* セキュリティー
[15] Security や privacy を理由に、 UA: 欄や
[[Server]]が送られることに懸念を示す人がいます。
確かに個々の場合において問題が発生する可能性はあるでしょう。
(例えば UA: 欄に特定の文字列が入っていたら攻撃する人がいるとか。)
しかし一般論として、例えばこれらの情報を送らないことで安全性が向上するということはありません。
[16] >>15 わざわざソースから削って出力させなくするような人もいるらしいですが、安全性の向上を狙っているならはっきり言って無駄なことです。
[30] [[RFC 7231]] はソフトウェアの情報を示すことによって既知の[[セキュリティーホール]]を攻撃される危険性があるとしつつも、
実際にはソフトウェアの版に関わらず攻撃される虞があることをも指摘しています
[SRC[>>29]]。
* 関連
[93] [CODE(HTTP)@en[[[User-Agent:]]]] には、 [[DOM]] [[API]]
[CODE(JS)@en[[[navigator.userAgent]]]] からもアクセスできます。
[62]
[CODE(822)[User-Agent:]] 欄があるプロトコル:
- [[RFC 822]] 系[[電子メイル]]・[[電子ニュース]]
- [[HTTP]]
- [[RTSP]]
- [[SIP]]
[CODE(822)[User-Agent:]] 欄に関係するプロトコル要素:
- [CODE(CGI)[[[HTTP_USER_AGENT]]]] [[メタ変数]] ([[CGI]])
- [CODE(CGI)[[[SIP_USER_AGENT]]]] [[メタ変数]] ([[SIP CGI]])
- [CODE(JS)[[[navigator]]]] 物体 ([[DOM水準0]])
- [CODE(HTTP)[[[Server]]:]] 欄 ([[HTTP]], [[RTSP]], [[SIP]])
* メモ
[65] [CITE[UserAgent - iPhone 3G DevWiki]]
(Referenced: [TIME[2009-08-25T18:40:39+09:00]])
<http://wiki.sohaya.com/index.php/UserAgent>
[66] [CITE[IRC logs: freenode / #whatwg / 20100617]]
([TIME[2010-06-27 14:30:04 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20100617#l-752>
[67] [CITE[IRC logs: freenode / #whatwg / 20100913]]
( ([TIME[2010-09-26 22:31:37 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20100913>
[68] [CITE[Chrome 11 におけるユーザーエージェント文字列の変更 - Google Japan Developer Relations Blog]]
( ([TIME[2011-06-07 20:00:25 +09:00]] 版))
<http://googledevjp.blogspot.com/2011/06/chrome-11.html>
[69] [CITE[Bug 690287 – Tracking bug for UA sniffers failing to handle a two-digit version]]
( ([TIME[2011-10-04 08:13:27 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=690287>
[70] [CITE[Request Headers in the HTTP protocol]]
( ([TIME[2001-11-29 11:01:38 +09:00]] 版))
<http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#user-agent>
[71] [CITE@en[Gecko user agent string reference - MDN]]
( ([TIME[2012-07-06 00:45:55 +09:00]] 版))
<https://developer.mozilla.org/en/Gecko_user_agent_string_reference>
[72] [CITE@en[Chrome for Android User-Agent - Google Chrome Mobile — Google Developers]]
( ([TIME[2012-06-28 19:56:53 +09:00]] 版))
<https://developers.google.com/chrome/mobile/docs/user-agent>
[73] [CITE@en[IE10 のユーザー エージェント文字列が更新されました - IEBlog 日本語 - Site Home - MSDN Blogs]]
( ([TIME[2012-07-17 03:51:15 +09:00]] 版))
<http://blogs.msdn.com/b/ie_ja/archive/2012/07/16/ie10-user-agent-string-update.aspx>
[74] [CITE[OperaのUAは以後ずっとOpera/9.80になります - by edvakf in hatena]]
( ([TIME[2012-07-17 03:56:00 +09:00]] 版))
<http://d.hatena.ne.jp/edvakf/20090527/1243449333>
[75] [CITE@en[Changes in Opera’s user agent string format - Dev.Opera]]
( ([TIME[2012-07-17 03:56:23 +09:00]] 版))
<http://dev.opera.com/articles/view/opera-ua-string-changes/>
[76] [CITE@ja[Google ウェブマスター向け公式ブログ: スマートフォン版 Googlebot-Mobile の導入について]]
( ([TIME[2012-07-18 14:36:02 +09:00]] 版))
<http://googlewebmastercentral-ja.blogspot.jp/2011/12/googlebot-mobile.html>
[77] [CITE@en[draft-karcz-uuas-00 - Unified User-Agent String (UUAS)]]
( ([TIME[2012-04-30 13:21:14 +09:00]] 版))
<http://tools.ietf.org/html/draft-karcz-uuas-00>
[78] [CITE@en-US-x-hixie[HTML Standard]]
( ([TIME[2012-07-26 07:21:45 +09:00]] 版))
<http://www.whatwg.org/specs/web-apps/current-work/#client-identification>
[79] [CITE@en[Chrome for Android User-Agent - Google Chrome Mobile — Google Developers]]
( ([TIME[2012-06-28 19:56:53 +09:00]] 版))
<https://developers.google.com/chrome/mobile/docs/user-agent>
[80] ( ([TIME[2012-11-09 12:46:44 +09:00]] 版))
<http://www.etsi.org/deliver/etsi_ts/102700_102799/102796/01.02.01_60/ts_102796v010201p.pdf>
[81] [CITE@en-US[Gecko user agent string reference - HTTP | MDN]]
( ([TIME[2014-06-16 13:25:45 +09:00]] 版))
<https://developer.mozilla.org/en-US/docs/Web/HTTP/Gecko_user_agent_string_reference>
[94] [CITE@en[Re: History of device independence, User-Agent header?]]
( ([[Sean B. Palmer]] 著, [TIME[2014-07-15 04:42:58 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webhistory/2014Jul/0001.html>
[95] [CITE@en[RFC 3507 - Internet Content Adaptation Protocol (ICAP)]]
( ([TIME[2014-06-08 07:17:07 +09:00]] 版))
<http://tools.ietf.org/html/rfc3507#page-14>
[96] [CITE@en[''''''[''''''whatwg'''''']'''''' Controlling the User-Agent header from script]]
( ([[Anne van Kesteren]] 著, [TIME[2014-10-13 22:53:20 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-whatwg-archive/2014Oct/0151.html>