智能跟踪预防
网络作为平台能否成功,取决于用户的信任。许多用户认为,当他们被跟踪,并且其网络活动的隐私敏感数据在未经他们同意的情况下被获取时,这种信任就被打破了。
WebKit 长期以来一直包含减少跟踪的功能。从一开始,我们就默认阻止第三方 Cookie。现在,我们正在此基础上进行构建。智能跟踪预防是 WebKit 的一项新功能,通过进一步限制 Cookie 和其他网站数据来减少跨站点跟踪。
什么是跨站点跟踪和第三方 Cookie?
网站可以从其自身域以外的域获取图像和脚本等资源。这被称为跨源或跨站点加载,是网络的一项强大功能。然而,这种加载也使得对用户的跨站点跟踪成为可能。
想象一个用户,他首先在 example-products.com 浏览新奇小工具,然后又在 example-recipies.com 浏览晚餐食谱。如果这两个网站都从 example-tracker.com 加载资源,并且 example-tracker.com 在用户的浏览器中存储了 Cookie,那么 example-tracker.com 的所有者就能知道用户访问了产品网站和食谱网站,他们在这两个网站上做了什么,使用了哪种网络浏览器等等。这就是所谓的跨站点跟踪,而 example-tracker.com 使用的 Cookie 被称为第三方 Cookie。在我们的测试中,我们发现一些热门网站有超过 70 个这样的跟踪器,所有这些都在悄悄地收集用户数据。
智能跟踪预防如何工作?
智能跟踪预防收集资源加载以及用户交互(例如轻触、点击和文本输入)的统计数据。这些统计数据会根据顶级私有域或 TLD+1 进行分类。
机器学习分类器
基于收集的统计数据,机器学习模型用于对哪些顶级私有域具有跨站点跟踪用户能力进行分类。在收集的各种统计数据中,有三个向量基于当前的跟踪实践,显示出强大的分类信号:唯一域下的子资源数量、唯一域下的子帧数量,以及重定向到的唯一域数量。所有数据收集和分类都在设备上进行。
分类后采取的行动
假设智能跟踪预防将 example.com 归类为具有跨站点跟踪用户能力。从那时起会发生什么?
如果用户在过去 30 天内未与 example.com 互动,则 example.com 的网站数据和 Cookie 将立即被清除,如果添加新数据,将继续被清除。
然而,如果用户与 example.com 作为顶级域(通常被称为第一方域)进行交互,智能跟踪预防会将其视为用户对该网站感兴趣的信号,并暂时调整其行为,如下图所示的时间轴。

如果用户在过去 24 小时内与 example.com 互动过,那么当 example.com 是第三方时,其 Cookie 将可用。这允许了“使用我的 X 账户在 Y 登录”的场景。
这意味着用户只能拥有他们实际交互过的网站的长期持久性 Cookie 和网站数据,并且在他们浏览网页时,跟踪数据会被主动删除。
分区 Cookie
如果用户在过去 30 天内与 example.com 互动过,但最近 24 小时没有,example.com 可以保留其 Cookie,但它们将被分区。分区意味着第三方每个顶级私有域或 TLD+1 会获得唯一、隔离的存储空间,例如 account.example.com 和 www.example.com 共享 example.com 分区。
这确保了用户即使偶尔访问某个网站也能保持登录状态,同时限制了 Cookie 用于跨站点跟踪。请注意,WebKit 已经为所有第三方域分区了缓存和 HTML5 存储。
这对 Web 开发人员意味着什么?
通过智能跟踪预防,WebKit 在用户隐私和网站对设备上存储的需求之间取得了平衡。尽管如此,我们意识到此功能可能会给合法的网站存储(即不用于跨站点跟踪的存储)带来挑战。如果遇到此类情况,请告知我们,我们将尽力提供帮助(联系方式见本博客文章末尾)。
为了帮助您开始,这里有一些指南。
存储需要用户交互
请检查确保您没有依赖 Cookie 和其他存储来持久化数据,如果用户不定期直接与您的网站交互的话。要求用户交互涵盖了客户端存储的大多数合法用途。它还提供了更好的透明度,并赋予用户更多控制权,决定谁可以在他们的设备上存储数据。
网站分析
请确保配置您的网站分析,使其不依赖于没有获得用户交互的域的第三方 Cookie。对一组网站进行跨站点分析的一种流行方法是使用链接修饰,即用需要在跨源和导航中传递的信息填充链接。
广告归因
我们建议使用服务器端存储来归因您网站上的广告展示。链接修饰可用于在导航中传递归因信息。
管理单点登录
如果您运行一个具有集中会话的单点登录系统,用户需要与控制会话的域进行交互。否则,您将面临智能跟踪预防将您的会话控制器域视为跟踪器的风险。

想象一下如上所述的场景;一个在 account.com 的中心会话,用于三个网站 SiteA.com、SiteB.com 和 SiteC.com。会话信息可以在 account.com 的 24 小时 Cookie 分区豁免期内从 account.com 传播到依赖方。从那时起,这些网站必须在没有 account.com Cookie 的情况下维护会话,或者它们必须每天在 account.com 短暂停留以重新验证并获取新的用户交互。您可以授予这些网站通过导航和 HTTP 响应中设置的新 Cookie 在它们之间传播会话信息的能力。单点退出需要使服务器上的 account.com 会话失效。
反馈和错误报告
如果您是 Web 开发人员或 Web 用户,并且智能跟踪预防在您的网站上未能按预期工作,请通过 bugs.webkit.org 报告错误,并将反馈发送给我们的布道师 Jon Davis。如果您对该功能的工作原理有技术问题,您可以在 Twitter 上找到我 @johnwilander。