Cuadrix / puppeteer-page-proxy

Additional module to use with 'puppeteer' for setting proxies per page basis.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

useProxy removes ExtraInfo from CDP content

jan opened this issue · comments

When I use useProxy(request, proxy), my CDP session misses Network.requestWillBeSentExtraInfo and Network.responseReceivedExtraInfo.

  • puppeteer 18.0.5,
  • puppeteer-page-proxy latest from Github Cuadrix/puppeteer-page-proxy.git#e42602b7d0f70759603b65b328485fc31fb17ee3 with smashah PR merged (thx for merging! Latest release doesn't work for me)

Reproduce with:

const puppeteer = require('puppeteer-extra')
const useProxy = require('puppeteer-page-proxy')

async function setupLoggingOfAllNetworkData(page) {
  const cdpSession = await page.target().createCDPSession()
  await cdpSession.send('Network.enable')
  const cdpRequestDataRaw = {}
  const addCDPRequestDataListener = (eventName) => {
    cdpSession.on(eventName, request => {
      cdpRequestDataRaw[request.requestId] = cdpRequestDataRaw[request.requestId] || {}
      Object.assign(cdpRequestDataRaw[request.requestId], { [eventName]: request })
    })
  }
  addCDPRequestDataListener('Network.requestWillBeSent')
  addCDPRequestDataListener('Network.requestWillBeSentExtraInfo')
  addCDPRequestDataListener('Network.responseReceived')
  addCDPRequestDataListener('Network.responseReceivedExtraInfo')
  return cdpRequestDataRaw
}

(async function () {
  const browser = await puppeteer.launch({ args: [], headless: true })
  const proxy = 'http://<redacted, please use your own>'
  
  const page = await browser.newPage()
  await page.setRequestInterception(true)
  page.on('request', async (request) => {
    // request.continue() // <- this gives me all four CDP responses
    await useProxy(request, proxy) // <- this is missing Network.requestWillBeSentExtraInfo and Network.responseReceivedExtraInfo
  })
  const cdpRequestDataRaw = await setupLoggingOfAllNetworkData(page);
  await page.goto('https://httpbin.org/anything', {
    waitUntil: 'networkidle2'
  })
  console.log('cdpRequestDataRaw', cdpRequestDataRaw)
  
  await browser.close()
})();