20200116追記
chrome://flags/ より、「Experimental Web Platform features」を有効にすることで使用できます
20191210追記
モバイルブラウザを示すブーリアン値をもつSec-CH-UA-Mobileヘッダが仕様に追加されました。
ユーザエージェントは歴史的背景により、複雑な文字列が使用されています。
iOSでは
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/69.0.3497.105 Mobile/15E148 Safari/605.1
Edgeでは
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.2704.79 Safari/537.36 Edge/18.014
これには、不必要な情報や、歴史的な互換性を表現するための文字列などが含まれています。
ユーザエージェントを見て、適切なコンテンツを返すというのはこの複雑なユーザエージェントを正しく解釈する必要があります。
これを改善するためにClient Hintsの仕組みに則った新しい仕様である、「User Agent Client Hints」がGoogleのMike West氏から提案されています。
この提案では、ブランド名・プラットフォーム・アーキテクチャを個別に表現するヘッダを定義しています。
例
まずブラウザが https://example.comに最初にアクセスしたとき、Sec-CH-UAヘッダでブランド名とメジャーバージョンを含む情報を伝えます。
Sec-CH-UA: "Examplary Browser 73"
その後、サーバはさらなる情報が欲しい場合は、Client hintsの仕組みに乗っ取りAccept-CHレスポンスで欲しい情報を明示します。
Accept-CH: UA, Platform
サーバからのレスポンスを受け取ったブラウザは以後、次のヘッダを用いてユーザエージェント情報を伝えます。以下では、Sec-CH-Platformでプラットフォーム情報を送信しています。
Sec-CH-UA: "Examplary Browser 73.3R8.2H.1" Sec-CH-Platform: "Windows 10"
新しく定義されるプロパティ
- "brand" (for example: "cURL", "Edge", "The World's Best Web Browser")
- "major version" (for example: "72", "3", or "28")
- "full version" (for example: "72.0.3245.12", "3.14159", or "297.70E04154A")
- "platform brand" (for example: "Windows NT", "iOS", or "AmazingOS")
- "platform version" (for example: "10", "12", or "17G")
- "platform architecture" (for example: "ARM64", or "ia32")
- "model" (for example: "", or "Pixel 2 XL")
新しく定義されるヘッダ
各プロパティは下記のヘッダに含まれて送信されます。
- Sec-CH-Arch
- Sec-CH-Model
- Sec-CH-Platform
- Sec-CH-UA
例
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.1.2222.33 Safari/537.36 Sec-CH-UA: "Chrome 74.0.3424.124" Sec-CH-UA-Platform: "macOS 12" Sec-CH-UA-Arch: "ARM64"