将 Network.requestIntercepted 与 Puppeteer 一起使用
Using Network.requestIntercepted with Puppeteer
我正在尝试通过 Puppeteer 使用 Chrome 开发工具 Network.requestIntercepted
事件获取 navigation/domain 重定向的 URL,但我似乎无法访问任何事件数据。
下面的代码似乎没有触发 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();
});
您应该在 Network.requestIntercepted
之前配置 Network.setRequestInterception
。这是工作示例:
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();
});
我正在尝试通过 Puppeteer 使用 Chrome 开发工具 Network.requestIntercepted
事件获取 navigation/domain 重定向的 URL,但我似乎无法访问任何事件数据。
下面的代码似乎没有触发 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();
});
您应该在 Network.requestIntercepted
之前配置 Network.setRequestInterception
。这是工作示例:
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();
});