メインコンテンツに移動

User-Agent Client HintsとUA削減

Chromiumベースのブラウザは削減されたUser-Agent文字列を送信します。デバイスを最も正確に識別できた詳細は固定値に置き換えられ、正確なデータはUser-Agent Client Hints(UA-CH)に移されました。サイトはこれを要求する必要があります。このガイドでは、Android版Chromeの従来の文字列と削減版の文字列を並べて解析します。

解析例

従来のAndroid版Chrome(削減前)
Mozilla/5.0 (Linux; Android 12; SM-G991B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36
ブラウザ
Chrome 99.0.4844.88
エンジン
Blink
オペレーティングシステム
Android 12
デバイス種別
モバイル
デバイス
Samsung SM-G991B
CPUアーキテクチャ
不明
ボット / クローラー
いいえ
削減後のAndroid版Chrome
Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36
ブラウザ
Chrome 120.0.0.0
エンジン
Blink
オペレーティングシステム
Android 10
デバイス種別
モバイル
デバイス
K
CPUアーキテクチャ
不明
ボット / クローラー
いいえ

従来の文字列からは、Android 12、SamsungのモデルSM-G991B、完全なバージョン99.0.4844.88がわかります。削減版の文字列では、Android 10とモデルKはすべてのAndroidデバイスが送信するプレースホルダーで、バージョンは.0.0.0で終わります。パーサーは文字列の記載どおり(Android 10、モデルK)を報告するため、実際の情報を持つのはメジャーバージョン120とMobileトークンだけです。

Chromiumブラウザがデフォルトで送信する低エントロピーのヒントと、追加のヒントを要求するAccept-CHレスポンスヘッダー
Sec-CH-UA: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"
Sec-CH-UA-Mobile: ?1
Sec-CH-UA-Platform: "Android"

Accept-CH: Sec-CH-UA-Model, Sec-CH-UA-Platform-Version, Sec-CH-UA-Full-Version-List

主なルール

  • 削減版のChrome文字列に残るのはメジャーバージョンだけで、マイナー・ビルド・パッチは常に0.0.0です。
  • Androidでは、OSバージョンは10に固定され、デバイスモデルはKに置き換えられます。デスクトップでは、プラットフォームがWindows NT 10.0; Win64; x64、Macintosh; Intel Mac OS X 10_15_7、X11; Linux x86_64などの値に固定されます。
  • HTTPS接続では、Chromiumブラウザはデフォルトで3つの低エントロピーヒントを送信します:Sec-CH-UA(ブランドとメジャーバージョン)、Sec-CH-UA-Mobile、Sec-CH-UA-Platform。
  • Sec-CH-UA-Platform-Version、Sec-CH-UA-Model、Sec-CH-UA-Full-Version-Listなどの詳細なヒントは、サーバーがAccept-CHレスポンスヘッダーで要求した後にのみ送信されます。JavaScriptではnavigator.userAgentData.getHighEntropyValues()を使用します。
  • ブランドリストには、「Not_A Brand」のような意図的に偽の「GREASE」エントリーが含まれます。ヘッダー全体を比較するのではなく、必要なブランドを探してください。
  • Windows 11もUser-Agent文字列ではWindows NT 10.0を送信します。Sec-CH-UA-Platform-Versionが13.0.0以上であればWindows 11と判別できます。
  • Client HintsはChromiumの機能なので、他のブラウザ向けにUser-Agentによるフォールバックを残してください。このパーサーが読み取るのはUser-Agent文字列のみで、Client Hintsは読み取りません。

その他のユーザーエージェントガイド