Як налаштувати проксі з авторизацією в 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+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 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