-
Notifications
You must be signed in to change notification settings - Fork 4
/
588.txt
499 lines (367 loc) · 24.3 KB
/
588.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
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
* 仕様書
[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>
- [33] [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>
- [119] [CITE@en-US[Fetch Standard]] ([TIME[2016-03-31 16:33:52 +09:00]] 版) <https://fetch.spec.whatwg.org/#default-user-agent-value>
- [29] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-03 15:54:50 +09:00]] 版) <https://html.spec.whatwg.org/#navigatorid>
]REFS]
* 意味
[106] [CODE(HTTP)@en[[[User-Agent:]]]] や [CODE(JS)@en[[[navigator.userAgent]]]]
は、次のような目的で用いられています。
[FIG(list)[
- [107] [[利用者エージェント]]に基づく[[内容折衝]]
-- [112] [[利用者エージェント]]の実装する機能や不具合の状況による分岐
-- [111] [[ダウンロード]]ページ等における[[ダウンロード]]対象や説明文の差し替え
-- [114] 有害な[[利用者エージェント]]からのアクセスの遮断
- [113] [[クライアント]]のアクセス環境の調査
-- [108] [[利用者]]の環境に関する統計的情報の取得 (いわゆる[[アクセス解析]])
-- [110] 正しくない挙動や[[サーバー]]に害を与える[[利用者エージェント]]の特定
-- [109] [[Webアプリケーション]]の[[お問い合わせ]]フォーム等における[[利用者]]の環境の情報の取得
]FIG]
[120] [DFN[[RUBYB[既定[CODE(HTTP)@en[User-Agent]]値]@en[default `[CODE[User-Agent]]` value]]]]は、
[CODE(HTTP)@en[User-Agent:]] [[ヘッダー]]に使う[[利用者エージェント]]定義の値です
[SRC[>>119]]。
この値は [[HTTP-network-or-cache fetch]] で [CODE(HTTP)@en[User-Agent:]]
[[ヘッダー]]に設定されるほか、 [CODE(JS)@en[navigator.userAgent]] でも使われます。
* HTTP
[46] [[HTTP]] では [CODE[User-Agent:]] [[ヘッダー]]の値として[[利用者エージェントの識別]]情報を記述できます。
;; [CODE[User-Agent:]] 参照。
* JavaScript
[51] [[利用者エージェント]]は、
[DFN[[RUBYB[navigator互換性モード]@en[navigator compatibility mode]]]]を持ちます。
[[Chrome]]、[[Gecko]]、[[WebKit]] のいずれかです。 [SRC[>>29]]
;; [52] 本来いずれか1つに統一するべきところですが、
[[Web互換性]]を保ちつつ統一する方法が見出されず、やむを得ず3種類のまま[[標準化]]されました。
[35] [CODE(DOMi)@en[Navigator]] [[オブジェクト]]には次のメンバー
(特記がない限り[[IDL属性]]) があります。
これらは[[仕様書]]上は [DFN[[CODE(DOMi)@en[NavigatorID]]]] [[インターフェイス]]
([CODE(xattr IDL)@en[NoInterfaceObject]]) と呼ばれています。 [SRC[>>29]]
[FIG(table)[
:name: メンバー名
:window: [[文書環境]]
:worker: [[ワーカー環境]]
:Chrome: [[navigator互換性モード]] = [[Chrome]]
:WebKit: [[navigator互換性モード]] = [[WebKit]]
:Gecko: [[navigator互換性モード]] = [[Gecko]]
:name: [DFN[[CODE(DOMa)@en[appCodeName]]]]
:window: ○
:worker: ○
:Chrome: [CODE[Mozilla]]
:Gecko: [CODE[Mozilla]]
:WebKit: [CODE[Mozilla]]
:name: [DFN[[CODE(DOMa)@en[appName]]]]
:window: ○
:worker: ○
:Chrome: [CODE[Netscape]]
:Gecko: [CODE[Netscape]]
:WebKit: [CODE[Netscape]]
:name: [DFN[[CODE(DOMa)@en[appVersion]]]]
:window: ○
:worker: ○
:Chrome: [CODE[4.0]] または[[ブラウザー]]の版の[[文字列]]
:Gecko: [CODE[4.0]] または[[ブラウザー]]の版の[[文字列]]
:WebKit: [CODE[4.0]] または[[ブラウザー]]の版の[[文字列]]
:name: [DFN[[CODE(DOMa)@en[platform][navigator.platform]]]]
:window: ○
:worker: ○
:Chrome: [[空文字列]]または[[プラットフォーム][プラットフォーム (Web)]]名の[[文字列]]
:Gecko: [[空文字列]]または[[プラットフォーム][プラットフォーム (Web)]]名の[[文字列]]
:WebKit: [[空文字列]]または[[プラットフォーム][プラットフォーム (Web)]]名の[[文字列]]
:name: [DFN[[CODE(DOMa)@en[product][navigator.product]]]]
:window: ○
:worker: ○
:Chrome: [CODE[Gecko]]
:Gecko: [CODE[Gecko]]
:WebKit: [CODE[Gecko]]
:name: [DFN[[CODE(DOMa)@en[productSub]]]]
:window: ○
:worker: ×
:Chrome: [CODE[20030107]]
:Gecko: [CODE[20100101]]
:WebKit: [CODE[20030107]]
:name: [DFN[[CODE(DOMa)@en[userAgent][navigator.userAgent]]]]
:window: ○
:worker: ○
:Chrome: [[既定[CODE(HTTP)@en[User-Agent]]値]]
:Gecko: [[既定[CODE(HTTP)@en[User-Agent]]値]]
:WebKit: [[既定[CODE(HTTP)@en[User-Agent]]値]]
:name: [DFN[[CODE(DOMa)@en[vendor]]]]
:window: ○
:worker: ×
:Chrome: [CODE[Google Inc.]]
:Gecko: [[空文字列]]
:WebKit: [CODE[Apple Computer, Inc.]]
:name: [DFN[[CODE(DOMa)@en[vendorSub]]]]
:window: ○
:worker: ×
:Chrome: [[空文字列]]
:Gecko: [[空文字列]]
:WebKit: [[空文字列]]
:name: [DFN[[CODE(DOMa)@en[oscpu]]]]
:window: ○
:worker: ×
:Chrome: なし
:WebKit: なし
:Gecko: [[空文字列]]または[[プラットフォーム]]を表す[[文字列]]
:name: [DFN[[CODE(DOMm)@en[taintEnabled]]]]
:window: ○
:worker: ×
:Gecko: [[偽]]を返す[[メソッド]]
:WebKit: なし
:Chrome: なし
]FIG]
* 利用者エージェント値の命名規則
- [20] Mozilla での UA 名の指針
-- [32] '''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>
;; [26] [CODE[User-Agent:]] も参照。
** アプリ内ブラウザーの利用者エージェント名
[126] [[アプリ内ブラウザー]]を参照。
* User-Agent: 欄詐称問題
[36] HTTP 要求頭欄の User-Agent: では、伝統的に [[Mozilla]] を名乗る人達が多いです。
- [37] User-Agent: Mozilla/4.0 (compatible; ・・・)
のように [CODE[compatible]] と名乗るのはまだ良い方で、 Mozilla と区別出来ない
UA を送りつける UA もいます。
[28] >>36 最近でも使われてるブラウザーでいうと、 [[BBB]] が [CODE[Mozilla/2]]
を名乗るけど [CODE[compatible]] を含めないとか。
[38] かつて Mozilla が市場独占に近い状態だった (ほんとか?) 頃に、
UA: を見て Mozilla と非 Mozilla で処理を分けていたサーバーが少なくなかったんで、
非 Mozilla UA がこれに対抗するため Mozilla を名乗ったという伝説が
ありますが、真偽は定かじゃありません。知ってたら教えて下さい。
[39] ReGet とか IRIA とか wget とかの download 専門家達は一部サーバー管理者から
迫害されているので、 UA: を見て締め出されていて、それに対抗するために
詐称機能 (というか、 UA: を自由に設定できる機能) があります。
昔は既定値が Mozilla とかだったりすることも少なくなかったみたいですが、
最近はちゃんと自分の名前を名乗ってるっぽいです。
- [41] ちなみに、 [[WinIE]]1 はちゃんと ''Microsoft Internet Explorer'' と名乗っていました。 Mozilla compatible と詐称するようになったのは 2 からです。
- [42] ''Mac関連ネタを凄い勢いで翻訳スレ2'' <http://pc.2ch.net/test/read.cgi/mac/1035938842/347-351> [[Safari]] の [[Gecko]] 詐称についての開発者の釈明 (の和訳) あり
** Q&A コーナー
[1] ブラウザレポートに出てくる
Netscape (compatible)
ってのは、NN互換の他のブラウザってことなのかな。
それとも、 NNそのものなわけ?
で結局、これはIE5-6,NN6並に
CSSを認識してくれるブラウザなのかと問いたい。
[2] >>1 どんな report なのかわかりませんが、その元になっている
[[HTTP]] の [[User-Agent:欄]]の情報は、みんなそろって [[Mozilla]]
を名乗るという悪しき伝統がありまして、既知の情報から推定した
細かい条件をチェックして、ほんとに Mozilla/[[Netscape]]
なのか、それとも IE なのか、はたまた(以下略)を推測するんです。
(IE とかは、いちおう compatible という文字を入れてるので
区別できるんですが、中には本家 Mozilla と全く区別がつかない
奴もいるとか。)
[3] というわけで、 compatible を名乗るんだから互換性が
あるとみなして送りつけてやったらどうですか? としか言いようが
ありませぬ。
たとえば「Mozilla/2.0 (compatible; Ask Jeeves)」
だったら自称 Mozilla (Netscape Navigator) 2.0 互換ですので、
(もし相手にするのなら) それ相応の応答 (新機能! の[[フレーム]]
とか、[[プラグイン]] (たしか [[Windoze]] 版のみ実装。)とか、
[[Java]] とか [[JavaScript]] (旧称 [[LiveScript]]) とかを使ったもの。)
を返すのがいいのではないでしょうか:-)
[4] >>2-3 てことは、
「おかしなブラウザ使ってるオタク野郎」と見なしていいでしょうか。
もしくは、おかしなブラウザしか使えないあほ組織のPCとか。
[5] >>4 [[ブラウザ]]じゃない、[[検索円陣]]とかの [[UA]] の可能性もあります。
** その他メモ
- [40] [WEAK[2002-12-27 09:29]] ''[[Mozilla]]'': [[User-Agent:欄]]から詐称部門を引越しして、元の内容は Q&A コーナーとしますた。今後 UA 詐称問題は (Mozilla に限らず) こちらで扱いましょう。
[43]
[CITE@ja[CaminoのUA文字列 - Torisugari の日記]] ([CODE[2007-06-22 02:44:08 +09:00]] 版) <http://slashdot.jp/~Torisugari/journal/407122?from=rss>
([[名無しさん]] [WEAK[2007-06-24 07:21:01 +00:00]])
[44]
[CITE@ja[ウィルスバスター(トレンドマイクロ)からのアクセス - えむもじら]] ([CODE[2007-08-05 18:01:24 +09:00]] 版) <http://level.s69.xrea.com/mozilla/index.cgi?id=20070805_VirusBuster>
([[名無しさん]] [WEAK[2007-08-06 12:07:49 +00:00]])
[45]
[CITE@en[Browser Sniffing History in the Chrome UA String]] ([[Henri Sivonen]] 著, [TIME[2008-09-09 00:47:11 +09:00]] 版) <http://hsivonen.iki.fi/chrome-ua/>
([[名無しさん]])
[19] 文字列に [CODE[[[iPhone]]]] が入っているかどうかで、[[スマートフォン版]]かどうかを切り替えるサイトが存在します。
* UA sniffing
[47] [[Webブラウザー]]には不具合や制約があって、
[[著者]]が[[スクリプト]]から[[Webブラウザー]]を判定して対処せざるを得ないことがあります
[SRC[>>29]]。
[48] そのような判定は、既知の現在の版を判定するものとする[SHOULD[べきです]]。
将来の版や未知の版は、[[仕様書]]に[[適合]]するものと仮定する[SHOULD[べきです]]。
[SRC[>>29]]
[49] この情報は、 [[fingerprinting vector]] です。
[[利用者エージェント]]は、できるだけ少ない情報にとどめることが[RUBYB[強く望まれています]@en[strongly urged]]。
[SRC[>>29]]
[FIG(short list)[ [18] [[UA sniffing]] 手法
- [CODE(HTTP)@en[User-Agent]] 検査
- [CODE(DOMi)@en[Navigator]] 検査
- [[CSS hack]]
- [[条件付注釈]]
]FIG]
[50] 実際のところ、規格違反の文字列を使う例や詐称により実際の情報が注釈内に押し込まれている例が多すぎることから、仕様に基づいた parser を作って前半(名前)・後半(版)を見て処理を云々というのは現実的でなく、そうした処理をする多くの実装 ([[CGI]] script やサーバーなど。) は[[正規表現]]を使って処理しています。確かにこれが最も現実的な方法でしょう。
[57] ''ブラウザ判別では"Gecko"を調べてください - Web標準普及プロジェクト'' <http://www.mozilla.gr.jp/standards/webtips1005.html>
[58] [[RFC2936]] HTTP MIME 型取扱器判別
-*-*-
[34] 機能の有無の判定には、 [[UA sniffing]] を使うべきではありません。
近年導入されたほとんどの機能には、それぞれの機能の判定方法が用意されています。
特定の [[Webブラウザー]]であるかどうかではなく、特定の機能が利用可能かどうかを判定するべきです。
* 利用者エージェント名の一覧
[20] [[HTTP]] で [[User-Agent:欄]]に実際に使われている名前についての
情報源:
- [21] <http://www.dais.is.tohoku.ac.jp/logs/agentgripes.html>
- [22] <IW:YukiWiki:UserAgent>
- [23] <http://inhand.jp/index.cgi?action=viewnews&id=99>
- [5] [[WikiUserAgentList]]
- [6] '':: 偽られたUA ::'' <http://pc3.2ch.net/test/read.cgi/hp/1015925179/>
- [7] ''あなたの User-Agent 教えてください'' <http://pc.2ch.net/test/read.cgi/php/990173593/>
- [8] ''User-Agent統計'' <http://www2.startshop.co.jp/~68user/cgi-bin/view-browser.cgi>
- [9] ''偽装UAを熱烈に募集し、まとめてみたページ''' <http://members.tripod.co.jp/g_ua/>'''''
- [10] [[NN]] 1.22 = [CODE[Mozilla/1.22 (Windows; I; 32bit)]]
[11] HTTP じゃないですけど、最近の [[Mew]] はこんなのをつけるらしいです。
[PRE[
User-Agent: Mew/3.1.53 Emacs/21.2.93 (i386-mingw-nt4.0.1381) Mule/5.0
=?iso-2022-jp?B?KBskQjgtTFobKEIp?= Meadow/1.99 Alpha4
=?iso-2022-jp?B?KBskQkU0GyhCKQ==?=
]PRE]
設定次第, かもしれません。 Kazu さんのは従来通り [[X-Mailer:]] だし。
で、この例のように [[encoded-word]] を生で使っていると、例えば [CODE(ABNF)["="]]
は [[tspecials]] ですから、 [[HTTP]] や [[usefor-article]]
の構文に照らして不当です。
もっとも、現時点で[[電子メイル]]における [CODE[User-Agent:]]
欄の定義は存在しない以上, 非構造欄だとか, そうでなくても [CODE(ABNF)[tspecials]]
も使えるんだとか, そういう主張はできなくもないですが。
- [12] ''Comments on AgentGripes'' <http://web.archive.org/web/20011019120517/http://www.dais.is.tohoku.ac.jp/logs/comment.html#reqheaader>
- [13] UA じゃなくて [[Server:]] の方ですが、 [[Zope]] の例: [CODE(HTTP)[Server: Zope/(Zope 2.5.1 (source release, python 2.1, linux2), python 2.1.3, freebsd4) ZServer/1.1b1]]。面白い例でしょ? 文法違反だけど。
- [14] なんと、 <IW:Google:"UserAgent 一覧"> (日本語) で[WEAK[<IW:YukiWiki:UserAgent> を6位に抑えて]] 3位!
- [31] [TIME[2003-08-29 11:48:17 +00:00]] ''>>14'': ほんとだ! すごいじゃん。内容ないのに(w
- [16] ''WWW Agents List'' <http://www.kmc.gr.jp/~ranran/tips/www-agents.html>
- [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>
* プライバシー
[17] [[利用者エージェントの識別]]情報は、 [[fingerprinting vector]] です。
* セキュリティー
[91] [CODE(HTTP)@en[[[User-Agent:]]]] の値は [[fingerprinting]]
に使われることがあり [SRC[>>83]]、注意が必要です。
[15] Security や privacy を理由に、 UA: 欄や
[[Server]]が送られることに懸念を示す人がいます。
確かに個々の場合において問題が発生する可能性はあるでしょう。
(例えば UA: 欄に特定の文字列が入っていたら攻撃する人がいるとか。)
しかし一般論として、例えばこれらの情報を送らないことで安全性が向上するということはありません。
[16] >>15 わざわざソースから削って出力させなくするような人もいるらしいですが、安全性の向上を狙っているならはっきり言って無駄なことです。
[30] [[RFC 7231]] はソフトウェアの情報を示すことによって既知の[[セキュリティーホール]]を攻撃される危険性があるとしつつも、
実際にはソフトウェアの版に関わらず攻撃される虞があることをも指摘しています
[SRC[>>33]]。
* 歴史
[27] [CODE[User-Agent:]], [CODE[Navigator]] の歴史の項も参照。
[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>
[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>
[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>
[FIG(quote)[
[FIGCAPTION[
[99] [CITE[HbbTV 2.0 Specification (2015-02-02)]]
([TIME[2015-02-10 01:01:20 +09:00]] 版)
<http://www.hbbtv.org/pages/about_hbbtv/HbbTV_specification_2_0.pdf#page=60>
]FIGCAPTION]
> The User-Agent header shall include:
> HbbTV/1.3.1 (<capabilities>; [<vendorName>]; [<modelName>]; [<softwareVersion>];
> [<hardwareVersion>]; <reserved>)
]FIG]
[FIG(quote)[
[FIGCAPTION[
[104] [CITE@en[Pipelight - ArchWiki]]
([TIME[2015-07-11 13:26:59 +09:00]] 版)
<https://wiki.archlinux.org/index.php/Pipelight>
]FIGCAPTION]
> If you are here because you want to watch BlinkBox (UK) you need to install google-chromeAUR (Requires: version 42+) and use the User-Agent Switcher for Chrome extension with a Mac UA string 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'. Windows UA strings will result in WP209 playback errors due to HDCP.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[115] [CITE@en[HTTPS and Keep-Alive Connections - IEInternals - Site Home - MSDN Blogs]]
([TIME[2015-08-16 15:36:27 +09:00]] 版)
<http://blogs.msdn.com/b/ieinternals/archive/2011/03/26/https-and-connection-close-is-your-apache-modssl-server-configuration-set-to-slow.aspx>
]FIGCAPTION]
> In the expression above, any IE version that starts with “1” will be treated as outdated and served connection slowly without Keep-Alive. Internet Explorer 1.0 didn’t even support SSL at all (SSL was added in 2.0), but worse, this loosely-written regular expression will also match future MSIE 10.0, MSIE 11.0, MSIE 12.0 (etc) user-agent strings. Hence, Apache hosts will one day find that the newest browsers are forced into the “slow” lane!
]FIG]
[FIG(quote)[
[FIGCAPTION[
[116] [CITE[iPhoneのアプリ内WebViewのUAまとめ(2015/12/15時点)とjsでの判定方法 - Qiita]]
([TIME[2016-03-07 00:18:01 +09:00]] 版)
<https://qiita.com/nabettu/items/e481412c4ca0f50e7fb5>
]FIGCAPTION]
> FacebookアプリWebView
> Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13C75 '''['''FBAN/FBIOS;FBAV/45.0.0.45.96;FBBV/18289579;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/9.2;FBSS/2; FBCR/ドコモ;FBID/phone;FBLC/ja_JP;FBOP/5''']'''
]FIG]
[117] [CITE@en[Introduce default `User-Agent` value for usage by HTML · whatwg/fetch@d9a8ac1]]
([TIME[2016-03-09 15:25:13 +09:00]] 版)
<https://github.com/whatwg/fetch/commit/d9a8ac12a33ab6a35826179dc3e8d88d4e06c66d>
[118] [CITE@en[Let Fetch define the default User-Agent value · whatwg/html@026aa96]]
([TIME[2016-03-09 15:25:41 +09:00]] 版)
<https://github.com/whatwg/html/commit/026aa966c944ce0f1180bc906646c00a3f7ebcbb>
[FIG(quote)[
[FIGCAPTION[
[121] [CITE[Acceptヘッダで判別するサーバーサイドのSVGフォールバック - 聴く耳を持たない(片方しか)]]
([TIME[2016-02-24 18:25:24 +09:00]] 版)
<http://d.hatena.ne.jp/rikuo/20151017>
]FIGCAPTION]
> 古いAndroid向けのブラウザアプリ、フィーチャーフォン向けのjig browser、さらにはNew 3DSにもUserAgent文字列を変更できる機能がついています。
]FIG]
[FIG(quote)[
[FIGCAPTION[
[122] [CITE@en[Define that "TV" should appear as token for UA-string when presentation API is used to render on TV · Issue #303 · w3c/presentation-api]]
( ([TIME[2016-05-27 10:58:00 +09:00]]))
<https://github.com/w3c/presentation-api/issues/303>
]FIGCAPTION]
> Mozilla's experience is that the few websites that today target TVs require that a "TV" token is included in the UA string in order for the website to render an appropriate TV UI.
> I think this is something that's worth getting into a specification as quickly as we can, in order to prevent the mess that we currently have on mobile. The problem on mobile was that originally there was no token to indicate "mobile device", which lead to websites solving the problem with perpetually out-of-date databases, harder for new players to enter the space, etc.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[125] [CITE@en[Webmention]]
([TIME[2017-01-11 04:06:01 +09:00]])
<https://webmention.net/draft/#h-sender-discovers-receiver-webmention-endpoint>
]FIGCAPTION]
> Senders may customize the HTTP User Agent '''['''RFC7231''']''' used when fetching the target URL in order to indicate to the recipient that this request is made as part of Webmention discovery. In this case, it is recommended to include the string "Webmention" in the User Agent. This provides people with a pointer to find out why the discovery request was made.
]FIG]
[FIG(quote)[
[FIGCAPTION[
[128] [CITE@en[GitHub API v3 | GitHub Developer Guide]]
([TIME[2017-06-10 05:53:45 +09:00]])
<https://developer.github.com/v3/#user-agent-required>
]FIGCAPTION]
> All API requests MUST include a valid User-Agent header. Requests with no User-Agent header will be rejected. We request that you use your GitHub username, or the name of your application, for the User-Agent header value.
]FIG]