Nil*_*ner 1 google-chrome-headless puppeteer
我正在尝试获取被浏览器阻止的请求列表(HTTPS 站点上的 HTTP)。我试过
page.on('requestfailed', request => {
console.log(request.url());
console.log('failed');
});
Run Code Online (Sandbox Code Playgroud)
但它没有提供请求。我看到的唯一请求是那些不再存在的 URL。被阻止的 (HTTP) 请求也不会触发请求事件。
page.on('request', request => {
console.log(request.url());
}
Run Code Online (Sandbox Code Playgroud)
还有其他活动我可以收听吗?
编辑:
当我使用时我可以看到有些东西失败了
page._client.on('Network.loadingFailed', async event => {
const request = await page._networkManager._requestIdToRequest.get(event.requestId);
console.log(event);
console.log(request);
});
Run Code Online (Sandbox Code Playgroud)
但请求变量未定义。所以我不知道哪个请求失败了。
找到了如何解决这个问题
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;
});
Run Code Online (Sandbox Code Playgroud)
requestId 在 requestWillbeSent 事件中已知。我只是存储这些 ID,以便在需要时查找它们。
我使用的 Chrome 事件可以在这里找到: https: //chromedevtools.github.io/devtools-protocol/tot/Network#event-loadingFailed
| 归档时间: |
|
| 查看次数: |
1251 次 |
| 最近记录: |