ユーザーエージェントクライアントヒント
概要 overview
Web ブラウザーがWeb サーバーにリクエストするたびに、リクエストのヘッダーには、ブラウザーとブラウザーが実行されている環境に関する情報が含まれます。 これらのデータはすべて、ユーザーエージェント文字列と呼ばれる文字列に集約されます。
Mac OS デバイスで実行されているChrome ブラウザーからのリクエストで、ユーザーエージェント文字列がどのように表示されるかを示す例を次に示します。
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36`
Chrome105105.0.0.0AppleWebKit537.36Mac OS X10.15.7Intel Mac OS X 10_15_7ユースケース use-cases
ユーザーエージェント文字列は、ブラウザー、オペレーティングシステム、デバイスがサイトコンテンツをどのように表示し、ユーザーがweb サイトとどのようにインタラクションしているかに関する重要なインサイトをマーケティング部門と開発部門に提供するために長年使用されてきました。
ユーザーエージェント文字列は、様々な目的でサイトをクロールするスパムボットやフィルターボットをブロックするためにも使用されます。
Adobe Experience Cloudのユーザーエージェント文字列 user-agent-in-adobe
Adobe Experience Cloud ソリューションでは、ユーザーエージェント文字列をさまざまな方法で利用します。
- Adobe Analyticsは、ユーザーエージェント文字列を使用して、web サイトへのアクセスに使用されたオペレーティングシステム、ブラウザー、デバイスに関連する追加情報を拡張および取得します。
- Adobe Audience ManagerとAdobe Targetは、ユーザーエージェント文字列によって提供される情報に基づいて、セグメンテーションおよびパーソナライゼーションキャンペーンのエンドユーザーを選定します。
ユーザーエージェントクライアントヒントの紹介 ua-ch
近年、サイトオーナーやマーケティングベンダーは、ユーザーエージェント文字列と、リクエストヘッダーに含まれる他の情報を使用して、デジタル指紋を作成しています。 これらの指紋は、ユーザーの知識なしにユーザーを識別する手段として使用できます。
ユーザーエージェント文字列がサイト所有者に提供する重要な目的にもかかわらず、ブラウザー開発者は、エンドユーザーの潜在的なプライバシー問題を制限するために、ユーザーエージェント文字列の動作の方法を変更することを決定しました。
開発したソリューションは、 ユーザーエージェントクライアントヒント と呼ばれています。 クライアントヒントは、ウェブサイトが必要なブラウザー、オペレーティングシステム、デバイス情報を収集することを可能にし、またフィンガープリントのような秘密の追跡方法に対する保護を強化します。
クライアントヒントを使用すると、web サイトの所有者は、ユーザーエージェント文字列で使用可能な多くの同じ情報にアクセスできますが、よりプライバシーを保護する方法でアクセスできます。
最新のブラウザーがユーザーをweb サーバーに送信する場合、必要かどうかに関係なく、ユーザーエージェント文字列全体がリクエストごとに送信されます。 一方、クライアントヒントでは、サーバーがクライアントについて知りたい追加情報をブラウザーに求める必要があるモデルを適用します。 このリクエストを受け取ると、ブラウザーは独自のポリシーまたはユーザー設定を適用して、どのデータが返されるかを決定できます。 すべてのリクエストでデフォルトでユーザーエージェント文字列全体を公開するのではなく、アクセスは明示的かつ監査可能な方法で管理されるようになりました。
ブラウザーのサポート browser-support
ユーザーエージェントクライアントヒント がGoogle Chrome バージョン 89で導入されました。
追加のChromium ベースのブラウザーでは、次のようなクライアントヒント APIがサポートされています。
- Microsoft Edge
- Opera
- Brave
- Chrome for Android
- Opera for Android
- Samsung Internet
カテゴリ categories
ユーザーエージェントクライアントヒントには2つのカテゴリがあります。
低いエントロピーのクライアントヒント low-entropy
低エントロピーのクライアントヒントには、ユーザーのフィンガープリントに使用できない基本情報が含まれています。 ブラウザーのブランド、プラットフォーム、リクエストがモバイルデバイスからのものかどうかなどの情報。
低いエントロピークライアントヒントは、Web SDKでデフォルトで有効になっており、すべてのリクエストに渡されます。
Sec-CH-UAbrandsSec-CH-UA-PlatformplatformSec-CH-UA-Mobilemobile高いエントロピーのクライアントヒント high-entropy
高エントロピーのクライアントヒントは、プラットフォームバージョン、アーキテクチャ、モデル、ビットネス(64 ビットまたは32 ビットプラットフォーム)、または完全なオペレーティングシステムのバージョンなど、クライアントデバイスに関するより詳細な情報です。 この情報はフィンガープリントに使用される可能性があります。
Sec-CH-UA-Platform-Versionxdm.environment.browserDetails.userAgentClientHints.platformVersion10.15.7Sec-CH-UA-Archxdm.environment.browserDetails.userAgentClientHints.architecturex86Sec-CH-UA-Modelxdm.environment.browserDetails.userAgentClientHints.modelIntel Mac OS X 10_15_7Sec-CH-UA-Bitnessxdm.environment.browserDetails.userAgentClientHints.bitness64Sec-CH-UAもこの要素を収集します。Sec-CH-UA-Full-Version-Listxdm.environment.browserDetails.userAgentClientHints.vendorGoogleSec-CH-UAもこの要素を収集します。Sec-UA-Full-Version-Listxdm.environment.browserDetails.userAgentClientHints.brandChromeSec-CH-UAもこの要素を収集します。 正確なブラウザーバージョンは自動的には収集されません。Sec-UA-Full-Version-Listxdm.environment.browserDetails.userAgentClientHints.version105高エントロピークライアントヒントは、Web SDKではデフォルトで無効になっています。 これを有効にするには、高エントロピーのクライアントヒントをリクエストするようにWeb SDKを手動で設定する必要があります。
高エントロピーのクライアントヒントがAdobe Experience Cloud ソリューションに与える影響 impact-in-experience-cloud-solutions
一部のAdobe Experience Cloud ソリューションは、レポートの生成時に高エントロピーのクライアントヒントに含まれる情報に依存しています。
環境で高エントロピークライアントヒントを有効にしない場合、以下に説明するAdobe AnalyticsおよびAudience Managerのレポートと特性は機能しません。
高エントロピーのクライアントヒントに依存するAdobe Analytics レポート analytics
オペレーティングシステム ディメンションには、高エントロピーのクライアントヒントとして保存されるオペレーティングシステムのバージョンが含まれます。 高エントロピーのクライアントヒントが有効になっていない場合、オペレーティングシステムのバージョンがChromium ブラウザーから収集されたヒットに対して不正確になる可能性があります。
高エントロピーのクライアントヒントに依存するAudience Managerの特性 aam
Googleは、User-Agent ヘッダーを介して収集された情報を最小限に抑えるために、Chrome ブラウザー機能を更新しました。 その結果、DILを使用しているAudience Managerのお客様は、 プラットフォームレベルのキーに基づく信頼性の高い特性に関する情報を受け取ることができなくなります。
ターゲティングにプラットフォームレベルのキーを使用するAudience Managerのお客様は、Adobe Experience PlatformではなくDIL Data Collectionに切り替え、High Entropy Client Hintsを有効にして、信頼性の高い特性データを引き続き受け取る必要があります。
高エントロピーのクライアントヒントの有効化 enabling-high-entropy-client-hints
Web SDK デプロイメントで高エントロピーのクライアントヒントを有効にするには、context フィールドにhighEntropyUserAgentHints コンテキストオプションを追加する必要があります。
例えば、web プロパティから高エントロピーのクライアントヒントを取得する場合、設定は次のようになります。
context: ["highEntropyUserAgentHints", "web"]
例 example
ブラウザーがweb サーバーに対して行った最初のリクエストのヘッダーに含まれるクライアントヒントには、ブラウザーのブランド、ブラウザーのメジャーバージョン、およびクライアントがモバイルデバイスであるかどうかのインジケーターが含まれます。 データの各部分には、次に示すように、単一のユーザーエージェント文字列にグループ化されるのではなく、独自のヘッダー値が含まれます。
Sec-CH-UA: "Chromium";v="101", "Google Chrome";v="101", " Not;A Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "macOS
同じブラウザーの同等のUser-Agent ヘッダーは次のようになります。
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
情報は似ていますが、サーバーへの最初のリクエストにはクライアントヒントが含まれています。 これらは、ユーザーエージェント文字列で使用できる内容のサブセットのみを含みます。 このリクエストには、オペレーティングシステムのアーキテクチャ、完全なオペレーティングシステムのバージョン、レイアウトエンジン名、レイアウトエンジンのバージョン、および完全なブラウザーバージョンが含まれていません。
ただし、後続のリクエストでは、Client Hints APIはweb サーバーがデバイスに関する追加情報を要求することを許可します。 これらの値が要求された場合、ブラウザーポリシーまたはユーザー設定に応じて、ブラウザーの応答にその情報が含まれる場合があります。
以下は、高いエントロピー値が要求されたときにClient Hints APIによって返されるJSON オブジェクトの例です。
{
"architecture":"x86",
"bitness":"64",
"brands":[
{
"brand":" Not A;Brand",
"version":"99"
},
{
"brand":"Chromium",
"version":"100"
},
{
"brand":"Google Chrome",
"version":"100"
}
],
"fullVersionList":[
{
"brand":" Not A;Brand",
"version":"99.0.0.0"
},
{
"brand":"Chromium",
"version":"100.0.4896.127"
},
{
"brand":"Google Chrome",
"version":"100.0.4896.127"
}
],
"mobile":false,
"model":"",
"platformVersion":"12.2.1"
}