我试图通过发送Fetch.enable工作目标会话来拦截 WebWorker 请求,但从"\'Fetch.enable\' wasn\'t found"Chromium 收到错误。这是否意味着 Chromium 不支持 WebWorker 请求拦截?我的铬版本是97.0.4691.0 (Developer Build).
合理的答案将不胜感激。
\n--更新--\n我想我已经以木偶操纵者的方式工作了。请查看我的修复kitt1987/puppeteer。只是一个快速修复,没有精心设计。
\nTL;NR
\n实际上,我使用 puppeteer 拦截了一个网站的请求。然后我发现这个网站请求了WebWorker中的一些文件,但是如果启用拦截,puppeteer就会出现bug。请参阅puppeteer/puppeteer#4208和puppeteer/puppeteer#2781。
\n在深入研究puppeteer源代码并跟踪原始协议消息后,似乎调用page.setRequestInterception(true)也拦截了WebWorker请求,但这些请求从未发出任何Network.requestWillBeSent事件,这在puppeteer中称为page.request事件,然后WebWorker请求挂起等待request.continue()通常在事件处理程序page.request。
然后我试图找出Network.requestWillBeSent事件丢失的原因。Chrome DevTools能够跟踪其网络面板中的所有请求,然后我在Protocol Monitor中分析了其CDP流量,发现新的WebWorker启动了新会话,它需要Network.enable在新会话中再次发送以启用网络跟踪。但是,在我发送Fetch.enable新会话以启用拦截后,出现了错误。
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\nRun Code Online (Sandbox Code Playgroud)\n您可以在kitt1987/puppeteer中找到我的修复。
\nchromium web-worker google-chrome-devtools puppeteer chrome-devtools-protocol