Я создаю приложение с использованием Nodejs и firefox-puppeteer, и я пытаюсь отслеживать сетевой трафик, чтобы я мог читать заголовки, и если заголовки совпадают с моим регулярным выражением, получить сообщение, напечатанное на моем терминале.

Я пробовал кукольника: page.setRequestInterception(value) но это просто остановит приложение в тот момент, когда оно найдет один из заголовков, и программа сломается

Любое предложение приветствуется заранее спасибо

1
Dionysi Yakiza 2 Апр 2019 в 17:33

1 ответ

Лучший ответ

Вам не нужно включать перехват запросов через {{X0} }, чтобы отслеживать сетевую активность (вы можете проверить request.continue для получения дополнительной информации по этой теме).

Чтобы просто прослушивать сетевые ответы, вы можете прослушивать событие response. Вот пример кода:

const puppeteer = require('puppeteer');

const textRegex = /(javascript|html)/; // example regex

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    page.on('response', (response) => {
        const headers = response.headers();

        // example test: check if content-type contains javascript or html
        const contentType = headers['content-type'];
        if (textRegex.test(contentType)) {
            console.log(response.url());
        }
    });
    await page.goto(`...`);

    await page.close();
    await browser.close();
})();

В этом примере прослушиваются ответы и печатаются все URL-адреса, содержащие строку javascript или html в своем заголовке Content-Type.

1
Thomas Dondorf 2 Апр 2019 в 15:18