【问题标题】:Get list of blocked requests in Puppeteer获取 Puppeteer 中被阻止的请求列表
【发布时间】:2018-07-03 16:30:10
【问题描述】:

我正在尝试获取被浏览器阻止的请求列表(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);
    });

但请求变量未定义。所以我不知道哪个请求失败了。

【问题讨论】:

    标签: puppeteer google-chrome-headless


    【解决方案1】:

    了解如何解决这个问题

    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;
    });
    

    requestId 在 requestWillbeSent 事件中是已知的。我只是存储这些 id 以便在需要时查找它们。

    我使用的 Chrome 事件可以在这里找到:https://chromedevtools.github.io/devtools-protocol/tot/Network#event-loadingFailed

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-15
      • 2020-07-18
      • 2015-07-04
      • 1970-01-01
      • 2021-12-15
      • 2015-06-22
      • 2019-11-04
      • 2017-02-06
      相关资源
      最近更新 更多