私密点击测量
防止转化欺诈和替代跟踪像素

欢迎阅读私密点击测量(Private Click Measurement)的第四次功能更新,这是我们提议的网络标准,用于以保护隐私的方式衡量广告效果。更准确地说,PCM有三项重大更新和两项次要更新,所有这些都已在 iOS/iPadOS 15.4 和 macOS Monterey 12.3 中提供。

主要更新

  • 防止转化欺诈。这使得商家网站能够签署不可关联的令牌,并在归因报告中获得证明,表明其是由可信的转化事件触发的。
  • 替代第三方跟踪像素。商家网站现在可以通过同站像素触发转化事件,从而无需在 PCM 中调用任何第三方。
  • 跨站 iframe 中点击的测量。许多发布商希望将网站上的广告隔离在跨站 iframe 中。现在,此类 iframe 中的点击也可以被测量。

什么是私密点击测量?

私密点击测量(Private Click Measurement,简称 PCM)是一项提议的网络标准,用于以保护隐私的方式衡量点击广告的有效性。它允许将点击来源网站的8位数据与点击目标网站的4位数据结合起来,以测量哪些点击正在促成转化。这8+4位组合数据将以归因报告的形式发送到点击来源和目标方,且不包含任何用户或设备标识符。最终结果是一份报告,显示“在网站A上点击了广告X的用户,后来在网站B上实现了价值Y的转化。”

PCM 于 2019 年 5 月作为测试版发布,并于 2021 年随 iOS/iPadOS 14.5 和 macOS 上的 Safari 14.1 一同推出。其保护隐私的特性意味着,根据 AppTrackingTransparency,无需获取用户许可即可使用它进行跟踪。

防止转化欺诈

2021 年 7 月,我们展示了 PCM 中用于防止点击欺诈的测试版功能。它允许点击来源网站在点击导航时签署一个不可关联的令牌,从而使一个已签名的令牌包含在生成的归因报告中。今天,我们为点击目标网站提供了相同的功能。

PCM 的触发事件是重定向到知名路径 .well-known/private-click-measurement/trigger-attribution/。现在该重定向支持一个名为 attributionDestinationNonce 的查询字符串参数。如果在重定向中包含一个 nonce,它将触发 WebKit 请求点击目标服务器签署一个不可关联的令牌。

步骤 1:生成 RSA 密钥对

不可关联的令牌需要一个用于令牌生成和验证的公钥,以及一个相应的用于签名的私钥。PCM 支持三种不同的 RSA 密钥大小:2048、3072 和 4096 位。公钥的预期编码是 Base64URL 编码(使用 RFC4648 第 5 节)的 SPKI,带有 RSA-PSS OID 和与 RSABSSA IETF 草案相对应的参数。此类密钥编码的示例包含在早期博客文章中。

步骤 2:添加查询参数 attributionDestinationNonce

触发事件应如下所示,以选择加入转化欺诈预防

https://site.example/some/sub/resource/
… 重定向到 …
https://site.example/.well-known/private-click-measurement/trigger-attribution/11?attributionDestinationNonce=ABCDEFabcdef0123456789

attributionDestinationNonce 仅用于帮助点击目标服务器了解其正在签署不可关联令牌的上下文。当点击目标服务器被要求签署不可关联令牌时,它将获得 attributionDestinationNonce,并可以决定触发事件是否可信。

attributionDestinationNonce 必须是 Base64URL 编码的 128 位/16 字节值。任何更小或更大的值都将取消防欺诈签名的发行流程。任何非 Base64URL 编码的值也将取消令牌交易。如果 attributionDestinationNonce 格式错误,Web Inspector 将记录警告。

步骤 3:响应您的公钥请求

浏览器和任何验证方需要能够随时从这个知名位置获取您的公钥:https://clicksource.example/.well-known/private-click-measurement/get-token-public-key/

替代第三方跟踪像素

之前版本的 PCM 要求点击目标网站上的 HTTP 请求发送到点击来源网站。这是为了在跟踪预防下,能够复用不再携带 cookie 的现有跨站跟踪像素

对于 PCM 的新采用,例如接入显示广告的新发布商网站,无需添加此类旧式像素。从长远来看,我们希望取消通过跨站跟踪像素触发事件的支持,因为即使它们不携带 cookie,它们也会向可能被归类为跟踪器的第三方域发送请求。许多网站希望完全摆脱跟踪器,我们很高兴能够通过 PCM 支持这一点,同时仍然允许跨网站的点击测量。

点击目标网站现在可以通过同站像素发出触发事件的信号。如下所示。

同站子资源请求至
https://clickDestination.example/triggeringEventRedirect/21

… 重定向到同站知名位置
https://clickDestination.example/.well-known/private-click-measurement/trigger-attribution/21?attributionSource=https://clickSource.example

上述重定向告知 PCM,如果存在来自 clickSource.example 的待处理归因,则安排一份归因报告。

您可能会问,为什么不使用 JavaScript API 在没有跨站像素的情况下触发归因呢?原因有二:

  • W3C Privacy CG 中的标准讨论告诉我们,一些点击目标网站有反对在其网站上放置第三方脚本的政策,因为这会引入风险依赖。我们认为这是一个非常有效的顾虑,尤其是在用户隐私方面。然而,这些点击目标网站对像素并没有相同的严格政策。通过引入同站像素,我们可以为它们提供所需的 API 功能。它们可以通过实际的图像元素或通过 JavaScript Fetch 触发。
  • 我们仍然认为非常重要的一点是,网站在页面加载时,不应能判断用户是否启用了 PCM(或其他广告测量)功能。这是为了保护用户的选择权。像素 API 不会透露触发事件是否被接受。JavaScript API 也可以做到不透露该信息,但像素 API 正是为此而设计的。

跨站 iframe 中点击的测量

来自网络社区的首批 PCM 变更请求之一是允许测量发生在跨站 iframe 中的点击。这将允许测量隔离在 iframe 中的广告。我们很高兴地宣布,我们现在支持此功能。请注意,最终的归因报告仍会发送给两个第一方网站,通常称为发布商和商家。

WebIDL 属性现在使用驼峰命名法

JavaScript 访问 PCM 的锚点标签属性现在需要使用驼峰命名法。这是网络标准互操作性工作的结果。示例如下:

<a id="test" href="https://clickDestination.example" attributionsourceid=40 attributiondestination="https://clickDestination.example"></a>
<script>
    const anchorTag = document.getElementById("test");
    anchorTag.attributionSourceId …;
    anchorTag.attributionDestination …;
</script>

令牌密钥的编码更新

将您的公钥发送到浏览器时,它需要是一个 2048、3072 或 4096 位 RSA 公钥,并以 ASN1 格式封装 RSAPSS OID。请参阅上文“步骤 1:生成 RSA 密钥对”。然后这些字节需要使用URL 和文件名安全字母进行 base64 编码。此类密钥编码的示例包含在早期博客文章中。