Как настроить прокси с авторизацией в Puppeteer (руководство для Node.js)
Обновлено:
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 ₫
- От 5 IP35 000 ₫
- От 10 IP25 000 ₫
- От 20 IP25 000 ₫
- От 50 IP25 000 ₫
- От 100 IP25 000 ₫
- От 200 IP25 000 ₫
- От 500 IP25 000 ₫
- От 1000 IP22 000 ₫
- От 2000 IP20 000 ₫
- 1 IP40 000 ₫
- От 5 IP35 000 ₫
- От 10 IP25 000 ₫
- От 20 IP25 000 ₫
- От 50 IP25 000 ₫
- От 100 IP25 000 ₫
- От 200 IP25 000 ₫
- От 500 IP25 000 ₫
- От 1000 IP22 000 ₫
- От 2000 IP20 000 ₫
Двухэтапная настройка прокси в Puppeteer
Никогда не указывайте user:pass@ внутри аргумента запуска --proxy-server. Хост и порт передаются при запуске, а аутентификация выполняется на экземпляре Page:
| Шаг | Код Puppeteer | Техническое назначение |
|---|---|---|
| 1. Запуск Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Перенаправляет сетевой сокет Chromium на ваш прокси VinaProxy |
| 2. Аутентификация Page | await page.authenticate({ username, password }) | Передает учетные данные через CDP в ответ на HTTP 407 |
| 3. Переход по URL | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Загружает целевую страницу через защищенный авторизованный туннель |
Ротация нескольких прокси между вкладками с proxy-chain
- Помните, что
page.authenticate()действует строго в рамках одной вкладкиPage— вызывайте этот метод для каждой новой вкладки, созданной черезbrowser.newPage() - Для использования разных прокси в изолированных инкогнито-контекстах внутри одного процесса Chromium оберните каждый URL
http://user:pass@ip:portс помощью npm-пакетаproxy-chain(anonymizeProxy()) и передайте в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?
Эта ошибка возникает, если передать логин и пароль прямо в аргумент запуска: --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?
Нет. Все тарифные планы на приватные IPv4 и статические ISP от VinaProxy включают полностью безлимитный трафик.
Оснастите ваши скраперы на Puppeteer статическими IP-адресами
Мгновенная выдача, безлимитный трафик, приватные IPv4 и ISP-прокси в 7 странах мира.
Купить прокси для Puppeteer