最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Using Network.requestIntercepted with Puppeteer - Stack Overflow

programmeradmin0浏览0评论

I'm trying to get urls of navigation/domain redirects using the Chrome Dev tools Network.requestIntercepted event through Puppeteer, but I cant seem to access any of the events data.

The code below doesn't seem to trigger Network.requestIntercepted and I can't work out why.

Any help appreciated.

// console mand
// node chrome-mands.js  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();
});

I'm trying to get urls of navigation/domain redirects using the Chrome Dev tools Network.requestIntercepted event through Puppeteer, but I cant seem to access any of the events data.

The code below doesn't seem to trigger Network.requestIntercepted and I can't work out why.

Any help appreciated.

// console mand
// node chrome-mands.js http://yahoo. 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();
});
Share Improve this question asked Mar 10, 2018 at 16:39 turrican_34turrican_34 7691 gold badge9 silver badges28 bronze badges 3
  • I am pretty sure that .on() does not return a promise, therefore you can't await anything. – Tomalak Commented Mar 10, 2018 at 17:00
  • I also use await client.on('Network.requestWillBeSent', (e) => { }); the same way and that works fine. github./GoogleChrome/puppeteer/blob/v1.1.1/docs/… – turrican_34 Commented Mar 10, 2018 at 17:07
  • @Tomalak await is properly used in this example – Everettss Commented Mar 11, 2018 at 12:51
Add a ment  | 

1 Answer 1

Reset to default 7

You should configure Network.setRequestInterception before Network.requestIntercepted. Here is working example:

const url = 'http://yahoo.';
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();
});
发布评论

评论列表(0)

  1. 暂无评论