【发布时间】:2020-01-11 09:46:40
【问题描述】:
我正在尝试使用Chrome DevTools Protocol (CDP) 来拦截网络请求并对其进行修改。
问题是我需要修改 WebSocket 请求的标头。这可能吗?
我可以通过先发送消息轻松修改“正常”请求的标头:
Network.enable
Network.setRequestInterception
然后收听Network.requestIntercepted 消息并回复适当的Network.continueInterceptedRequest 消息。
但是,Network.requestIntercepted 不会被 WebSockets 调用。我可以收听Network.webSocketWillSendHandshakeRequest,但这只能让我阅读请求,我看不到任何修改它的方法。
有没有办法做到这一点,还是目前不可能?
【问题讨论】:
-
文档说 setRequestInterception 已被弃用,建议使用Fetch。后者的 RequestPattern 类型中有 WebSocket,所以它可能实际上可以拦截它。
-
@wOxxOm:感谢您的评论,但它似乎不起作用....我尝试使用它(尝试使用和不使用显式模式),但就像旧版本一样似乎拦截“正常”请求,而不是 websocket 请求......
-
关于无法使用 WebSocket 资源类型的 Fetch 的错误报告:bugs.chromium.org/p/chromium/issues/detail?id=1283412
标签: google-chrome google-chrome-devtools chrome-devtools-protocol