用户代理泛化

如果发布商或用户需要加强隐私保护,Google 可能会 减少用户代理字段中提供的信息量。当 因此系统会将这些用户代理表示法视为 泛化处理。

广义的用户代理表示法可通过以下方式增强隐私保护: 可能会将特定浏览器或设备与 其他浏览器或设备。

概览

出价请求中包含两种形式的用户代理信息: User-Agent 字符串和 UserAgent 对象 (Google 协议OpenRTB). 这两个字段都包含相应请求的用户代理提供的信息 HTTP 标头。

非通用化用户代理可以包含精细的浏览器和操作系统 以及以泛化形式缩减过来的详细数据, 用户代理。

泛化可向后兼容进行浏览器和设备类型检测。 出价请求会指明用户代理字段是否已泛化 PrivacyTreatments 字段(Google 协议OpenRTB).

已泛化的 UserAgent 对象

在通用的 UserAgent 中,所有 browser 条目中的 version 字段 从 platform 缩减为仅包含主要版本, 用零替换任何更精细的版本组件。无其他信息 UserAgent 对象中的 Pod 被移除。

以下示例将 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 字段:

Google 协议 BidRequest.privacy_treatments: { user_agent_data: USER_AGENT_DATA_COARSENED }

OpenRTB 协议 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 信号:

Google 协议 BidRequest.privacy_treatments: { user_agent: USER_AGENT_COARSE }

OpenRTB 协议 BidRequest.ext.privacy_treatments: { user_agent: USER_AGENT_COARSE }

Google 使用类似的方法来泛化 User-Agent 字符串和 UserAgent 对象。因此,通用的 User-Agent 字符串和 通用的 UserAgent 对象都携带了类似数量的信息。