在竞价中出价以购买广告位

作为广告买方(DSP 和广告客户),您可能会有兴趣参与发布商网站上的 Protected Audience 广告竞价,以便将广告定位到您在广告客户网站上指定的兴趣群体。通过参与 Protected Audience 竞价,您能够以可保护隐私的方式覆盖其他网站上已识别的客户。

在 Protected Audience 竞价中,您只需提供用于生成出价的逻辑,浏览器便会使用该逻辑计算出价。这与其他竞价架构完全不同,在这种架构中,您可以直接提交出价,而不是提供逻辑。

您可以在 generateBid() JavaScript 函数中提供出价生成逻辑,该文件会托管在您的服务器上。当您将用户添加到兴趣群体后,该文件的位置会作为 biddingLogicUrl 传入兴趣群体配置。

在竞价期间,浏览器会提取 biddingLogicUrl 字段中指定的出价逻辑,并在安全隔离环境(该环境与外部上下文的通信受限)中针对每个兴趣群体执行 generateBid() 函数。执行 generateBid() 时,浏览器会将信号作为实参传递给函数。这些信号包含来自不同来源的各种信息,例如发布商的第一方数据、卖方数据、实时数据等。您可以使用这些信号来计算出价,系统会从 generateBid() 调用返回价值。提交出价后,浏览器将对每个出价执行卖方的评分逻辑,以计算卖方的受欢迎程度得分。

generateBid()

下面介绍了 generateBid() 函数的参数以及该函数返回的出价结构:


generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals, directFromSellerSignals) {
  return {
    ad: adObject,
    adCost: optionalAdCost,
    bid: bidValue,
    bidCurrency: 'USD',
    render: {
      url: renderURL,
      width: renderWidth,
      height: renderHeight
    },
    adComponents: [
      {url: adComponent1, width: componentWidth1, height: componentHeight1},
      {url: adComponent2, width: componentWidth2, height: componentHeight2},
      // ...
    ],
    allowComponentAuction: false,
    modelingSignals: 123 // 0-4095 integer (12-bits)
  };
}

参数

generateBid() 接受以下参数:

参数 角色

interestGroup

广告买方传递给的对象。可以使用 dailyUpdateUrl 更新兴趣群体。

auctionSignals

卖方传递给 navigator.runAdAuction()竞价配置参数的属性。它提供了与网页上下文(例如广告尺寸和发布商 ID)、竞价类型(最高出价或次高价格)以及其他元数据相关的信息。

perBuyerSignals

卖方传递的竞价配置参数的属性。如果卖方是对买方服务器执行实时出价调用并将响应传回的 SSP,或发布商网页直接与买方服务器联系,这样就可以提供来自买方服务器关于该网页的情境信号。如果是这样,买方可能希望在 generateBid() 内检查这些信号的加密签名,以防止篡改。

trustedBiddingSignals

一个对象,其键为兴趣组的 trustedBiddingSignalsKeys,其值在 trustedBiddingSignals 请求中返回。

browserSignals

由浏览器构建的对象,可能包含网页上下文信息(例如,卖方原本可以伪造的当前网页的 hostname)和兴趣群体本身的数据(例如,记录该兴趣群体在何时赢得竞价,以实现设备端频次上限)。

directFromSellerSignals

auctionSignalssellerSignals 不同,auctionSignalssellerSignals 可以来自执行 runAdAuction 的位置中存在的任何参与者。

浏览器信号

browserSignals 对象具有以下属性:

{
  topWindowHostname: 'publisher.example',
  seller: 'https://ssp.example',
  topLevelSeller: 'https://www.top-level-ssp.com',
  requestedSize: {width: 100, height: 200},  /* if specified in auction config */
  joinCount: 3,
  recency: 3600000,
  bidCount: 17,
  prevWinsMs: [[timeDeltaMs1,ad1],[timeDeltaMs2,ad2],...],
  wasmHelper: ...
  dataVersion: 1,
  adComponentsLimit: 40
}
属性 说明

topWindowHostname

