User-Agent ヘッダーは、入札リクエストに含められてきました。これは、リクエストを開始したデバイスのブラウザやプラットフォームなどの有用なターゲティング データを提供するためです。ただし、ブラウザでは、使いにくさやユーザーのプライバシー保護の強化を理由に、User-Agent が大幅に編集されることがよくあります。これに対応するため、Google は User-Agent Client Hints をサポートしています。これは、利用可能な場合に User-Agent ヘッダーを補完するために、入札リクエストに含まれます。これらのクライアント ヒントは、Sec-Ch-UA* ヘッダーまたは JavaScript クライアント ヒント API から取得できます。
User-Agent ヘッダーは、BidRequest.device.ua フィールドの文字列として公開されます。
UserAgent メッセージには、クライアント ヒントが利用可能な場合はクライアント ヒントが入力されます。それ以外の場合は、User-Agent ヘッダーから解析された値に基づいて入力されます。これは BidRequest.device.sua フィールドで公開されます。
入札者は、User-Agent 文字列ではなく UserAgent メッセージを使用することを強く推奨します。
UserAgent の入力方法
User-Agent ヘッダーとは異なり、UserAgent メッセージは、特定の情報について複数のフィールドに分割されたユーザー エージェント情報を表します。
広告リクエストでクライアント ヒントが利用可能かどうかによって、UserAgent メッセージは次の方法で入力できます。
- リクエストに 低エントロピー クライアント ヒントが 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
例: クライアント ヒントに基づいて 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
エントロピーの低いクライアント ヒントが少なくとも 1 つ含まれている場合、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
User-Agent ヘッダーとクライアント ヒントに基づく入力
一部のフィールドは、User-Agent ヘッダーとクライアント ヒントのどちらに基づくかによって、入力される内容が異なります。これらの違いの概要は次のとおりです。
- 同じブラウザとプラットフォームでも、User-Agent ヘッダーまたはクライアント ヒントに基づく
UserAgentでは、UserAgent.browsers.brandとUserAgent.platform.brandが異なることがよくあります。たとえば、User-Agent ヘッダーに基づく場合はUserAgent.platform.brandが「Windows NT」と表示され、クライアント ヒントに基づく場合は「Windows」と表示されることがあります。 UserAgent.browsersエントリの中には、User-Agent ヘッダーまたはクライアント ヒントに固有のものがあります。たとえば、UserAgentが User-Agent ヘッダーに基づいている場合は「AppleWebKit」が表示されますが、クライアント ヒントに基づいている場合は「Chromium」のみが表示されます。- User-Agent ヘッダーに基づく
UserAgentのみ、フリーズされた値を含めることができます。たとえば、プラットフォームが Windows 11 22H2 の場合、UserAgent.platform.brandは「Windows NT」に設定され、UserAgent.platform.versionは[“10”, “0”]に設定されます。これは、10 以上の Windows バージョンの固定値であるためです。
通常、クライアント ヒントに基づく UserAgent のデータは、フリーズまたは編集された情報の不正確な代替にはなりません。User-Agent ヘッダーと Client Hints に基づく UserAgent の間に不整合がある場合は、UserAgent の情報が優先されます。
UserAgent オブジェクトのフィールド
このセクションでは、各フィールドの概要を説明します。Google RTB 固有の動作と使用に関するベスト プラクティスに重点を置いています。
ブラウザ
一般に特異性で並べ替えられた BrandVersion エントリのリストが含まれます。たとえば、browsers の内容をリストする場合、各エントリの brand は次のような順序で表示されます。
| ブランド | 意味 |
| Mozilla | Mozilla 互換 |
| AppleWebKit | AppleWebKit ベース、Mozilla のサブセット。 |
| Chrome | Chrome ブラウザ、WebKit 互換ブラウザのサブセット |
| Safari | モバイル版ではなく、パソコン版。 |
UserAgent は、特にクライアント ヒントに基づく場合、ブラウザを特定の順序で常に一覧表示するとは限りません。次に、source の値に基づいて想定されるその他の違いについて説明します。
USER_AGENT:versionフィールドは、メジャー バージョンに縮小されるか、フリーズされる可能性があります(エージェント固有のポリシーによって異なります)。値がフリーズされたことを示す表示はありません。CLIENT_HINTS_LOW_ENTROPYとCLIENT_HINTS_HIGH_ENTROPY: エントリは特定の条件で並べ替えられません。たとえば、同じブラウザがリクエストごとに異なる順序でこれらのエントリを送信する可能性があります。また、GREASE エントリが含まれる場合もありますが、これは無視する必要があります。CLIENT_HINTS_HIGH_ENTROPY: ブラウザで見つかったすべてのversionフィールドをフル バージョンに設定できます。
プラットフォーム
プラットフォームを説明する BrandVersion エントリ。User-Agent ヘッダーとクライアント ヒントの間で互換性がない場合があるため、一部のプラットフォームのターゲティングでは 2 つの名前のテストが必要になることがあります。たとえば、Apple の Macintosh オペレーティング システムは、User-Agent ヘッダーでは「Macintosh」とブランド化されていますが、クライアント ヒントでは「macOS」とブランド化されています。次に、source の値に基づいて想定されるその他の違いについて説明します。
USER_AGENT:versionフィールドは、メジャー バージョンに縮小されるか、フリーズされる可能性があります。値がフリーズされたことを示す表示はありません。CLIENT_HINTS_LOW_ENTROPY:versionフィールドには値が設定されません。CLIENT_HINTS_HIGH_ENTROPY:versionフィールドはフル バージョンに設定できます。
モバイル
広告などのコンテンツを小画面やタッチ入力向けに最適化するかどうかを示します。モバイル ブラウザは「パソコン用サイト」をリクエストするように構成できるため、これは必ずしもデバイスタイプの指標ではありません。
アーキテクチャ
プラットフォームのアーキテクチャ(「x86」や「arm」など)を識別します。
クライアント ヒントに基づく UserAgent の場合、これは source が CLIENT_HINTS_HIGH_ENTROPY に設定されている場合にのみ入力されます。
ビット数
プラットフォームのビット数(32 ビット CPU か 64 ビット CPU かなど)を識別します。このフィールドは、アーキテクチャに関する追加情報を提供する整数文字列です。たとえば、x86 アーキテクチャでは、ビットネスを 32 または 64 に設定できます。
クライアント ヒントに基づく 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 の作成に使用されたヘッダーを識別します。クライアント ヒントの場合、次の 2 つのケースも区別します。
CLIENT_HINTS_LOW_ENTROPY: 基本のクライアント ヒントのみを使用できます。CLIENT_HINTS_HIGH_ENTROPY: 高エントロピーとして分類されるフィールドが少なくとも 1 つ含まれるクライアント ヒントが利用可能です。