2

I'm new to puppeteer and node, trying to use a proxy with puppeteer in order to collect requests & responses, hopefully also websocket communication, but so far couldn't get anything to work..

I'm trying the following code:

const puppeteer = require('puppeteer');
const httpProxy = require('http-proxy');
const url       = require('url');

let runProxy = async ()=> {
     // raise a proxy and start collecting req.url/response.statusCode 
};

let  run = async () => {
    await runProxy();
    const browser = await puppeteer.launch({
        headless: false,
        args: ['--start-fullscreen',
            '--proxy-server=localhost:8096']
    });
    page = await browser.newPage();
    await page.setViewport({ width: 1920, height: 1080 });
    await page.goto('http://www.google.com',
        {waitUntil: 'networkidle2', timeout: 120000});
};

run(); 

I've tried some variation from https://github.com/nodejitsu/node-http-proxy but nothing seems to work for me, some guidance is at need, thanks

Captain_Meow_Meow
  • 2,341
  • 5
  • 31
  • 44

1 Answers1

0

try this, use https-proxy-agent or http-proxy-agent to proxy request for per page:

import {Job, Launcher, OnStart, PuppeteerUtil, PuppeteerWorkerFactory} from "../..";
import {Page} from "puppeteer";

class TestTask {

    @OnStart({
        urls: [
            "https://www.google.com",
            "https://www.baidu.com",
            "https://www.bilibili.com",
        ],
        workerFactory: PuppeteerWorkerFactory
    })
    async onStart(page: Page, job: Job) {
        await PuppeteerUtil.defaultViewPort(page);
        await PuppeteerUtil.useProxy(page, "http://127.0.0.1:2007");
        await page.goto(job.url);
        console.log(await page.evaluate(() => document.title));
    }

}

@Launcher({
    workplace: __dirname + "/workplace",
    tasks: [
        TestTask
    ],
    workerFactorys: [
        new PuppeteerWorkerFactory({
            headless: false,
            devtools: true
        })
    ]
})
class App {}
kiyah
  • 1,502
  • 2
  • 18
  • 27