脚本执行到给定HTML字符串(代表网页)的导航。有一个功能适用于截获的请求,abort
适用于不允许的类型。对于所有其他请求continue
,我想设置特定的超时时间,与页面加载超时不同(脚本未设置超时,但默认的goto
超时时间为30秒)。例如,如果资源类型为'image'
,我想等待不超过5秒钟,然后中止请求。以下是脚本片段...
await page.setRequestInterception(true);
let firstDocument = true;
page.on('request', interceptedRequest => {
const resType = interceptedRequest.resourceType();
if ((resType === "document" && firstDocument) || settings.getAllowedResourceTypes().indexOf(resType) !== -1) {
if (resType === "document") {
firstDocument = false;
}
interceptedRequest.continue();
} else {
interceptedRequest.abort();
}
});
await page.goto(`data:text/html;charset=UTF-8,${html}`, { waitUntil: 'networkidle0' }).catch((e) => { logger.warn(e, "Unable to load HTML page content."); });
// ... move on with HTML processing
是否可以仅为特定的被拦截请求设置超时时间?
答案 0 :(得分:1)
According to the puppeteer developers协议当前不支持。
但是有一种“ hacky”方式(如here所述):您可以在拦截请求后自行下载资源并自行设置超时。请记住,您可能需要自己处理Cookie和其他HTTP标头:
div