我正在尝试获取被浏览器(HTTPS站点上的HTTP)阻止的请求的列表。我尝试过
page.on('requestfailed', request => {
console.log(request.url());
console.log('failed');
});
,但未提供请求。我看到的唯一请求是那些不再存在的URL。被阻止的(HTTP)请求也不会触发请求事件。
page.on('request', request => {
console.log(request.url());
}
还有其他可以听的活动吗?
编辑:
我可以看到使用时出现故障
page._client.on('Network.loadingFailed', async event => {
const request = await page._networkManager._requestIdToRequest.get(event.requestId);
console.log(event);
console.log(request);
});
,但请求var未定义。所以我不知道哪个请求失败。
答案 0 :(得分:2)
了解了解决方法
page._client.on('Network.loadingFailed', async event => {
if (requestToBySend[event.requestId] !== undefined) {
let reason = '';
if (event.blockedReason !== undefined) {
reason = event.blockedReason;
} else {
reason = event.errorText;
}
console.log('blocked: ' + requestToBySend[event.requestId] + '; reason: ' + reason);
}
});
page._client.on('Network.requestWillBeSent', async event => {
requestToBySend[event.requestId] = event.request.url;
});
在requestWillbeSent事件中,requestId是已知的。我只存储这些ID,以便在需要时进行查找。
我使用的Chrome事件可以在这里找到:https://chromedevtools.github.io/devtools-protocol/tot/Network#event-loadingFailed