javascript - 强制 Chromium 每页使用不同的 cookie jar

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

我在 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/

相关文章:

google-chrome - Chrome 77 远程设备调试问题

c# - 如何在 MvvmCross xamarin 中设置请求超时并获取 HttpRequest 的响应代码

java - WebSphere 6.1.0.29 上的 http_access.log

javascript - 如何查找两个纬度和经度点之间的汽车行驶距离

css - Chrome CSS 错误 : "translate3d" inside a rotated element does not obey "overflow: hidden"

google-chrome - Chrome 扩展程序 : perform actions before page request is sent?

android - 如何在 Kotlin (Android) 中向简单服务器发出 HTTP/POST 请求?

javascript - 捕获不同模块中的事件

javascript - 在客户端设置显示没有任何 asp 面板在任何 linkBut​​tonclick 上重新显示它

javascript - 如何使用 DialogFlow 实现在回调函数内传递参数