[英]How to modify request headers using Puppeteer & Chrome DevTools Protocol? (Possibly a JS syntax issue)
I have the following Typescript function that assumes a Chrome browser has already been launched using Puppeteer.我有以下 Typescript 函数,假设已经使用 Puppeteer 启动了 Chrome 浏览器。 The documentation for the Fetch functions used below can be found here .
下面使用的 Fetch 函数的文档可以在这里找到。
async function modify(client: CDPSession) {
client.on('Fetch.requestPaused', async ({ requestId, request, frameId, resourceType, responseErrorReason, responseStatusCode, responseHeaders, networkId }) => {
// Correctly prints out the User-Agent header's value
console.log(request.headers["User-Agent"]);
// After this line is run, I can inspect the request.headers object and see that User-Agent was successfully edited
request.headers['User-Agent'] = 'trying to edit this header';
// Continuing the request gives an error
await client.send('Fetch.continueRequest', {
requestId: requestId,
headers: request.headers,
});
});
}
Here is the specific error I'm seeing:这是我看到的具体错误:
Error: Protocol error (Fetch.continueRequest): Invalid parameters headers: array expected
错误:协议错误(Fetch.continueRequest):无效的参数标头:需要数组
How can I resolve this error and successfully modify the request.headers
?如何解决此错误并成功修改
request.headers
? Is this a silly Javascript/Typescript syntax issue that I just can't figure out?这是我无法弄清楚的愚蠢的 Javascript/Typescript 语法问题吗?
Fetch.requestPaused
returns the headers as an object. Fetch.requestPaused
将标头作为对象返回。 eg:例如:
{
"Upgrade-Insecure-Requests":"1",
"Accept": "text/html,application/xhtml+xml"}
}
Fetch.continueRequest
expects an Array<{name: string, value: string}>
. Fetch.continueRequest
需要一个Array<{name: string, value: string}>
。 eg例如
[
{"name": "Accept", value: "text/html,application/xhtml+xml"}
]
You can use the code that Puppeteer is using:您可以使用 Puppeteer 正在使用的代码:
function headersArray(headers) {
const result = [];
for (const name in headers) {
if (!Object.is(headers[name], undefined))
result.push({name, value: headers[name] + ''});
}
return result;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.