puppeteer request.contiue无法在标头主机被覆盖的情况下工作



告诉我们您的环境:

  • 木偶版本:1.19.0
  • 平台/操作系统版本:Debian 9
  • URL(如果适用(:
  • Node.js版本:8

预期结果是什么

我想覆盖标头中请求的主机。例如请求url:http://a.com/x.jpg。DNS解析程序可能会将主机解析为一个较慢的ip地址,但我知道有一个更好的ip,比如1.2.3.4。我想用ip地址更改url,并修改请求标头中的主机。

类似于curl http://a.com/x.jpg

curl --header "Host:a.com" http://1.2.3.4/x.jpg

会发生什么

await page.setRequestInterception(true);
page.on('request', request => {
const newHeaders = Object.assign({}, request.headers(), {
Host: 'a.com'
});
request.continue({ headers: newHeaders, url: 'http://1.2.3.4/x.jpg' });

但不起作用

您应该使用request.respond来覆盖标题,如下所示:

page.on('request', request => {
request.respond({
headers:{...request._headers,your_new_header_key:value},
body
})
});

最新更新