Как использовать прокси с кукловодом - PullRequest
0 голосов
/ 27 мая 2018

Я новичок в кукловоде и ноде, пытаюсь использовать прокси с кукловодом, чтобы собирать запросы и ответы, надеюсь, также и через веб-сокет, но пока не могу заставить что-либо работать ..

Я пытаюсь следующий код:

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(); 

Я пробовал некоторые варианты от https://github.com/nodejitsu/node-http-proxy, но мне кажется, что ничего не работает, некоторые рекомендации нужны, спасибо

1 Ответ

0 голосов
/ 04 июня 2019

try this , используйте https-proxy-agent или http-proxy-agent для запроса прокси на странице:

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 {}
...