従来、開始デバイスのブラウザやプラットフォームなどの有用なターゲティング データを提供するために、User-Agent ヘッダーが入札リクエストに含まれていました。しかし、ユーザー エージェントは使用しづらいことから、ユーザーのプライバシー保護を強化するため、ブラウザはしばしばユーザー エージェントを大量に秘匿化しています。これを受けて、Google は User-Agent Client Hints をサポートしています。これは、User-Agent ヘッダーを補完するために利用できる場合に、入札リクエストに含まれます。これらの Client Hints(略して)は、Sec-Ch-UA* ヘッダーまたは JavaScript Client Hints API から取得できます。
使用するプロトコルに応じて、User-Agent ヘッダーは次のいずれかの文字列フィールドで公開されます。
- Google:
BidRequest.user_agent
- OpenRTB:
BidRequest.device.ua
UserAgent
メッセージには、Client Hints が利用可能な場合は入力されますが、それ以外の場合は User-Agent ヘッダーから解析された値に基づいて入力されます。使用されるプロトコルに応じて、次のいずれかのフィールドとして公開されます。
- Google:
BidRequest.user_agent_data
- OpenRTB:
BidRequest.device.sua
ビッダーには、ユーザー エージェント文字列ではなく UserAgent
メッセージを使用することを強くおすすめします。
UserAgent
の入力方法
ユーザー エージェント ヘッダーとは異なり、UserAgent
メッセージはユーザー エージェント情報を、特定の情報ごとに複数のフィールドに分割して表します。
広告リクエストで Client Hints を使用できるかどうかに応じて、UserAgent
メッセージは次の方法で入力できます。
- リクエストに低エントロピーの Client Hints が少なくとも 1 つ含まれている場合、その内容に基づいて
UserAgent
が入力されます。 - リクエストに User-Agent ヘッダーのみが含まれている場合、ヘッダーの解析内容に基づいて
UserAgent
が入力されます。
例: User-Agent ヘッダーに基づいて UserAgent
を入力する
ブラウザから次のヘッダーが送信される広告リクエストがあるとします。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
User-Agent ヘッダーのみに基づいて入力された UserAgent
は次のようになります。
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
例: Client Hints に基づく UserAgent
の入力
ブラウザから次のヘッダーが送信される広告リクエストがあるとします。
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
少なくとも低エントロピーの Client Hints が含まれている場合、User-Agent ヘッダーが存在する場合でも、それらのヘッダーの内容に基づいて UserAgent
が設定されます。次のようになります。
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
ユーザー エージェント ヘッダーに基づく入力と Client Hints による入力
一部のフィールドは、User-Agent ヘッダーと Client Hints のどちらに基づいて設定されるかによって異なります。違いの概要を以下に示します。
- 同じブラウザとプラットフォームの場合、ユーザー エージェント ヘッダーまたは Client Hints に基づく
UserAgent
の間でUserAgent.browsers.brand
とUserAgent.platform.brand
が異なることがよくあります。たとえば、UserAgent.platform.brand
が User-Agent ヘッダーに基づく場合は「Windows NT」、Client Hints に基づく場合は「Windows」と表示されます。 - 一部の
UserAgent.browsers
エントリは、User-Agent ヘッダーまたは Client Hints に固有です。たとえば、UserAgent
がユーザー エージェント ヘッダーに基づく場合は「AppleWebKit」が表示され、Client Hints に基づく場合にのみ「Chromium」が表示されます。 - 固定値を含めることができるのは、ユーザー エージェント ヘッダーに基づく
UserAgent
のみです。 たとえば、プラットフォームが Windows 11 22H2 の場合、UserAgent.platform.brand
は「Windows NT」に設定され、UserAgent.platform.version
は[“10”, “0”]
に設定されます。これは、10 以降のすべての Windows バージョンでは固定された値であるためです。
通常、Client Hints に基づく UserAgent
のデータは、凍結または除去された情報の不正確な置き換えにはなりません。Client Hints に基づく User-Agent ヘッダーと UserAgent
の間に不整合がある場合は、UserAgent
からの情報が優先されます。
UserAgent オブジェクトのフィールド
このセクションでは、Google RTB 固有の動作とおすすめの方法を中心に、各フィールドの概要を説明します。
ブラウザ
通常、具体的な順に並べられた BrandVersion エントリのリストが含まれています。たとえば、browsers
の内容をリストする場合、各エントリの brand
は次の順序で表示されます。
ブランド | 意味 |
Mozilla | Mozilla 互換 |
AppleWebKit | AppleWebKit ベース(Mozilla のサブセット)です。 |
Chrome | Chrome ブラウザ(AppleWebKit 互換ブラウザのサブセット) |
Safari | モバイルではなく PC 版。 |
UserAgent
は、特に Client Hints に基づく場合は、ブラウザを常に特定の順序で一覧表示するわけではありません。source
の値に基づいて想定されるその他の違いは次のとおりです。
USER_AGENT
:version
フィールドは、メジャー バージョンに縮小されるか、固定されます(エージェント固有のポリシーによって異なります)。値が固定されていることを示すことはありません。CLIENT_HINTS_LOW_ENTROPY
、CLIENT_HINTS_HIGH_ENTROPY
: どの条件でもエントリが並べ替えられることはありません。たとえば、同じブラウザでも、これらのエントリがリクエストごとに異なる順序で送信されることもあります。また、GREASE エントリを含めることもできますが、これは無視する必要があります。CLIENT_HINTS_HIGH_ENTROPY
: ブラウザで見られるすべてのversion
フィールドは、フルバージョンに設定されている可能性があります。
プラットフォーム
プラットフォームを説明する BrandVersion エントリ。これは User-Agent ヘッダーと Client Hints の間で互換性がない場合、プラットフォームによっては 2 つの名前でテストしなければならない場合があります。たとえば、Apple の Macintosh オペレーティング システムは、ユーザー エージェント ヘッダーでは「Macintosh」とブランドされますが、Client Hints では「macOS」とブランド名が付けられます。source
の値に基づいて想定されるその他の違いは次のとおりです。
USER_AGENT
:version
フィールドは、メジャー バージョンに縮小されるか、固定されます。値が固定されるとは限りません。CLIENT_HINTS_LOW_ENTROPY
:version
フィールドには値が入力されません。CLIENT_HINTS_HIGH_ENTROPY
:version
フィールドは完全バージョンに設定できます。
モバイル
広告などのコンテンツを小さな画面やタップ入力向けに最適化するかどうかを示します。モバイル ブラウザは「パソコン向けサイト」をリクエストするように設定できるため、必ずしもデバイスの種類を示すとは限りません。
アーキテクチャ
プラットフォームのアーキテクチャ(「x86」や「arm」など)を表します。
Client Hints に基づく UserAgent
の場合は、source
が CLIENT_HINTS_HIGH_ENTROPY
に設定されている場合にのみ入力されます。
ビット
CPU のビット数が 32 ビットか 64 ビットかなど、プラットフォームのビット数を示します。このフィールドは、アーキテクチャに関する追加情報を提供する整数文字列です。たとえば、「x86」アーキテクチャでは、ビット数を「32」または「64」に設定できます。
Client Hints に基づく UserAgent
の場合は、source
が CLIENT_HINTS_HIGH_ENTROPY
に設定されている場合にのみ入力されます。
モデル
デバイスのモデルを示します。モバイル デバイス(ノートパソコンやデスクトップ パソコンではなく)の場合は、「Google Pixel 6 Pro」などのモデル名が入力されます。
source
の値に基づき予想される違いは次のとおりです。
USER_AGENT
- モバイル デバイス以外:
model
フィールドには、アーキテクチャとビット数を組み合わせた値が含まれることがよくあります(Windows の場合は「x64」など)。この値はクロス プラットフォームではありません。たとえば、Linux は同じハードウェアに「x86_64」を使用する場合があります。 - モバイル デバイス: このフィールドにアーキテクチャとビット数は含まれません。
これらの値については、
UserAgent.architecture
とUserAgent.bitness
をご覧ください。
- モバイル デバイス以外:
CLIENT_HINTS_LOW_ENTROPY
:model
フィールドには値が入力されません。CLIENT_HINTS_HIGH_ENTROPY
:model
フィールドは、モバイル デバイスのデバイスモデルにのみ設定されます。デスクトップ プラットフォームには値は設定されません。
ソース
UserAgent
の作成に使用されたヘッダーを示します。Client Hints では、次の 2 つのケースも区別されます。
CLIENT_HINTS_LOW_ENTROPY
: 基本的な Client Hints のみ使用できます。CLIENT_HINTS_HIGH_ENTROPY
: 高エントロピーとして分類されるフィールドが 1 つ以上あるなど、Client Hints を使用できます。