归因报告 API

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

实验性: 这是一项实验性技术
在生产中使用此技术之前,请仔细检查浏览器兼容性表格

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

Attribution Reporting API 使开发者能够衡量转化——例如,用户在一个网站上点击广告,然后在广告商网站上购买商品——然后访问这些转化的报告。它通过不依赖第三方跟踪 Cookie 来实现这一点。

概念与用法

广告商通常希望衡量有多少用户看到广告,然后又去查看和购买产品(转化)。这使他们能够找出哪些广告位能带来最大的投资回报率 (ROI),从而相应地调整其广告策略。衡量转化的过程通常包括捕获以下数据:

  • 哪些用户发生了转化(例如,购买了商品或注册了服务),以及有多少。
  • 他们所在的地理区域。
  • 广告投放的网站。
  • 售出了多少产品、注册了多少服务等。
  • 产生了多少收入。

传统上,在网络上,转化一直使用第三方跟踪 Cookie 来衡量。广告通常会嵌入在网页的 <iframe> 中,该 iframe 可以设置一个包含用户及其与广告交互信息的 Cookie。

稍后,当用户决定访问广告商的网站时,只要该网站与广告来自同一域,该网站就可以访问之前由广告设置的第三方 Cookie。然后,广告商可以将广告数据与他们自己的第一方数据关联起来,以回答“用户在与另一个网站上的广告互动后是否购买了产品?”之类的问题。

这对用户 隐私 非常不利。此时,来自同一域的任何页面都可以访问该 Cookie,以及嵌入这些页面的网站的信息。令人惊讶的是,有大量方都可以访问这些数据,并根据用户的浏览习惯推断出其他用户数据。

Attribution Reporting API 提供了一种以保护用户隐私的方式来衡量广告转化的方法。

它是如何工作的?

让我们通过一个例子来说明 Attribution Reporting API 的工作原理。

假设我们有一个在线商店 shop.example(广告商),它在其内容网站 news.example(发布商)上嵌入了其产品的广告。广告内容位于 ad.shop.example

在线商店老板希望衡量用户与广告互动、查看其网站上的产品页面并将其添加到购物车后获得的转化次数。

Image representation of the steps described below

涉及的步骤如下:

  1. 当用户访问 news.example 网站时,可以为用户与嵌入广告的特定互动注册一个归因来源 (attribution source)。用户可以通过多种方式与页面上的广告互动。为了使广告互动能够注册归因来源,广告必须发送一个带有 Attribution-Reporting-Eligible 标头的请求,以表明响应有资格注册归因来源。如果响应包含合适的 Attribution-Reporting-Register-Source 标头,则注册将完成。归因来源可以是,例如:
    • 一个链接。在这种情况下,互动是用户点击链接(直接通过 <a> 元素,或通过 Window.open() 调用)。源是通过导航请求的响应注册的。
    • 一张图片,例如广告横幅或 1x1 的透明跟踪像素。在这种情况下,互动是用户访问页面。当图片加载时,即服务器响应图片请求时,源就会被注册。
    • 一个 fetch 请求(即 fetch()XMLHttpRequest)。在这种情况下,互动可以指定为适合您应用的任何内容——例如,fetch 请求可以由 clicksubmit 事件触发。响应返回后,源就会被注册。
  2. 当归因来源互动发生时,Attribution-Reporting-Register-Source 标头中返回的源数据会存储在浏览器只能访问的私有本地缓存中。这些数据包括页面和广告商可用的上下文和第一方数据、收集转化数据的广告技术公司的来源,以及您期望该广告转化发生的(一个或多个)目标(eTLD+1)(即广告商的网站,例如 shop.example)。
  3. 当用户稍后访问 shop.example 时,该网站可以在互动表明发生转化时(例如,用户点击 shop.example 上的“添加到购物车”按钮)注册一个归因触发器 (attribution trigger)。浏览器随后会发送一个带有 Attribution-Reporting-Eligible 标头的请求,以表明响应有资格注册归因触发器,如果响应包含合适的 Attribution-Reporting-Register-Trigger 标头,则注册将完成。归因触发器可以是,例如:
    • 一张图片,例如购物车图标或 1x1 的透明跟踪像素。在这种情况下,互动是用户访问页面。当图片加载时,即服务器响应图片请求时,触发器就会被注册。
    • 一个 fetch 请求(即 fetch()XMLHttpRequest)。在这种情况下,互动可以指定为适合您应用的任何内容——例如,fetch 请求可以由 clicksubmit 事件触发。响应返回后,触发器就会被注册。
  4. 当归因触发器完成时,浏览器会尝试将 Attribution-Reporting-Register-Trigger 标头中的数据与私有本地缓存中保存的源数据条目进行匹配(参见 2.)。有关匹配方法和要求,请参阅 Registering attribution triggers
  5. 如果匹配成功,浏览器会将报告数据发送到一个通常由广告技术提供商拥有的报告服务器上的端点,在那里可以安全地进行分析。与 Cookie 不同,数据仅可供您发送到的特定网站访问——不会与其他任何地方共享。这些报告可以是:
    • 事件级报告 (Event-level reports):基于归因来源事件的报告,其中详细的来源数据与粗略的触发器数据相关联。例如,报告可能看起来像“ad.shop.example 上的点击 ID 200498 导致了 shop.example 上的购买”,其中“点击 ID 200498”是详细的来源数据,“购买”是粗略的触发器数据。详细的来源数据可能编码来自源页面的第一方或上下文数据,触发器数据可能编码来自触发页面的事件。
    • 汇总报告 (Summary reports):更详细的报告,将来自源端和触发端的多个转化数据组合在一起。例如,“news.example 上的广告系列 ID 774653 导致 shop.example 上的小部件销售了 654 件,来自意大利的用户,总收入为 9540 美元。”编译汇总报告需要使用聚合服务(例如,请参阅 Google aggregation service)。

