首页 > 解决方案 > 使用“Network.requestIntercepted”时如何中止请求Puppeteer(与setRequestInterception的request.abort()相同)?

问题描述

我无法使用该setRequestInterception功能进行拦截,一些重要的请求没有通过它。

相反,我使用了Network.setRequestInterception,除了无法中止不需要的请求之外,它还不错。

如果我故意用if else语句忽略它,很多请求不会离开浏览器,导致很多错误处于挂起状态。

request.abort()使用时我需要一个备用命令Network.requestIntercepted,这是我的代码:

const client = await page.target().createCDPSession();
await client.send('Network.enable');
await client.send('Network.setRequestInterception',{
patterns:[
{urlPattern :'*'}
]
});
client.on('Network.requestIntercepted',async({interceptionId,request})=>{
if (request.url.indexOf('Loading') == -1 ){
await client.send('Network.continueInterceptedRequest',{
interceptionId
});
}else{
//I want request.abort()
}
});

谢谢!!

标签: puppeteerinterception

解决方案


似乎同样'Network.continueInterceptedRequest'可以用于中止:

}else{
  await client.send('Network.continueInterceptedRequest', {
    interceptionId,
    errorReason: 'Aborted',
  });
}

推荐阅读