我希望收集 HTTP 请求的正文,包括页面重定向到其他地方时。显然,我可以使用非 Fetch 域机制,例如Network.getResponseBody
. 这适用于重定向链中的“最终”页面,但不能用于中间页面,因为 Chrome 在转到下一个重定向目标时似乎会转储内容。
所以,我实现了(使用 PHP,但细节无关紧要,如您所见)。此方法调用不返回错误。然后做 a 之后,我等待一个包含 members 的事件,然后发送a (使用from the ),我得到的响应取决于对页面本身的实际响应是什么。因此,对于 a ,我得到一个响应正文(欢呼),但对于 30x (等),我总是得到带有消息的错误代码。现在,发出该错误消息(在我看来)与Fetch.enable
( { patterns: [ { requestStage: Response } ] } )
Page.navigate
Fetch.requestPaused
requestId
responseStatusCode
responseHeaders
Fetch.getResponseBody
requestId
Fetch.requestPaused
200
301
302
-32000
"Can only get response body on requests captured after headers received"
Fetch.requestPaused
事件数据,即使 Chrome DevTools 协议 (CDP) 并非旨在捕获 HTTP 重定向页面的正文。顺便说一句,带有内容触发重定向(通过 META 元素或 JavaScript)的页面可以被捕获,我认为是因为它们返回 200 状态代码。
那么,问题是我正在遵循的调用顺序还是返回的错误消息中的问题,Fetch.getResponseBody
我是否正确地假设 CDP 不打算捕获重定向链中的文档主体(显然,除了最后一个)?