操纵up-设置拦截请求的导航超时

时间:2018-10-10 14:49:24

标签: node.js puppeteer

脚本执行到给定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

是否可以仅为特定的被拦截请求设置超时时间?

1 个答案:

答案 0 :(得分:1)

According to the puppeteer developers协议当前不支持。

但是有一种“ hacky”方式(如here所述):您可以在拦截请求后自行下载资源并自行设置超时。请记住,您可能需要自己处理Cookie和其他HTTP标头:

div