[59] HTTP、電子メール、ネットニュース、RTSP、SIP その他のプロトコルで使われている
User-Agent:
欄は、
使用されている利用者エージェントを表します。
[61] 誘導:
利用者エージェント
一般については
利用者エージェント
および User Agent
をご覧下さい。
CGI での利用に関しては
の項をご覧下さい。 HTTP その他に関してはここをご覧下さい。
その他関連プロトコル要素に関しては >>62 をご覧下さい。HTTP_USER_AGENT
[84] User-Agent:
は、要求を元々作成した利用者エージェントについての情報を含めるものです。
これはしばしば鯖が相互運用性の問題を究明する補助となったり、
特定の利用者エージェントの制限を回避したり、
利用されているブラウザーやOSの分析に使ったりするものです。 >>83
[86] 1つ以上の product
または comment
を、 RWS 区切りで並べたものとされています。ただし、最初の1つは
product
でなければなりません。 >>83
[88] ここで product
は、利用者エージェントのソフトウェアと主要な部分製品を識別上の重要なものから順番に並べたもの
>>83 とされています。
[87] 現実にはこの構文は、ヒント程度にしか尊重されていません。 HTTP
仕様上の字句では認められていない文字列が使われることもありますし、
product
に複数 /
が含まれることもあります。
順序も必ずしも重要な順ではありません。実際のソフトウェアの識別に関与しない歴史的な値を設定することも多々あります。
[89] 送信者は、生成する値を製品の識別に必要な程度に制限するべきです。 広告その他製品の識別に必要無い情報を生成してはなりません。 第三者による部分製品からの追加も制限するべきです。 >>83
[90] 版番号の部分に版情報でないものを含めるべきではありません (つまり、同じ製品の後の版は版番号部分だけが違うべきです)。 >>83
[92] 他の実装との互換性を示すためにその製品名を含めることは推奨しません >>83。
[33] SSDP >>32 や UPnP >>37 における HTTP ではより細かく構文が決められています。
[68] Discord Developer Portal — Documentation — Reference, , https://discord.com/developers/docs/reference#user-agent
User-Agent: DiscordBot ($url, $versionNumber)Clients may append more information and metadata to the end of this string as they wish.
[85] 利用者エージェントは、特に設定がない限り、各要求に
User-Agent:
を含めるべきです >>83。
[103] サーバーによっては、 User-Agent:
がなかったり、
空だったりすると要求を拒絶することがあるようです。 Web互換性のためには
User-Agent:
ヘッダーを要求に含める必要があります。
[19] 利用者エージェントの識別を参照。
[20] 利用者エージェントの識別を参照。
[91] User-Agent:
の値は fingerprinting
に使われることがあり >>83、注意が必要です。
[21] 利用者エージェントの識別を参照。
[44] product の中身が HTTP では token でしたが、 usefor では value になりました。このおかげで、漢字を使った名前とかも入れられます。
product
が token
に変わってしまいました。 (HTTP と同じになった。) だから "A User Agent" も "なんかの利用者エージェント" も駄目になりました。 (なんでそうなったのかは、議論を追えてないので分かりませぬ。)product-version
に quoted-string を使った例: User-Agent: FooNews/"1.0(Beta1)"
encoded-word
を comment
中に使った例: User-Agent: "Bar@"/1.2 (=?us-ascii?q?Micro=24oft_Windoze_XP?= ; i686)
product
の部分が UTF-8 だったらどうするのかが問題になって、 encoded-word にするのは鬱だし、いっそのことやめちまえになったっぽいです。ま た e n c o d e d - w o r d か ![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)。
The upper case and lower case in describing Prop_name and Prop_value
have to be discriminated.
"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 ってなに?
[14] 利用者エージェントの識別も参照。
[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 からめぼしい(謎)もの。 (適当に上の方から。)
[13] >>11 URI 生書きいや〜ん。 >>12 構文としては問題ないけど名前/版形式きぼんぬ。
%x80-FF
は ISO-8859-1 と解釈しても良いのであって強制ではありませんから、注釈の中ならシフト JIS を入れたり日本語 EUC を入れたり Big5 を入れたりしても問題ありませんね。して欲しくないけど。更に注釈外の生書きはもちろん駄目だけど。encoded-word
を入れるのはよくないんだけど、 HTTP 的にはあまり気にしない。)encoded-word
にするなんてばかげたことは (普通は) しないで下さい、念のため。[93] User-Agent:
には、 DOM API
navigator.userAgent
からもアクセスできます。
[62]
User-Agent:
欄があるプロトコル:
User-Agent:
欄に関係するプロトコル要素:
[65] UserAgent - iPhone 3G DevWiki (Referenced: ) http://wiki.sohaya.com/index.php/UserAgent
[66] IRC logs: freenode / #whatwg / 20100617 ( 版) http://krijnhoetmer.nl/irc-logs/whatwg/20100617#l-752
[67] IRC logs: freenode / #whatwg / 20100913 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20100913
[77] draft-karcz-uuas-00 - Unified User-Agent String (UUAS) ( ( 版)) http://tools.ietf.org/html/draft-karcz-uuas-00
[78] HTML Standard ( ( 版)) http://www.whatwg.org/specs/web-apps/current-work/#client-identification
[80] ( ( 版)) http://www.etsi.org/deliver/etsi_ts/102700_102799/102796/01.02.01_60/ts_102796v010201p.pdf
[94] Re: History of device independence, User-Agent header? ( (Sean B. Palmer 著, 版)) http://lists.w3.org/Archives/Public/public-webhistory/2014Jul/0001.html
[95] RFC 3507 - Internet Content Adaptation Protocol (ICAP) ( ( 版)) http://tools.ietf.org/html/rfc3507#page-14
[96] [whatwg] Controlling the User-Agent header from script ( (Anne van Kesteren 著, 版)) http://lists.w3.org/Archives/Public/public-whatwg-archive/2014Oct/0151.html
[97] The Platform for Privacy Preferences 1.0 (P3P1.0) Specification ( ( 版)) http://www.w3.org/TR/P3P/#other_http_info
[98] RFC 5536 - Netnews Article Format ( ( 版)) http://tools.ietf.org/html/rfc5536#section-3.2.13
[38] RFC 5965 - An Extensible Format for Email Feedback Reports ( 版) http://tools.ietf.org/html/rfc5965#section-3.1
[39] >>38 は RFC 2616 を引用して message/feedback-report
における User-Agent:
を規定していますが、ここでは構文上の空白が
CFWS に置き換えられています。 comment
を値の先頭に置くことができます。
[101] `user-agent` header control · Issue #37 · whatwg/fetch ( 版) https://github.com/whatwg/fetch/issues/37
[102] Re: user-agent header control (Anne van Kesteren 著, 版) https://lists.w3.org/Archives/Public/public-webapps/2015AprJun/0043.html
[105] Allow User-Agent to be set, but not omitted. Also group all the heade… · whatwg/fetch@dab09b0 ( 版) https://github.com/whatwg/fetch/commit/dab09b0c483c46324082df1e54b29ed4c9c02162
[123] Issue 310456 - chromium - FTP not working behind Authenticating HTTP Proxy using NTLM (Forefront TMG) - Monorail ( ()) https://bugs.chromium.org/p/chromium/issues/detail?id=310456#c18
[127]
Mozilla/5.0 (Linux; Android 7.0; 502SO Build/39.2.D.0.211; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 インターネット/3.0.2.2
「インターネット」は半角カナ。
[15] Chromiumベースの新Microsoft Edgeは接続先に応じて別のブラウザに偽装する | スラド IT () https://it.srad.jp/story/19/04/23/0527248/
[16] 182629 – [macOS, iOS] Expose OS marketing version in UserAgent () https://bugs.webkit.org/show_bug.cgi?id=182629
[22] User Agent Changes | Vivaldi Browser () https://vivaldi.com/ja/blog/user-agent-changes/
[23] Intent to Deprecate and Freeze: The User-Agent string - Google グループ () https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/-2JIRNMWJ7s/yHe4tQNLCgAJ
[24] Freeze the User Agent string - Chrome Platform Status () https://www.chromestatus.com/feature/5704553745874944
[25] User Agent Client Hints · Issue #202 · mozilla/standards-positions () https://github.com/mozilla/standards-positions/issues/202
[30] Remove OS build number from user-agent string - Chrome Platform Status () https://www.chromestatus.com/feature/4558585463832576
[36] Chromium Blog: Changing the Chrome on iOS User Agent for Request Desktop Site (, ) https://blog.chromium.org/2020/09/changing-chrome-on-ios-user-agent-for.html
[50] 作ろうiモードコンテンツ:ユーザエージェント | サービス・機能 | NTTドコモ () https://www.nttdocomo.co.jp/service/developer/make/content/spec/useragent/index.html
[57] 作ろうiモード:ユーザエージェント | サービス・機能 | NTTドコモ () https://www.nttdocomo.co.jp/service/developer/make/content/browser/browser2/useragent/index.html
[58] Downgrade User Agent Client Hints to 'harmful' · Issue #552 · mozilla/standards-positions () https://github.com/mozilla/standards-positions/issues/552
[60] User-Agent Reduction origin trial - Chrome Developers (, ) https://developer.chrome.com/blog/user-agent-reduction-origin-trial/
[63] User-Agent Reduction origin trial - Chrome Developers (, ) https://developer.chrome.com/blog/user-agent-reduction-origin-trial/
[64] 1719070 - Add Nimbus client code for "Firefox/100.0" UA string experiment () https://bugzilla.mozilla.org/show_bug.cgi?id=1719070
[69] Apple の緊急セキュリティ対応、一部サイトが正しく表示されなくなる問題 | スラド アップル, https://apple.srad.jp/story/23/07/12/181232/
問題が発生しているのは iOS 16.5.1 (a) / iPadOS 16.5.1 (a) / macOS Ventura 13.4.1 (a) で、それぞれ問題を修正した iOS 16.5.1 (b) / iPadOS 16.5.1 (b) / macOS Ventura 13.4.1 (b) を間もなくリリースするとのこと。
問題の原因は Safari のユーザーエージェント文字列に「(a)」が含められたこととみられる。これにより、Facebook や Instagram などのサイトが古いバージョンのブラウザーと誤認識してしまうようだ。