用户代理 标头过去一直包含在出价请求中,以提供有用的 定位数据,例如发起设备的浏览器和平台。不过, 由于用户代理使用起来困难,浏览器通常会对用户代理进行大量隐去处理, 更好地保护用户隐私。针对这一问题,Google 支持 用户代理客户端提示,包括 包含在出价请求中,以作为 User-Agent 标头的补充。 这些客户端提示(简称)可以来自 Sec-Ch-UA* 标头或 。
根据所使用的协议,用户代理标头会随 以下字符串字段:
- OpenRTB:
BidRequest.device.ua
- Google RTB(已弃用):
BidRequest.user_agent
UserAgent
消息将使用客户端提示填充
但会由系统根据从
用户代理标头。根据所使用的协议,该记录会显示为一个
以下字段之一:
- OpenRTB:
BidRequest.device.sua
- Google RTB(已弃用):
BidRequest.user_agent_data
强烈建议出价方使用 UserAgent
消息,而不是
用户代理字符串。
UserAgent
的填充方式
与用户代理标头不同,UserAgent
消息表示用户代理
分解为多个字段的信息。
根据广告请求中是否有客户端提示,
UserAgent
消息可以通过以下方式填充:
- 如果请求包含
低熵
客户端提示,系统会根据其内容填充
UserAgent
。 - 如果请求仅包含 User-Agent 标头,则
UserAgent
为 根据从标头中解析出的内容进行填充。
示例:根据用户代理标头填充 UserAgent
假设有一项广告请求,浏览器会发送以下标头:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
仅基于 User-Agent 标头填充的 UserAgent
可能如下所示:
以下:
browsers: [{ brand: "Mozilla", version: ["5", "0"] },
{ brand: "AppleWebKit", version: ["537", "36"] },
{ brand: "Chrome", version: ["103", "0", "0", "0"] },
{ brand: "Safari", version: ["537", "36"] }],
platform: { brand: "Windows NT", version: ["10", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
model: "x64",
source: USER_AGENT_STRING
示例:根据客户端提示填充 UserAgent
假设有一项广告请求,浏览器会发送以下标头:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Sec-Ch-Ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"
Sec-Ch-Ua-Arch: x86
Sec-Ch-Ua-Full-Version: 103.0.5060.134
Sec-Ch-Ua-Mobile: ?0
Sec-Ch-Ua-Platform: Windows
Sec-Ch-Ua-Platform-Version: 15.0.0
如果至少包含了低熵客户端提示,则 UserAgent
会根据这些标头的内容进行填充,即使 User-Agent
标头。如下所示:
browsers: [{ brand: ".Not/A)Brand", version: ["99", "0", "0", "0"] },
{ brand: "Google Chrome", version: ["103", "0", "5060", "134"] },
{ brand: "Chromium", version: ["103", "0", "5060", "134"] }],
platform: { brand: "Windows", version: ["15", "0", "0"] },
mobile: false,
architecture: "x86",
bitness: "64",
source: CLIENT_HINTS_HIGH_ENTROPY
根据用户代理标头填充与根据客户端提示进行填充
某些字段的填充方式有所不同,具体取决于它们是基于 用户代理标头或客户端提示下面简要介绍了 差异:
- 对于相同的浏览器和平台,
UserAgent.browsers.brand
和UserAgent.platform.brand
通常会因以下因素而异:UserAgent
用户代理标头或客户端提示例如: 如果UserAgent.platform.brand
基于以下元素,则可能会显示为“Windows NT”: 用户代理标头或“Windows”(如果基于客户端提示)。 - 某些
UserAgent.browsers
条目对于用户代理标头是唯一的,或者 客户端提示。例如,如果UserAgent
,系统会显示“AppleWebKit” 基于 User-Agent 标头,而“Chromium”则只会显示 如果基于 Client Hints。 - 只有基于 User-Agent 标头的
UserAgent
可以包含冻结值。 例如,如果平台为 Windows 11 22H2,UserAgent.platform.brand
将设置为“Windows NT”;UserAgent.platform.version
会设为[“10”, “0”]
,因为 任何等于或高于 10 的 Windows 版本的冻结值。
UserAgent
中基于客户端提示的数据通常不会是
对已冻结或隐去信息的信息进行替换不准确。如果存在
基于客户端的 User-Agent 标头和 UserAgent
之间不一致
提示:应首选来自 UserAgent
的信息。
UserAgent 对象字段
本部分将对各个字段进行总结,重点关注 Google 实时出价 (RTB) 专用字段 行为和最佳做法。
浏览器
包含一系列
BrandVersion
这些条目通常按具体程度进行排序 例如,假如您要
列出 browsers
的内容,系统可能会显示每个条目的 brand
依次为:
品牌 | 含义 |
Mozilla | 与 Mozilla 兼容 |
AppleWebKit | 基于 AppleWebKit,属于 Mozilla 的一部分。 |
Chrome | Chrome 浏览器、部分兼容 AppleWebKit 的浏览器 |
Safari | 桌面版和移动版相对。 |
UserAgent
并不总是以任何特定顺序列出浏览器,尤其是
如果基于 Client Hints。下面介绍了
根据 source
的值,您应会看到:
USER_AGENT
:version
字段可能会缩减为某个主要版本,或者 已冻结(取决于代理专用政策)。请注意, 表明该值已冻结。CLIENT_HINTS_LOW_ENTROPY
和CLIENT_HINTS_HIGH_ENTROPY
:条目是 不按任何条件排序;例如,同一个浏览器 每个请求中按不同顺序排列的条目数。它们可能还包含 GREASE 条目, 。CLIENT_HINTS_HIGH_ENTROPY
:浏览器中的所有version
字段均可为 设为完整版。
平台
BrandVersion
描述平台的条目此类型可能与用户代理不兼容
标头和客户端提示,因此针对某些平台可能需要测试
两个名称。例如,Apple 的 Macintosh 操作系统标识为
User-Agent 标头中的“Macintosh”,但“Client Hints”中的“macOS”。
下面介绍了根据不同条件和政策,
source
的值:
USER_AGENT
:version
字段可能会缩减为某个主要版本,或者 已冻结。请注意,系统不会显示该值已被冻结。CLIENT_HINTS_LOW_ENTROPY
:version
字段将不会填充。CLIENT_HINTS_HIGH_ENTROPY
:version
字段可设为完整的 版本。
移动设备
指明广告等内容是否应针对小屏幕进行优化和/或 触控输入。请注意,这不一定表示设备类型 可以对移动浏览器进行相应配置,以请求访问“桌面版网站”。
架构
标识平台的架构,如“x86”或“arm”。
请注意,对于基于客户端提示的 UserAgent
,此字段仅会填充
当 source
设置为 CLIENT_HINTS_HIGH_ENTROPY
时。
位数
标识平台的位数,例如是 32 位还是 64 位 CPU。此字段是一个整数字符串,用于提供 架构;例如,“x86”架构可将位数设为 “32”或“64”。
请注意,对于基于客户端提示的 UserAgent
,此字段仅会填充
当 source
设置为 CLIENT_HINTS_HIGH_ENTROPY
时。
型号
标识设备型号。对于移动设备,即非笔记本电脑或 将填充型号名称,如“Pixel 6 Pro”。
下面介绍了在设置不同政策时,您可能会看到的
source
的值:
USER_AGENT
- 非移动设备:
model
字段通常包含 架构和位数值,例如 Windows 的“x64”。该值为 不跨平台;例如,Linux 可能会将“x86_64” 硬件。 - 移动设备:此字段将不包含架构和位数。
如果您对这些值感兴趣,请参阅
UserAgent.architecture
和UserAgent.bitness
。
- 非移动设备:
CLIENT_HINTS_LOW_ENTROPY
:model
字段将不会填充。CLIENT_HINTS_HIGH_ENTROPY
:系统仅会针对以下情况填充model
字段: 移动设备的设备型号。没有针对桌面平台设置任何值。
来源
标识用于创建 UserAgent
的标头。对于客户端提示
这也区分了以下两种情况:
CLIENT_HINTS_LOW_ENTROPY
:只提供基本的客户端提示。CLIENT_HINTS_HIGH_ENTROPY
:有客户端提示,至少包括 一个分类为高熵的字段。