safari的itp通过五方面限制跨站追踪:一、基于资源加载上下文识别并限制潜在追踪器;二、动态压缩第三方cookie有效期至7天并依用户交互重置;三、分级限制第三方storage api访问;四、在js执行各阶段干预指纹采集;五、通过first-party set dns声明放宽合法关联域名限制。

Safari的Intelligent Tracking Prevention(ITP)是一种嵌入在Safari浏览器中的隐私保护机制,旨在限制第三方网站跨站点追踪用户行为。以下是对其工作原理的详细说明:
一、基于资源加载上下文的追踪器识别
ITP通过分析网页中每个资源(如脚本、图像、iframe)的加载上下文,判断其是否属于跨站点追踪行为。当一个资源由与当前页面不同源的域名发起请求,且该请求具有潜在追踪意图(例如携带用户标识参数或长期存储凭证),ITP会将其标记为潜在追踪器。
1、浏览器解析HTML文档时,记录每个子资源的发起者(initiator)和目标域(target domain)。
2、若发起者与主文档域名不一致,且该目标域在过去24小时内未被用户主动访问过,则触发轻量级限制策略。
3、对被标记为高风险的跨域脚本,ITP延迟其执行并限制其访问document.cookie和Storage API的能力。
二、Cookie生命周期动态压缩机制
ITP不直接删除Cookie,而是根据用户交互信号动态调整第三方Cookie的有效期。其核心逻辑是将“无用户交互”作为追踪活跃度衰减的关键指标,从而削弱长期标识能力。
1、第三方Cookie默认有效期被缩短至7天,无论服务器设置的Max-Age值为何。
2、若用户在7天内未对该第三方域名执行点击、表单提交或URL导航等明确交互动作,该Cookie将在第7天结束时被自动清除。
3、若用户主动点击来自该第三方域的链接(例如广告跳转),则重置计时器并允许该域在24小时内写入新的Cookie。
三、Storage API访问分级限制
ITP将Web Storage(localStorage、sessionStorage)、IndexedDB及Cache API的访问权限与第一方上下文强绑定,切断第三方嵌入内容对持久化存储的隐式调用路径。
1、当第三方iframe尝试调用localStorage.setItem()时,Safari返回QuotaExceededError异常而非静默失败。
2、对已存在的第三方localStorage数据,ITP在页面加载后延迟5秒再提供读取权限,防止即时读取设备指纹类信息。
3、所有第三方IndexedDB数据库在用户关闭标签页后即被标记为只读,重启浏览器时自动清空未授权的实例。
四、Fingerprinting防御层介入时机控制
ITP在JavaScript执行栈的不同阶段插入检测点,针对常见设备指纹采集手段实施运行时干预,避免依赖静态规则匹配。
1、当页面脚本调用navigator.plugins、navigator.mimeTypes或canvas.toDataURL()时,ITP立即返回泛化后的固定值。
2、对requestAnimationFrame()高频调用模式进行采样检测,若单位时间内触发次数超过阈值,则降低回调频率至每500毫秒一次。
3、WebGLRenderingContext对象在第三方上下文中初始化时,自动禁用WEBGL_debug_renderer_info扩展,隐藏GPU型号细节。
五、First-Party Set例外处理流程
对于存在合法业务关联的多个域名(如apple.com与icloud.com),ITP支持通过DNS TXT记录声明First-Party Set关系,从而放宽跨域数据共享限制。
1、浏览器在解析主文档域名时,同步发起对_fpset._domainkey.主域名的DNS TXT查询。
2、若响应中包含格式正确的base64编码JSON对象,且签名验证通过,则将列表内所有域名视作同一第一方上下文。
3、在此集合内的域名之间,第三方Cookie有效期恢复为常规的24小时,Storage API调用不受延迟或截断影响。










