アドプライバシーQ&A

ブラウザUser-Agent Reductionの技術的詳細とポストCookie時代の広告実装への影響

Tags: User-Agent Reduction, ブラウザプライバシー, 広告技術, データ収集, Client Hints, 技術仕様, 実装

はじめに

近年、ウェブブラウザはユーザープライバシー保護強化のため、様々な変更を実施しています。その一つに、HTTPリクエストヘッダーに含まれるUser-Agent文字列の削減(Reduction)があります。この変更は、ウェブサイトやサービスがユーザーエージェントを通じて取得できる情報量を大幅に制限し、フィンガープリンティングなどのトラッキング手法に対する耐性を高めることを目的としています。

広告技術やデータ収集に関わる多くのシステムは、これまでUser-Agent文字列に含まれるオペレーティングシステム、ブラウザバージョン、デバイスタイプなどの情報を活用してきました。User-Agent Reductionは、これらの情報へのアクセス方法と取得可能なデータの内容に根本的な変更をもたらし、広告配信、測定、不正対策といった多岐にわたる機能に影響を与えます。

本記事では、User-Agent Reductionの技術的な仕様、広告技術における従来のUser-Agent情報の利用実態、そしてこの変更が広告実装に与える具体的な影響について詳細に解説します。また、削減されたUser-Agent情報の代替として推奨されているUser-Agent Client Hints APIの利用方法と、対応策についても技術的な観点から考察します。

User-Agent文字列の削減(Reduction)技術仕様

User-Agent文字列の削減は、特定のブラウザバージョン以降で段階的に実施されています。このプロセスは主に以下の技術的な変更を含みます。

  1. 詳細情報の固定化または削除: User-Agent文字列に含まれるブラウザのマイナーバージョン、OSの正確なバージョン、デバイスモデルなどの詳細情報が、汎用的な値に置き換えられたり、完全に削除されたりします。例えば、特定のOSバージョンが一般的なメジャーバージョン表示に留まる、あるいは特定のブラウザバージョンが固定値で報告される、といった変更が発生します。
  2. 段階的導入: 一部のブラウザでは、最初はより詳細なUser-Agent情報を提供する「Greylisting」期間を設け、その後完全に削減された文字列に移行するという段階的なアプローチが取られています。これにより、ウェブサイト運営者やサービスプロバイダが対応を準備する猶予が与えられます。
  3. User-Agent Client Hints (UA-CH) APIの導入: User-Agent文字列から詳細情報が削減される代わりに、クライアント(ブラウザ)が必要な情報をサーバーに対して明示的に「ヒント」として提供を要求するメカニズムとして、User-Agent Client Hints APIが導入されました。サーバーはHTTPレスポンスヘッダー(Accept-CH)またはHTMLの<meta>タグで必要なヒントを指定し、ブラウザは後続のリクエストでこれらのヒントをHTTPリクエストヘッダー(Sec-CH-UA-*)として送信します。UA-CHは、Sec-CH-UA (Brand and Version), Sec-CH-UA-Platform (OS), Sec-CH-UA-Mobile (Mobile/Desktop), Sec-CH-UA-Full-Version-List (Full Version of Brands), Sec-CH-UA-Platform-Version (OS Version), Sec-CH-UA-Architecture (CPU Arch), Sec-CH-UA-Model (Device Model), Sec-CH-UA-Bitness (CPU Bitness), Sec-CH-UA-WoW64 (Windows 64-bit on 32-bit) などの様々なヒントを提供可能です。ただし、プライバシー保護の観点から、一部のヒント(High Entropy Client Hintsと呼ばれます)は、ユーザーのインタラクションやPermissions APIによる許可が必要となる場合があります。

削減後のUser-Agent文字列は、ブラウザの種類、主要なバージョン、デスクトップ/モバイルといった基本的な情報に限定され、過去のような詳細なデバイスやOSの識別には利用できなくなります。

広告技術におけるUser-Agent情報の従来の利用実態

広告技術分野では、User-Agent情報は以下のような様々な目的で利用されてきました。

これらの利用ケースにおいて、削減されたUser-Agent文字列では必要な詳細情報が不足するため、機能の維持や代替手法への移行が不可欠となります。

User-Agent Reductionが広告実装に与える影響

User-Agent Reductionは、上記の利用実態に直接的な影響を与えます。

特に、これまで詳細なUser-Agent情報を無許可で容易に取得できていた状況から、サーバーがブラウザに明示的にヒントを要求し、かつ一部のヒントはユーザー同意や許可が必要となるUA-CHへの移行は、技術的な実装のみならず、同意管理の側面からも考慮が必要となります。

User-Agent Client Hints APIを利用した対応策

削減されたUser-Agent情報の代替として、User-Agent Client Hints APIの利用が推奨されます。以下に、UA-CHの技術的な実装の概要を示します。

