用户代理泛化

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

通用用户代理表示法通过限制用于将指定浏览器或设备与其他浏览器或设备区分开来的信息,提供更强的隐私保护。

概览

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

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

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

已泛化的 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 字段:

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_COARSENED }

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

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