用户代理定位

用户代理 标头过去一直包含在出价请求中,以提供有用的 定位数据,例如发起设备的浏览器和平台。不过, 由于用户代理使用起来困难,浏览器通常会对用户代理进行大量隐去处理, 更好地保护用户隐私。针对这一问题,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.brandUserAgent.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_AGENTversion 字段可能会缩减为某个主要版本,或者 已冻结(取决于代理专用政策)。请注意, 表明该值已冻结。
  • CLIENT_HINTS_LOW_ENTROPYCLIENT_HINTS_HIGH_ENTROPY:条目是 不按任何条件排序;例如,同一个浏览器 每个请求中按不同顺序排列的条目数。它们可能还包含 GREASE 条目, 。
  • CLIENT_HINTS_HIGH_ENTROPY:浏览器中的所有 version 字段均可为 设为完整版。

平台

BrandVersion 描述平台的条目此类型可能与用户代理不兼容 标头和客户端提示,因此针对某些平台可能需要测试 两个名称。例如,Apple 的 Macintosh 操作系统标识为 User-Agent 标头中的“Macintosh”,但“Client Hints”中的“macOS”。 下面介绍了根据不同条件和政策, source 的值:

  • USER_AGENTversion 字段可能会缩减为某个主要版本,或者 已冻结。请注意,系统不会显示该值已被冻结。
  • CLIENT_HINTS_LOW_ENTROPYversion 字段将不会填充。
  • CLIENT_HINTS_HIGH_ENTROPYversion 字段可设为完整的 版本。

移动设备

指明广告等内容是否应针对小屏幕进行优化和/或 触控输入。请注意,这不一定表示设备类型 可以对移动浏览器进行相应配置,以请求访问“桌面版网站”。

架构

标识平台的架构,如“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.architectureUserAgent.bitness
  • CLIENT_HINTS_LOW_ENTROPYmodel 字段将不会填充。
  • CLIENT_HINTS_HIGH_ENTROPY:系统仅会针对以下情况填充 model 字段: 移动设备的设备型号。没有针对桌面平台设置任何值。

来源

标识用于创建 UserAgent 的标头。对于客户端提示 这也区分了以下两种情况:

  • CLIENT_HINTS_LOW_ENTROPY:只提供基本的客户端提示。
  • CLIENT_HINTS_HIGH_ENTROPY:有客户端提示,至少包括 一个分类为高熵的字段。