用户代理泛化

如果发布商或用户需要增强隐私保护措施,Google 可能会减少在用户代理字段中提供的信息量。减少信息后,这些用户代理表示法会被视为概括性表示法。

经过泛化处理的用户代理表示法会限制可能将某一浏览器或设备与其他浏览器或设备区分开来的信息,从而提供更高级别的隐私保护。

概览

出价请求包含两种用户代理信息表示法:BidRequest.device.ua 中找到的 User-Agent 字符串,以及 BidRequest.device.sua 中找到的 UserAgent 对象。这两个字段都包含请求的用户代理 HTTP 标头提供的信息。

非泛化用户代理可以包含精细的浏览器版本、操作系统版本及其他详细数据,这些数据在用户代理的泛化形式中会被缩减。

泛化对于浏览器和设备类型检测是向后兼容的。出价请求会指明用户代理字段是否已在 BidRequest.ext.privacy_treatments 中进行泛化处理。

泛化 UserAgent 对象

在泛化 UserAgent 中,通过将所有 browser 条目和 platform 中的 version 字段中的所有更精细的版本组件替换为零,将这些字段缩减为仅包含主要版本。系统不会移除 UserAgent 对象中的任何其他信息。

以下示例比较了 UserAgent.browser 的原始内容与其泛化形式:

原始 brand: "Chrome" version: ["96", "0", "4664", "92"]

泛化brand: "Chrome" version: ["96", "0", "0", "0"]

Google 并不总是概括浏览器和平台版本,尤其是在浏览器冻结完整版本时。例如,UserAgent.browser 的以下值将不会被修改:brand: "AppleWebKit" version: ["537", "36"]

UserAgent 对象被泛化后,出价请求还包含 PrivacyTreatments 对象中的 user_agent_data 字段:

BidRequest.ext.privacy_treatments: { user_agent_data: USER_AGENT_DATA_COARSENED }

泛化 User-Agent 字符串

在通用的 User-Agent 字符串中,浏览器和平台标识符会缩减为仅包含主要版本。例如,"Chrome/96.0.4664.92" 会变为 "​​Chrome/96.0.0.0"。冻结的版本组件(例如 "AppleWebKit/537.36")会保留。这些更改与我们为 UserAgent 对象所做的更改等效。

User-Agent 字符串特有的某些详细信息或非标准元素也可能会被隐去,例如设备的 build 或固件版本,或者通常添加在字符串末尾的特定应用数据。

以下示例比较了 User-Agent 字符串的原始内容与其泛化形式:

原始 Mozilla/5.0 (Linux; Android 11; M2007J20CG Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/96.0.4664.92 Mobile Safari/537.36 [MyApp:CustomSignals:ABC123]

泛化Mozilla/5.0 (Linux; Android 11; M2007J20CG; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/96.0.0.0 Mobile Safari/537.36

User-Agent 字符串进行泛化后,出价请求中的 PrivacyTreatments 对象中会包含 user_agent 信号:

BidRequest.ext.privacy_treatments: { user_agent: USER_AGENT_COARSE }

Google 使用类似的方法对 User-Agent 字符串和 UserAgent 对象进行泛化。因此,泛化 User-Agent 字符串和泛化 UserAgent 对象包含的信息量大致相同。