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'tawait
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
1 Answer
Reset to default 7You 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();
});