Получить список заблокированных запросов в Puppeteer - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь получить список запросов, заблокированных браузером (HTTP на сайтах HTTPS). Я пытался

page.on('requestfailed', request => {
        console.log(request.url());
        console.log('failed');
    });

но запросы не были предоставлены. Единственные запросы, которые я видел, были те URL, которые больше не существуют. Заблокированный (HTTP) запрос также не вызывает событие запроса.

page.on('request', request => { 
   console.log(request.url());
}

Могу ли я прослушать еще одно событие?

EDIT:

Я вижу, что что-то не работает, когда я использую

page._client.on('Network.loadingFailed', async event => {
        const request = await page._networkManager._requestIdToRequest.get(event.requestId);
        console.log(event);
        console.log(request);
    });

но запрос var не определен. Так что я не знаю, какой запрос не удался.

1 Ответ

0 голосов
/ 03 июля 2018

Узнал, как решить эту проблему

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. Я просто храню эти идентификаторы, чтобы искать их, когда они мне нужны.

Используемые мной события Chrome можно найти здесь: https://chromedevtools.github.io/devtools-protocol/tot/Network#event-loadingFailed

...