进行 runAdAuction() 调用的主机名。

seller

向其提交出价的卖方。在组件竞价中,此值为组件卖方。

topLevelSeller

参与组成部分竞价的顶级卖方,仅参与组成部分竞价。

requestedSize

requestedSize 属性会建议用于竞价的帧大小。卖方在竞价配置中设置请求的尺寸,generateBid() 中的出价方可以使用该值。参与竞价的出价方可以为广告选择不同的内容尺寸,系统会对生成的尺寸进行视觉缩放,使其适合元素的容器尺寸。

joinCount

joinCount 字段是指此设备在过去 30 天内在持续存储兴趣群体(即,由于退出计划或成员资格过期而在设备上存储此兴趣群体的空档)加入此兴趣群体的次数。

recency

recency 字段是指从此设备加入此兴趣群体到现在的持续时间(以分钟为单位)

bidCount

相应兴趣群体提交出价的次数。

prevWinsMs

prevWinMs 字段包含兴趣群体的胜出广告,以及距离它们之前的胜出广告的时间(以毫秒为单位)。请注意,此处的广告对象仅包含 renderURL 和元数据字段。

wasmHelper

一个基于兴趣群体 biddingWasmHelperURL 的 WebAssembly.Module 对象。

dataVersion

买方键值对服务响应的数据版本值。

adComponentsLimit

generateBid() 可能返回的广告组件数量已达上限

计算出价

为了计算出价值,generateBid() 中的代码可以使用函数参数的属性。

例如:

function generateBid(interestGroup, auctionSignals, perBuyerSignals,
    trustedBiddingSignals, browserSignals) {
  return {
   //  ...
    bid: auctionSignals.is_above_the_fold ? perBuyerSignals.atf_value : perBuyerSignals.btf_value,
    // ...
  }
}

返回出价

generateBid() 会返回具有以下属性的对象:

属性 角色
ad 有关广告的任意元数据,例如卖方希望了解的有关此出价或广告素材的信息。卖方会在其竞价和决策逻辑中使用这些信息。
adCost 一个数值,用于将报告的广告客户点击或转化费用从 generateBid 传递给 reportWin。此数字的精度限制为 8 位尾数和 8 位指数,所有舍入均随机执行。
adComponents 一个可选列表,包含用于由多个部分组成的广告的最多 20 个组件,提取自传递给 navigator.joinAdInterestGroup() 的兴趣群体参数的 adComponents 属性。
allowComponentAuction 指示此出价是否可以用于组成部分竞价的布尔值。默认值为“false”。
bid 将会参与竞价的数字出价。卖方必须能够比较不同买方的出价,因此出价必须采用卖方选择的单位(例如“每千次美元”)。如果出价为零或负数,则此兴趣群体将根本不会参与卖方的竞价。通过这种机制,买方可以实施任何广告客户规则,指定广告可能展示的位置,也可能不会展示。
bidCurrency 出价所用的币种,用于currency-checking
render 描述在此出价赢得竞价时应呈现的广告素材的字典。其中包括:
<ph type="x-smartling-placeholder">
    </ph>
  • url:广告素材的网址。
  • width:广告素材的宽度。该尺寸将与兴趣群体中的声明相匹配,并被替换为广告素材网址中出现的任何广告尺寸宏。当广告在围栏框架中加载时,围栏框架的内框架(即广告素材可见的尺寸)会冻结为该尺寸,并且无法看到嵌入器对框架尺寸所做的更改。
  • height:广告素材的高度。请参阅 width 中的详细说明。

modelingSignals

一个介于 0 到 4095 之间的整数(12 位),有噪声(如噪声和分桶方案中所述),并传递给 reportWin()。无效值(例如,负数、无限值和 NaN 值)将被忽略,并且不会传递。系统只会传递最低的 12 位。


买方可以使用 generateBid() 函数中提供的信号(包括在 userBiddingSignals 创建兴趣组时捕获的第一方买方数据中的数据)来获取一些值,并将其传递给买方的胜出报告函数,以启用机器学习模型训练。