阻止浏览器存储Cookie:非隐身模式下Chrome扩展隐私模式实现及API疑问
问题解答
自定义隐私模式(不调用系统隐身窗口)需求可行性
该需求完全可以实现,可通过两类主流方案落地:
- 方案1:Cookie事件监听清除
申请cookies权限与<all_urls>host权限,监听chrome.cookies.onChanged事件,当你的扩展隐私模式开启时,所有新增/修改的Cookie触发事件后直接调用chrome.cookies.remove()接口实时删除,确保Cookie不会持久化存储。 - 方案2:网络请求层面拦截(更推荐)
申请declarativeNetRequest权限,配置规则直接拦截所有响应头中的Set-Cookie字段,同时也可以按需清除请求头中的Cookie字段,从流量层面直接阻断Cookie的写入链路,比事后删除的逻辑更严谨,也不存在临时残留的问题。
关于chrome.cookies接口expirationDate参数的疑问
你提到的用法完全达不到阻止Cookie存储的效果:
- 调用
chrome.cookies.set()时如果不设置expirationDate参数,默认生成的是会话Cookie,这类Cookie会存放在浏览器内存中,仅在浏览器完全关闭后才会清除,运行时依然会被浏览器正常读取使用,不属于“不收集任何Cookie”的范畴。 - 要通过
chrome.cookies接口删除指定Cookie,需要将expirationDate设置为当前时间之前的时间戳,才能让Cookie直接过期失效。 - 额外提醒:网站原生设置Cookie不需要调用
chrome.cookies接口,如果你没有做上述的事件监听或者请求头拦截逻辑,即使你全程不调用chrome.cookies接口,网站依然可以正常写入Cookie,你对该接口的参数调整不会影响网站本身的Cookie写入行为。
内容的提问来源于stack exchange,提问作者Suji
相关产品推荐
相关产品推荐

