ユーザー エージェント文字列を作成するための RFC、公式標準、またはテンプレートはありますか? iPhone のユーザー エージェント文字列がおかしいようです...
Mozilla/5.0 (iPhone; U; Mac OS X のような CPU iPhone OS 3_1_2 ; en-us) AppleWebKit/528.18 ( Gecko のような KHTML ) バージョン/4.0 Mobile/7D11 Safari/528.16
ユーザー エージェント文字列を作成するための RFC、公式標準、またはテンプレートはありますか? iPhone のユーザー エージェント文字列がおかしいようです...
Mozilla/5.0 (iPhone; U; Mac OS X のような CPU iPhone OS 3_1_2 ; en-us) AppleWebKit/528.18 ( Gecko のような KHTML ) バージョン/4.0 Mobile/7D11 Safari/528.16
User-Agent
ヘッダーはRFC7231
、 の改良版である の一部であり、次のRFC1945
ように記載されています。
User-Agent
request-header フィールドには、リクエストを発信したユーザー エージェントに関する情報が含まれています。これは、統計目的、プロトコル違反の追跡、および特定のユーザー エージェントの制限を回避するために応答を調整するためのユーザー エージェントの自動認識のためです。ユーザー エージェントは、このフィールドをリクエストに含める必要があります。このフィールドには、複数のproduct
トークン (セクション 3.8) とcomments
、ユーザー エージェントの重要な部分を形成するエージェントとサブプロダクトを識別するものを含めることができます。慣例により、product
トークンは、アプリケーションを識別するために重要な順にリストされています。
User-Agent = "User-Agent" ":" 1*( product | comment )
は次product
のように定義されます。
product = token ["/" product-version]
product-version = token
token = 1*<any CHAR except CTLs or separators>
そしてcomment
次のように:
comment = "(" *( ctext | quoted-pair | comment ) ")"
ctext = <any TEXT excluding "(" and ")">
参考までに、その他のルールは次のとおりです。
CTL = <control characters, e.g. ASCII 0x00 through 0x0F and 0x7F>
separators = "(" | ")" | "<" | ">" | "@"
"," | ";" | ":" | "\" | <">
"/" | "[" | "]" | "?" | "="
"{" | "}" | SP | HT
SP = <ASCII space 0x20, i.e. " ">
HT = <ASCII horizontal tab 0x09, aka '\t'>
これは、product
文字列にスペースを含めることはできませんが、文字列には含めることができることを意味することに注意してくださいcomment
。
文字列の有効な例を次に示しproduct
ます (文字product-version
列の有無にかかわらず):
# Single `product` without product-version:
Foobar
Foobar-baz
# Single `product` with product-version:
Foobar/abc
Foobar/1.0.0
Foobar/2021.44.30.15-b917dc
comment
文字列の有効な例を次に示します。すべての文字列が対応する括弧で囲まれていることに注意してください(
)
。
# This was the default `comment` used by Internet Explorer 11:
(Windows NT 6.1; WOW64; Trident/7.0; rv:11.0)
# You can put almost any text inside a comment:
(Why are you looking at HTTP headers? Go outside, find love, do some good in the world)
# Note that `comment` strings can also be nested, provided their delimiting parentheses are matched, for example:
(Outer comment (Inner comment))
User-Agent
ヘッダーの値は任意product
の文字列で構成されるためcomment
、これらはすべて有効なUser-Agent
ヘッダーです。
User-Agent: Foobar
User-Agent: Foobar/2021.44.30.15-b917dc
User-Agent: MyProduct Foobar/2021.44.30.15-b917dc
User-Agent: Tsom/OfraHaza (Life is short and love is always over in the morning) AnotherProduct
これは、RFC 1945のリクエスト ヘッダーのセクションで指定されています。ただし、これはあまり標準化された形式ではなく、ユーザー エージェントは必要なものをそこに入れる傾向があります。
はい、mozilla websiteを参照してください。ただし、前述のとおりです。基本的には、好きなものをそこに置くことができます。統計/分析の目的で最も重要なことは、すべてのブラウザー/OS でこれを標準化する必要があるということです。