使用Network.requestIntercepted与Puppeteer

tur*_*_34 4 javascript google-chrome-devtools google-chrome-headless puppeteer

我正在尝试Network.requestIntercepted通过Puppeteer 使用Chrome开发者工具事件来获取导航/域重定向的网址,但我似乎无法访问任何事件数据。

下面的代码似乎没有触发Network.requestIntercepted,我也不知道为什么。

任何帮助表示赞赏。

// console command
// node chrome-commands.js http://yahoo.com test

var url = process.argv[2];
const puppeteer = require('puppeteer');

puppeteer.launch().then(async browser => {
const page = await browser.newPage();
const client = await page.target().createCDPSession();
await client.send('Network.enable');

await client.on('Network.requestIntercepted', (e) => {
  console.log(e);
  console.log("EVENT INFO: ");
  console.log(e.interceptionId);
  console.log(e.resourceType);
  console.log(e.isNavigationRequest);
});

  await page.goto(url);
  await browser.close();
});
Run Code Online (Sandbox Code Playgroud)

Eve*_*tss 5

您应该配置Network.setRequestInterception之前Network.requestIntercepted。这是工作示例:

const url = 'http://yahoo.com';
const puppeteer = require('puppeteer');

puppeteer.launch({ userDataDir: './data/' }).then(async browser => {
  const page = await browser.newPage();
  const client = await page.target().createCDPSession();
  await client.send('Network.enable');

  // added configuration
  await client.send('Network.setRequestInterception', {
    patterns: [{ urlPattern: '*' }],
  });

  await client.on('Network.requestIntercepted', async e => {
    console.log('EVENT INFO: ');
    console.log(e.interceptionId);
    console.log(e.resourceType);
    console.log(e.isNavigationRequest);

    // pass all network requests (not part of a question)
    await client.send('Network.continueInterceptedRequest', {
      interceptionId: e.interceptionId,
    });
  });

  await page.goto(url);
  await browser.close();
});
Run Code Online (Sandbox Code Playgroud)