如何使用Node JS Puppeteer在我的无头chrome请求中设置代理服务器

时间:2017-10-26 14:43:57

标签: javascript node.js headless-browser puppeteer

/ 我在chrome上运行无头搜索请求,我需要访问代理服务器 /

const puppeteer = require('puppeteer');
var url="https://www.google.com/search?q=";
var keyword="hotels";
var urls;
var desktopUserAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";
const response=[];
var i=0;
var userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36";

(async () => {

  const browser = await puppeteer.launch({headless: false });
  const page = await browser.newPage();
  urls=url+keyword;

page.setUserAgent(userAgent);
  response[i]=await page.goto(urls);
  console.log(await browser.version());
})();

//我需要能够访问代理服务器以进行谷歌搜索

2 个答案:

答案 0 :(得分:3)

您可以在参数

中传递这样的代理
const options = {
        headless: false,
        args: [
            `--proxy-server=${proxyIP:proxyPORT}`,
            `--ignore-certificate-errors`
        ]
};
const browser = await puppeteer.launch(options);

如果您想要代理身份验证,可以在页面对象中使用以下内容,

await page.authenticate(user, pass);

答案 1 :(得分:1)

我制作了一个执行此操作的模块。它称为puppeteer-page-proxy。 它支持为整个页面设置代理,也可以根据需要为每个请求设置不同的代理。

首先安装它:

npm i puppeteer-page-proxy

然后要求它:

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

使用起来很简单; 设置整个页面的代理:

await useProxy(page, 'http://127.0.0.1:8000');

如果您要为每个请求使用不同的代理,则只需执行以下操作:

await page.setRequestInterception(true);
page.on('request', req => {
    useProxy(req, 'socks5://127.0.0.1:9000');
});

然后,如果您要确保页面的IP已更改,可以进行查找;

const data = await useProxy.lookup(page);
console.log(data.ip);

它支持 http https socks4 socks5 代理,如果支持,则还支持身份验证需要:

const proxy = 'http://login:pass@127.0.0.1:8000'

存储库: https://github.com/Cuadrix/puppeteer-page-proxy