サーバーサイドでの対応(推奨ヘッダーの送信)

サーバーは、必要なClient Hintsをブラウザに要求するために、HTTPレスポンスヘッダーに Accept-CH を含めます。

HTTP/1.1 200 OK
Content-Type: text/html
Accept-CH: Sec-CH-UA-Platform, Sec-CH-UA-PlatformVersion, Sec-CH-UA-Model
Vary: Accept-CH, Sec-CH-UA-Platform, Sec-CH-UA-PlatformVersion, Sec-CH-UA-Model

この例では、サーバーはプラットフォーム(OS)、プラットフォームバージョン(OSバージョン)、デバイスモデルのヒントを要求しています。Vary ヘッダーには、レスポンスがこれらのヘッダーの値によって変わりうることを示し、キャッシュの正確性を保つために重要です。

High Entropy Client Hints(例: Sec-CH-UA-PlatformVersion, Sec-CH-UA-Model, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Architecture, Sec-CH-UA-Bitness, Sec-CH-UA-WoW64)は、デフォルトでは送信されません。これらを要求する場合、サーバーは Accept-CH に加えて、特定のオリジンに対してこれらのヒントを永続的に許可する権限ポリシーを示す必要があります。これは、HTTPヘッダーの Permissions-Policy を使用するか、または <meta> タグを使用します。

<meta http-equiv="Accept-CH" content="Sec-CH-UA-Platform, Sec-CH-UA-PlatformVersion">
<meta http-equiv="Delegate-CH" content="Sec-CH-UA-PlatformVersion https://your-analytics-domain.com">

Permissions-Policy ヘッダーまたは <meta> タグによる委譲(Delegate-CH)を使用することで、サードパーティドメイン(例: 広告測定ドメイン、分析ドメイン)でもHigh Entropy Client Hintsを受け取ることが可能になります。ただし、このメカニズムはブラウザによってサポート状況が異なる場合があり、また、ユーザーの同意やサイトの設定が影響する可能性も考慮する必要があります。

クライアントサイドでの対応(JavaScriptによる取得)

UA-CHはHTTPヘッダーとしてサーバーに送信されるのが基本ですが、JavaScriptからアクセスすることも可能です。navigator.userAgentData オブジェクトを通じてUA-CHの値を取得できます。

// Low Entropy Client Hintsの取得例
console.log(navigator.userAgentData.brands); // 例: [{brand: "Google Chrome", version: "120"}, ...]
console.log(navigator.userAgentData.mobile);  // 例: true or false
console.log(navigator.userAgentData.platform); // 例: "Android"

// High Entropy Client Hintsの取得要求例
navigator.userAgentData.getHighEntropyValues([
  "architecture",
  "model",
  "platformVersion",
  "uaFullVersion",
  "fullVersionList",
  "bitness",
  "wow64"
]).then(ua => {
  console.log(ua.architecture);
  console.log(ua.model);
  console.log(ua.platformVersion);
  console.log(ua.uaFullVersion); // 非推奨。代わりにfullVersionListを使用。
  console.log(ua.fullVersionList);
  console.log(ua.bitness);
  console.log(ua.wow64);
}).catch(error => {
  console.error("Failed to get high entropy UA hints:", error);
});

JavaScriptからHigh Entropy Client Hintsを取得する場合も、Permissions Policyによる許可が必要です。また、getHighEntropyValues() は非同期処理であるため、取得タイミングやエラーハンドリングに注意が必要です。広告スクリプトや測定タグ内でこれらの情報を利用する場合、タグが実行される前にヒントが取得できているか、または非同期取得後のコールバックで処理を行うといった設計が求められます。

実装上の考慮事項と課題

UA-CHへの移行にはいくつかの考慮事項と課題が存在します。

まとめ

ブラウザUser-Agent Reductionは、ウェブにおけるデータ収集と利用のあり方を根本的に変える動きの一つです。広告技術に関わる専門家として、この技術仕様を正確に理解し、UA-CH APIを利用した代替手法へのスムーズな移行を実現することが喫緊の課題です。

詳細なUser-Agent情報に依存したターゲティング、測定、不正対策などの機能は、UA-CHや他のプライバシー保護技術と組み合わせて再構築する必要があります。この移行は単なる技術的な改修に留まらず、取得可能なデータの範囲と粒度の変化を受け入れ、ポストCookie時代のプライバシー重視の広告エコシステムに適応するための戦略的な転換でもあります。

今後もブラウザのプライバシー関連の変更は続くと予想され、常に最新の技術仕様と法的要件を把握し、柔軟に対応していく姿勢が求められます。UA-CHの利用、そしてそれが広告技術やデータ戦略に与える影響について深く理解し、具体的な技術実装を進めることが、今後のビジネスの継続性と成長にとって不可欠となるでしょう。