[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] 利用者エージェントの識別を参照。
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.
Although it is not required, user agents shouldUser agents SHOULD include this field with requests. The field can contain multiple product tokens (Section3.73.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.
User-Agent
要求頭欄は、要求を作成した利用者エージェントについての情報を含みます。
これは、統計目的、プロトコル違反の追跡、および特定利用者エージェントの制限を避けるために応答を手直しするための利用者エージェントの自動認識のためのものです。
利用者エージェントは、この欄を要求に含めるべきです。
この欄は、複数の product
字句ならびに利用者エージェントおよび利用者エージェントの重要な部分を形成する部分製品を識別する注釈を含めることができます。
慣習的に、 product
字句は、その応用を識別するのに有意な順に列挙します。
- User-Agent = "User-Agent" ":" 1*( product | comment )
Example:
- User-Agent: CERN-LineMode/2.15 libwww/2.17b3
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.
注意: 既存の串応用の中には User-Agent
欄の並びに自身の製品情報を付加するものもあります。
これは、この欄の機械的解釈が曖昧になってしまうので、推奨しません。
Note: Some existing clients fail to restrict themselves to the product token syntax within the User-Agent field.
注意: 既存のクライアントの中には User-Agent
欄の product 字句構文に反しているものもあります。
注: 修正部はすべて RFC 1945→RFC 2068 での変更点。
[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
を値の先頭に置くことができます。
If your environment precludes setting the User-Agent field, then set an X-User-Agent header.
[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
HTML ブラウザは、User-Agent ヘッダを図 10-7 に示す書式に合わせて HTTP リクエストのヘ
ッダに含めて送信しなければならない。
User-Agent: <others> <SystemName>/1.0
(<Capability>;<MakerId>;<ModelId>;<MajorVer>;<MinorVer>;
<reserved>) <others>
図 10-7 User-Agent ヘッダ
<SystemName> : "A-PAB"
< Capability > : 受信機の能力を表す。
カンマ(",")区切りで受信機の能力を表す文字列を列挙するものとし、先頭から順に、ブラウザ
表示解像度、ビデオ再生解像度を表現する。それ以降の項目については将来の規定項目とする。
<Capability>=browser_resolution","video_resolution[","reserved]
browser_resolution="2K"|"4K"|"8K"
video_resolution="2K"|"4K"|"8K"
browser_resolution はブラウザで表示可能な最大のコンテンツの解像度を示し、
video_resolution は video 要素によって再生可能な最大の解像度を示す。それぞれ
"2K","4K","8K"のいづれかが記述される。記述がない場合は"2K"と見なす。なお、"4K"に
対応するものは"2K"にも対応し、"8K"に対応するものは"4K"および"2K"にも対応するもの
とする。
<MakerId>:製造メーカーの識別を示す。
MakerId は 6 桁の文字列で、IEEE 規定の 24bit のカンパニーID(OUI)を base16 の文字列
で表したものとする。メーカーに対して OUI は複数存在する可能性があるが、そのうち特定
の1種類を MakerId として使用すること。
< ModelId >:機種を示すコードであり、10 文字までの文字列である。運用は各メーカーに任され
る。
<MajorVer><MinorVer>: 端末のバージョン情報を示し、共に 8 文字までの文字列とする。
ModelId が同一で、動作が異なる端末には、異なるバージョンを付する。運用は各メーカーに
任される。
<reserved>:将来の拡張のための領域
<others>: メーカーが自由に使える領域。ただし、本規定の識別子と区別するため、
<SystemName>で文字列が始まらない必要がある。なお、使用する文字列は RFC 7231 に従
うものとする。
[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
「インターネット」は半角カナ。
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.
[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
User-Agentにbotが含まれていたため、Flickrをクロールする際にアクセスができず、画像を取得できない問題がありましたがこの修正により解消しました。
[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 などのサイトが古いバージョンのブラウザーと誤認識してしまうようだ。