Как да настроите автентикирано прокси в Puppeteer (Node.js)
Updated:
Puppeteer управлява Chrome и Chromium през DevTools Protocol (CDP), предоставяйки вграден API await page.authenticate({ username, password }) за HTTP 407 прокси автентикация. Комбинирането на --proxy-server=http://ip:port с page.authenticate() позволява на вашите скрапери в Node.js да преминават през статични проксита от VinaProxy без никакви външни браузърни разширения.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP40 000 VND
- 5+ IP адреса35 000 VND
- 10+ IP адреса25 000 VND
- 20+ IP адреса25 000 VND
- 50+ IP адреса25 000 VND
- 100+ IP адреса25 000 VND
- 200+ IP адреса25 000 VND
- 500+ IP адреса25 000 VND
- 1000+ IP адреса22 000 VND
- 2000+ IP адреса20 000 VND
- 1 IP40 000 VND
- 5+ IP адреса35 000 VND
- 10+ IP адреса25 000 VND
- 20+ IP адреса25 000 VND
- 50+ IP адреса25 000 VND
- 100+ IP адреса25 000 VND
- 200+ IP адреса25 000 VND
- 500+ IP адреса25 000 VND
- 1000+ IP адреса22 000 VND
- 2000+ IP адреса20 000 VND
Конфигуриране на прокси в Puppeteer в две стъпки
Никога не вграждайте user:pass@ в аргумента за стартиране --proxy-server. Вместо това подайте хоста и порта при стартиране и се автентикирайте върху инстанцията на Page:
| Стъпка | Puppeteer код | Защо е важно |
|---|---|---|
| 1. Стартиране на Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Насочва мрежовия сокет на Chromium към вашето VinaProxy прокси |
| 2. Автентикация на страницата | await page.authenticate({ username, password }) | Подава CDP идентификационни данни при HTTP 407 заявки |
| 3. Навигация | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Зарежда целевия URL адрес през автентикирания тунел |
Ротация на множество проксита между раздели чрез proxy-chain
- Имайте предвид, че обхватът на
page.authenticate()е за отделен разделPage– извиквайте го за всеки нов раздел, върнат отbrowser.newPage() - За да използвате различни проксита в инкогнито контексти в рамките на един Chromium процес, обвийте всеки URL адрес
http://user:pass@ip:portс npm пакетаproxy-chain(anonymizeProxy()) и подайтеproxyServerкъмbrowser.createBrowserContext({ proxyServer }) - Съвместимо с
puppeteer-extraиpuppeteer-extra-plugin-stealth
Стъпка по стъпка
- 1
Подайте --proxy-server=http://ip:port към puppeteer.launch()
Стартирайте браузъра с
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
Извикайте await page.authenticate() върху новата страница
Отворете раздел с
const page = await browser.newPage();и извикайтеawait page.authenticate({ username: 'USER', password: 'PASS' });. - 3
Тествайте изходния IP адрес
Изпълнете
await page.goto('https://vinaproxy.com/api/my-ip');и проверете върнатия JSON. - 4
Затворете браузърните процеси
Извикайте
await browser.close();, когато задачата приключи.
Често задавани въпроси
Защо Puppeteer връща грешка `ERR_NO_SUPPORTED_PROXIES`?
Тази грешка възниква, ако включите user:pass@ в --proxy-server=http://user:pass@ip:port. Оставете --proxy-server=http://ip:port изчистен и подайте данните за автентикация чрез await page.authenticate({ username, password }).
Защо втори раздел, отворен с `browser.newPage()`, се провали с HTTP 407?
page.authenticate() важи за всеки отделен раздел. Извикайте await secondPage.authenticate({ username, password }) преди навигация във всеки новоотворен раздел.
Неограничени ли са прокситата на VinaProxy за скрапване с headless Chrome?
Да. Всички планове за Dedicated IPv4 и Static ISP включват неограничен месечен трафик.
Оборудвайте своя Node.js Puppeteer клъстер със статични IP адреси
Незабавни неограничени Dedicated IPv4 и Static ISP проксита в 7 държави.
Купете Puppeteer проксита