Как установить прокси-сервер в моем запросе Chrome без головы с помощью Node JS 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());
})();

// Мне нужен доступ к прокси-серверу для поиска в Google

1 ответ

Решение

Вы можете передать прокси, как это в аргументе,

const options = {
        headless: false,
        args: [
            `--proxy-server=${proxyIP:proxyPORT}`,
            `--ignore-certificate-errors`
        ]
};
const browser = await puppeteer.launch(options);

Если вы хотите прокси-аутентификацию, вы можете использовать следующее в вашем объекте страницы,

await page.authenticate(user, pass);

Я сделал модуль, который это делает. Это называется кукловод-страница-прокси. Он поддерживает настройку прокси для всей страницы или, если хотите, он может установить другой прокси для каждого запроса.

Сначала установите его:

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

Другие вопросы по тегам