为了保护用户隐私,浏览器厂商推出了智能阻止追踪(ITP)的功能,旨在通过对第三方cookie访问的限制,防止用户被cookie追踪。
详见:Intelligent Tracking Prevention
用户追踪
广告投放有效的计算大概分为三步:
1.主站上投放了广告
2.用户从此主站上跳到了广告的商品页(在这一步建立连接)
3.用户在广告商品页消费,广告厂商计算为有效,分成给主站。
这是最简单的方式,更复杂的是用户在主站上点击了广告之后,N天以内只要购买了这个商品都算有效广告,甚至是你在PC上点了广告,但是在手机上购买了商品也算有效广告(以同一域的wifi,或者网段,锁定为同一人),再比如输入法,你登录了输入法,或者是输入法经过学习知道这几个设备其实是同一个人,那么就能将你串联起来给你跨越时空投放关联广告。
但这严重侵犯了用户的隐私。于是浏览器厂商和广告公司的斗智斗勇催生了各种繁琐的规范,给web编程增加了很多的细节,这簇规范以ITP最为权威。
下面是一个具体的示意图:
相关的细节见: https://clearcode.cc/blog/intelligent-tracking-prevention/
什么是第三方cookie(3P cookie)
关于cookie的细节可以参考mdn的文档: cookie
假如你直接访问的是a.com这个网站,那么在这个网站的访问过程中,其他域名种的cookie都是第三方cookie。比如:
a.你点击了a.com上的广告栏,跳到了广告的页上,广告页种了一个cookie, 这个cookie属于第三方cookie. —— 从其他页面跳转而来
b.广告的网站以iframe的方式挂在a.com中,广告网站自己向自己的域名发送请求也属于第三方cookie. —— iframe
c.广告公司的脚本嵌入在a.com中,向自己的域名发送请求,也是第三方cookie. —— 当前页面跨域访问
20年chrome 81开始的same site相关的事情就是 3p cookie相关的, 87的版本same site已经默认设置为strict。
safari已经在13版本开始完全禁止第三方cookie了,chrome表示在22年也完成这个动作。但是它们提供了一个显式的让用户允许你种植第三方cookie的方式: storage access api.
ITP做的事
其核心功能就是通过浏览器收集到的数据通过机器学习和大数据的能力尽可能阻止广告公司,第三方网站设置第三方cookie,并在其他场景下缩短第三方cookie的存活时间,以此来保护用户免于被追踪。
ITP洐进了多个版本,在此只分主要阶段展开。
ITP1.0 1.1
主要限制第三方cookie的可访问时间为24小时,存活时间最长为30天。
ITP2.0
直接禁止第三方cookie的访问。
如何跨域访问cookie
某些场景,我们切实需要跨域访问cookie, 应该怎么办呢?
https://webkit.org/blog/8124/introducing-storage-access-api/