小编kit*_*itt的帖子

Chromium 是否支持通过 CDP 拦截 WebWorker 请求?

我试图通过发送Fetch.enable工作目标会话来拦截 WebWorker 请求,但从"\'Fetch.enable\' wasn\'t found"Chromium 收到错误。这是否意味着 Chromium 不支持 WebWorker 请求拦截?我的铬版本是97.0.4691.0 (Developer Build).

\n

合理的答案将不胜感激。

\n

--更新--\n我想我已经以木偶操纵者的方式工作了。请查看我的修复kitt1987/puppeteer。只是一个快速修复,没有精心设计。

\n

TL;NR

\n

实际上,我使用 puppeteer 拦截了一个网站的请求。然后我发现这个网站请求了WebWorker中的一些文件,但是如果启用拦截,puppeteer就会出现bug。请参阅puppeteer/puppeteer#4208puppeteer/puppeteer#2781

\n

在深入研究puppeteer源代码并跟踪原始协议消息后,似乎调用page.setRequestInterception(true)也拦截了WebWorker请求,但这些请求从未发出任何Network.requestWillBeSent事件,这在puppeteer中称为page.request事件,然后WebWorker请求挂起等待request.continue()通常在事件处理程序page.request

\n

然后我试图找出Network.requestWillBeSent事件丢失的原因。Chrome DevTools能够跟踪其网络面板中的所有请求,然后我在Protocol Monitor中分析了其CDP流量,发现新的WebWorker启动了新会话,它需要Network.enable在新会话中再次发送以启用网络跟踪。但是,在我发送Fetch.enable新会话以启用拦截后,出现了错误。

\n
  puppeteer:protocol:SEND \xe2\x96\xba {"sessionId":"3DE89BAC041203C90EF1B3D2CC348EAA","method":"Fetch.enable","params":{"handleAuthRequests":true,"patterns":[{"urlPattern":"*"}]},"id":245} +0ms\n  puppeteer:protocol:RECV \xe2\x97\x80 {"id":245,"error":{"code":-32601,"message":"\'Fetch.enable\' wasn\'t found"},"sessionId":"3DE89BAC041203C90EF1B3D2CC348EAA"} +0ms\n
Run Code Online (Sandbox Code Playgroud)\n

您可以在kitt1987/puppeteer中找到我的修复。

\n

chromium web-worker google-chrome-devtools puppeteer chrome-devtools-protocol

6
推荐指数
0
解决办法
1016
查看次数