page.authentication
Правильный формат аргумента прокси-сервера:
--proxy-server=HOSTNAME:PORT
Если это прокси HTTPS, вы можете передать имя пользователя и пароль, используя page.authenticate
, прежде чем даже делатьнавигация,
page.authenticate({username:'user', password:'password'});
Полный код будет выглядеть следующим образом:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless:false,
ignoreHTTPSErrors:true,
args: ['--no-sandbox','--proxy-server=HOSTNAME:PORT']
});
const page = await browser.newPage();
// Authenticate Here
await page.authenticate({username:user, password:password});
await page.goto('https://www.example.com/');
})();
Proxy Chain
Если каким-либо образом аутентификация не работает с использованием вышеуказанного метода, вы можете захотетьобрабатывать аутентификацию где-то еще.
Для этого существует несколько пакетов, один из которых proxy-chain
, при этом вы можете взять один прокси и использовать его в качестве нового прокси-сервера.
proxyChain.anonymizeProxy(proxyUrl) возьмет один прокси с именем пользователя и паролем, создайте один новый прокси, который вы можете использовать в своем скрипте.
const puppeteer = require('puppeteer');
const proxyChain = require('proxy-chain');
(async() => {
const oldProxyUrl = 'http://username:password@hostname:8000';
const newProxyUrl = await proxyChain.anonymizeProxy(oldProxyUrl);
// Prints something like "http://127.0.0.1:12345"
console.log(newProxyUrl);
const browser = await puppeteer.launch({
args: [`--proxy-server=${newProxyUrl}`],
});
// Do your magic here...
const page = await browser.newPage();
await page.goto('https://www.example.com');
})();