有关实现上述步骤所需功能的更多信息,请参阅:

  1. 注册归因源
  2. 注册归因触发器
  3. Generating reports

接口

Attribution Reporting API 本身不定义任何独特的接口。

其他接口的扩展

HTMLAnchorElement.attributionSrc, HTMLImageElement.attributionSrc, HTMLScriptElement.attributionSrc

attributionSrc 属性允许您以编程方式获取和设置 <a><img><script> 元素上的 attributionsrc 属性。它反映了该属性的值。

fetch()Request() 构造函数,attributionReporting 选项

当通过 fetch() 生成请求时,这表示您希望响应能够注册归因来源或触发器。

XMLHttpRequest.setAttributionReporting()

当通过 XMLHttpRequest 生成请求时,这表示您希望响应能够注册归因来源或触发器。

Window.open()attributionsrc 功能关键字

导致归因来源的注册完成,open() 方法完成时触发浏览器存储相关的来源数据(如 Attribution-Reporting-Register-Source 响应标头中提供的)。请注意,Window.open() 调用不能用于注册归因触发器。

HTML 元素

<a>, <img>, 和 <script>attributionsrc 属性

指定您希望浏览器随相关的资源请求一起发送 Attribution-Reporting-Eligible 标头。在服务器端,此标头用于触发响应中发送 Attribution-Reporting-Register-SourceAttribution-Reporting-Register-Trigger 标头。在注册归因来源时,这是必需的;在注册归因触发器时,仅当您希望为 src 属性指向的资源指定一个单独的注册服务器时,才需要它。请注意,<a> 元素不能用于注册归因触发器。

HTTP 标头

Attribution-Reporting-Eligible

HTTP 请求,表示相应的响应有资格注册归因来源或触发器。

Attribution-Reporting-Register-Source

HTTP 响应,将页面功能注册为归因来源。这是包含在对包含 Attribution-Reporting-Eligible 标头的请求的响应中。

Attribution-Reporting-Register-Trigger

HTTP 响应,将页面功能注册为归因触发器。这是包含在对包含 Attribution-Reporting-Eligible 标头的请求的响应中。

Permissions-Policy attribution-reporting 指令

控制当前文档是否允许使用归因报告。

注册和本地测试

要在您的网站中使用 Attribution Reporting API,您必须在 隐私沙盒注册流程中指定它。如果这样做,API 流将在响应时被阻止,即忽略响应标头,并且不会注册来源和触发器。

您仍然可以在注册而无需注册的情况下在本地测试您的 Attribution Reporting API 代码。要允许本地测试,请启用以下 Chrome 开发者标志:

chrome://flags/#privacy-sandbox-enrollment-overrides

示例

有关实现示例,请参阅 Demo: Attribution Reporting API(另请参阅 源代码)。

规范

规范
归因报告
# element-attrdef-a-attributionsrc

浏览器兼容性

另见