用户代理泛化

如果发布商或用户需要增强隐私保护,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 对象携带的信息量相似。