我在 headless 模式下使用 Chromium,通过 Dev Tools协议(protocol),我需要实现一个系统,其中每个页面都有一个完全独立的 cookie jar,它将用于 JavaScript 和 HTTP 请求。
据我所知,浏览器本身并不支持它,因此对其进行破解非常棘手。
如果我想在 JavaScript 中控制 cookie,我可以用我自己的 cookie 存储覆盖 document.cookie
调用。如果我想控制通过 HTTP 发送的 cookie,我可以拦截请求并修改 Cookie
header ,拦截并读取 Set-Cookie
header 。问题是将 JavaScript 与请求同步。
有没有办法做到这一点?如果不是,那么 fork 整个东西、添加功能并重新编译源代码的可行性如何?
最佳答案
这就是我正在做的。
我将 cookie jar 存储在节点服务器中。我将拦截网络请求中的 Set-Cookie
header ,并相应地更新我的替换 cookie jar。我还将相应地修改发送到服务器的 Cookie
header 。
诀窍是使用同步 XHR 请求从客户端获取和设置 cookie,因此它们都是完全同步的。基本上,我将覆盖 document.cookie
属性以向服务器发送同步 XHR 请求以获取/设置 cookie,而不是直接更新它们。在这些操作发生时,几乎所有请求和所有 JavaScript 都会卡住,因此不会出现异步代码会出现的任何问题。
关于javascript - 强制 Chromium 每页使用不同的 cookie jar ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48139469/