强制Chromium每页使用不同的cookie罐

时间:2018-01-07 16:57:22

标签: javascript google-chrome http google-chrome-devtools

我通过Dev Tools协议在无头模式下使用Chromium,我需要实现一个系统,其中每个页面都有一个完全独立的cookie jar,它将用于JavaScript和HTTP请求。

据我所知,浏览器本身并不支持这种做法,并且对它进行破解非常棘手。

如果我想用JavaScript控制cookie,我可以用我自己的cookie商店覆盖document.cookie个电话。如果我想控制通过HTTP发送的cookie,我可以拦截请求并修改Cookie标头并拦截并读取Set-Cookie标头。问题是将JavaScript与请求同步。

有办法做到这一点吗?如果没有,那么分叉整个事件,添加功能以及重新编译源代码是否可行?

1 个答案:

答案 0 :(得分:0)

这就是我正在做的事。

我将cookie jar存储在节点服务器中。我将拦截网络请求中的Set-Cookie标头并相应地更新我的替换cookie jar。我还将修改相应发送到服务器的Cookie标头。

诀窍是使用同步XHR请求来从客户端获取和设置cookie,因此它们都完全同步。基本上,我将覆盖document.cookie属性以向服务器发送同步XHR请求以获取/设置cookie,而不是直接更新它们。在执行这些操作时,几乎所有请求和所有JavaScript都将冻结,因此不存在由于异步代码而导致的任何问题。