我通过Dev Tools协议在无头模式下使用Chromium,我需要实现一个系统,其中每个页面都有一个完全独立的cookie jar,它将用于JavaScript和HTTP请求。
据我所知,浏览器本身并不支持这种做法,并且对它进行破解非常棘手。
如果我想用JavaScript控制cookie,我可以用我自己的cookie商店覆盖document.cookie
个电话。如果我想控制通过HTTP发送的cookie,我可以拦截请求并修改Cookie
标头并拦截并读取Set-Cookie
标头。问题是将JavaScript与请求同步。
有办法做到这一点吗?如果没有,那么分叉整个事件,添加功能以及重新编译源代码是否可行?
答案 0 :(得分:0)
这就是我正在做的事。
我将cookie jar存储在节点服务器中。我将拦截网络请求中的Set-Cookie
标头并相应地更新我的替换cookie jar。我还将修改相应发送到服务器的Cookie
标头。
诀窍是使用同步XHR请求来从客户端获取和设置cookie,因此它们都完全同步。基本上,我将覆盖document.cookie
属性以向服务器发送同步XHR请求以获取/设置cookie,而不是直接更新它们。在执行这些操作时,几乎所有请求和所有JavaScript都将冻结,因此不存在由于异步代码而导致的任何问题。