К содержимому

Настройка прокси в Puppeteer: авторизация, SOCKS5 и ротация IP | Proxy302

Прогоните парсер или сценарий автоматизации через резидентные IP выхода с одним флагом запуска и одним вызовом аутентификации: запустите Puppeteer с --proxy-server, передайте учётные данные в page.authenticate() до первой навигации — и каждая загрузка страницы будет уходить через шлюз Proxy302.

Что нужно до начала

Проект Node.js с установленным Puppeteer и скриптом, который запускает браузер.

Аккаунт Proxy302 с ротационным резидентным трафиком. Линия Budget стоит US$1.50 за GB при любом объёме (US$1.35 за GB при 100 GB), минимальная покупка — 1 GB; подробности на странице тарифов.

Ваши логин и пароль прокси Proxy302. Страница «Мои активы» в консоли показывает HOST, PORT, USERNAME и PASSWORD для всего, что вы купили.

Подключение, поле за полем

Хост шлюза: proxy.proxy302.com — HTTP и SOCKS5 используют один шлюз

Порт для HTTP: 2222 — рекомендованная точка входа для Puppeteer

Порт для SOCKS5: 3333

Аргумент запуска: --proxy-server=http://proxy.proxy302.com:2222

Аутентификация: await page.authenticate({ username, password }) до первого page.goto()

Откуда брать значения: «Мои активы» в консоли Proxy302

Полный первый скрипт

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    args: ['--proxy-server=http://proxy.proxy302.com:2222'],
  });

  const page = await browser.newPage();
  await page.authenticate({
    username: 'YOUR_PROXY_USERNAME',
    password: 'YOUR_PROXY_PASSWORD',
  });

  await page.goto('https://ipinfo.io/json');
  console.log('Выход:', await page.$eval('body', (el) => el.textContent));

  await browser.close();
})();

Готов к запуску: подставьте учётные данные Proxy302 и запустите через Node.js.

Что делает флаг запуска

--proxy-server — переключатель командной строки Chromium; в его исходном коде стоит комментарий "Uses a specified proxy server, overrides system settings." Puppeteer передаёт его браузеру через опцию args вызова puppeteer.launch(), которую справочник API Puppeteer описывает как "Additional command line arguments to pass to the browser instance." По умолчанию браузер работает в headless-режиме.

Chromium распознаёт схемы прокси http, https, socks4 и socks5, поэтому один и тот же флаг несёт любой из входов: --proxy-server=http://proxy.proxy302.com:2222 или --proxy-server=socks5://proxy.proxy302.com:3333.

Что делает page.authenticate()

Справочник API Puppeteer говорит, что page.authenticate() предоставляет странице "credentials for HTTP authentication", и отмечает: "Request interception will be turned on behind the scenes to implement authentication." Вызывайте его до первого page.goto(); чтобы отключить, передайте null.

Поэтому HTTP на порту 2222 — рекомендованная точка входа: браузер проходит обязательный для каждого соединения Proxy302 вход по логину и паролю прямо внутри страницы. Используйте те же логин и пароль, что и в других ваших инструментах; они показаны в разделе «Мои активы».

Проверьте IP выхода

Откройте https://ipinfo.io/json через страницу. Поля ip и country должны принадлежать выходу прокси, а не вашему собственному подключению. Если печатается ваш собственный адрес, аргумент запуска не дошёл до экземпляра браузера, которым управляет этот скрипт: сначала выведите IP выхода, затем проверьте, какой браузер запускает и настраивает скрипт. Поля разобраны в инструкции о проверке прокси.

Трафик, цена и срок

Ротационный резидентный трафик тарифицируется по гигабайтам на двух линиях: Budget — от US$1.50 за GB (US$1.35 за GB при 100 GB) и Premium — от US$5.00 за GB. Минимальная покупка — 1 GB. Оплата предоплатой, по мере использования, без подписки; купленные GB не сгорают.

Ротация IP против липкой сессии в Puppeteer

Страница ротационных резидентных прокси описывает два режима: каждый запрос идёт через другой настоящий домашний IP, а липкая сессия удерживает один резидентный IP на последовательность запросов. Ротация по каждому запросу подходит для парсинга множества страниц, проверок цен и любых задач, где один IP не должен накапливать историю; липкая сессия — для потоков входа, корзин и всего, что привязано к сессии.

Список прокси вести не нужно: один шлюз и один набор учётных данных несут весь трафик. Как именно линия переключается между двумя режимами, на странице продукта не описано — проверьте, а не предполагайте: откройте https://ipinfo.io/json дважды из скрипта и сравните IP выхода; разные адреса означают ротацию по каждому запросу, одинаковый адрес — что сессия удерживает один IP.

Пройти по URL, затем проверить поведение выхода

// Шлюз и учётные данные между задачами не меняются.
for (const url of urls) {
  await page.goto(url, { waitUntil: 'domcontentloaded' });
  // ...извлеките нужное
}

// Проверьте, какой режим у вашей линии: дважды откройте страницу-эхо IP
// и сравните IP выхода.
for (let i = 0; i < 2; i++) {
  await page.goto('https://ipinfo.io/json', { waitUntil: 'domcontentloaded' });
  console.log('Выход:', await page.$eval('body', (el) => el.textContent));
}

Готов к запуску: подставьте учётные данные Proxy302 и запустите через Node.js.

SOCKS5 в Puppeteer

Вход SOCKS5 — порт 3333 на том же шлюзе. Загвоздка сидит в самом браузере: SOCKS5-клиент Chromium — движка, которым управляет Puppeteer, — отправляет приветствие, предлагающее ровно один метод, "no authentication", и рукопожатие продолжается, только если сервер выберет его. SOCKS5-аутентификацию по логину и паролю Chromium не предлагает никогда, а каждое соединение Proxy302 требует ваш логин и пароль.

Практичных пути три. Первый: HTTP на порту 2222 — аутентификация проходит от начала до конца через page.authenticate(), как показано выше, и больше ничего не меняется. Второй: запустить на своей машине небольшой локальный форвардер, который принимает неавторизованное соединение браузера и пересылает его на авторизованный вход SOCKS5 — это оправдано только для задач, которым нужен именно SOCKS5, ведь обычный веб-трафик HTTP-путь несёт так же. Третий: работать с SOCKS5 из инструмента вне браузера, который сам выполняет SOCKS5-аутентификацию по логину и паролю.

SOCKS5 вне браузера: curl

curl -x socks5h://USERNAME:[email protected]:3333 https://ipinfo.io/json

Готов к запуску: подставьте учётные данные Proxy302 и запустите через Node.js.

Почему socks5h, а не socks5

Сохраняйте h в socks5h://. Документация libcurl определяет socks5h:// как "SOCKS5 Proxy. Proxy resolves URL hostname", тогда как обычный socks5:// разрешает имя хоста на вашей машине до соединения с прокси. Разрешение на стороне прокси держит представление сайта о вашем DNS в согласии с IP выхода. Та же документация подтверждает стиль учётных данных scheme://username:password@hostname из команды выше.

Частые ошибки и что проверить

net::ERR_NO_SUPPORTED_PROXIES: Список ошибок Chromium описывает её так: "There are no supported proxies in the provided list." Проверьте значение --proxy-server: сохраните поддерживаемую схему (http:// или socks5://) и корректный host:port.

net::ERR_PROXY_CONNECTION_FAILED: "Could not create a connection to the proxy server. An error occurred either in resolving its name, or in connecting a socket to it" — по списку ошибок Chromium. Проверьте написание хоста proxy.proxy302.com, порт 2222 (HTTP) или 3333 (SOCKS5) и что ваша сеть пропускает исходящие подключения к шлюзу.

HTTP 407 или повторяющиеся запросы авторизации: page.authenticate() должен отработать до первого page.goto(). Скопируйте логин и пароль заново — без лишних пробелов и переносов строк.

Страницы открываются, но показывают ваш IP: Аргумент запуска не дошёл до этого экземпляра браузера. Сначала выведите IP выхода, затем проверьте, что скрипт запускает именно тот браузер, который настраивает.

Таймауты на медленных сайтах: Поднимите таймаут page.goto() для этой задачи и убедитесь, что на аккаунте ещё есть трафик.

Частые вопросы

Как использовать прокси в Puppeteer?

Запустите браузер с args: ['--proxy-server=http://proxy.proxy302.com:2222'], вызовите page.authenticate({ username, password }) на странице до первой навигации и откройте https://ipinfo.io/json, чтобы убедиться, что IP выхода сменился. Ротационный резидентный трафик — от US$1.50 за GB, минимум 1 GB.

Как задать SOCKS5-прокси в Puppeteer?

Chromium принимает socks5://proxy.proxy302.com:3333 в --proxy-server, но его SOCKS5-клиент предлагает только метод без аутентификации, поэтому обязательный для каждого соединения Proxy302 вход по логину и паролю внутри браузера не завершится. Используйте HTTP на 2222 с page.authenticate(), поставьте локальный форвардер перед портом 3333 или работайте с SOCKS5 из инструмента вне браузера — например, curl с socks5h://.

Как ротировать прокси в Puppeteer?

Список прокси вести не нужно. Один шлюз и один набор учётных данных несут ротационный резидентный трафик, который страница продукта описывает двумя режимами: каждый запрос через другой домашний IP или липкая сессия, удерживающая один резидентный IP на последовательность запросов. Как переключать линию между режимами, страница не описывает — проверьте, прежде чем полагаться: дважды откройте https://ipinfo.io/json из скрипта и сравните IP выхода.

Как передать логин и пароль прокси?

Через page.authenticate({ username, password }) на каждой странице, до первого page.goto(). Он подаёт учётные данные HTTP-аутентификации для страницы; передайте null, чтобы сбросить их. Используйте те же логин и пароль Proxy302, что и в других инструментах, — они показаны в «Мои активы».

Какой протокол выбрать для Puppeteer — HTTP или SOCKS5?

HTTP на порту 2222. Это вход, где авторизация на стороне браузера проходит от начала до конца через page.authenticate(). SOCKS5 на 3333 оставьте инструментам, которые сами выполняют SOCKS5-аутентификацию по логину и паролю, например curl с socks5h://.

Почему в Puppeteer возникает 407 или ошибка соединения с прокси?

407 означает, что аутентификация не дошла до прокси: вызовите page.authenticate() до первой навигации и скопируйте учётные данные заново. Ошибка соединения чаще всего означает, что в --proxy-server указан неверный хост, порт или схема — proxy.proxy302.com:2222 с http:// — либо ваша сеть блокирует исходящие подключения к шлюзу.

Ссылки и источники

10
  1. Справочник Puppeteer API: LaunchOptions

    Сторонний источник · Проверено:

    Прочитано 28 октября 2026: args — "Additional command line arguments to pass to the browser instance."; headless — "Whether to run the browser in headless mode", по умолчанию true.

  2. Справочник Puppeteer API: page.authenticate()

    Сторонний источник · Проверено:

    Прочитано 28 октября 2026: предоставляет "credentials for HTTP authentication"; "Request interception will be turned on behind the scenes to implement authentication"; "To disable authentication, pass null."

  3. Исходный код Chromium: chrome/common/chrome_switches.h

    Сторонний источник · Проверено:

    Прочитано 28 октября 2026 из официального репозитория chromium/chromium (ветка main): комментарий над kProxyServer[] = "proxy-server" (строки 640–641) — "Uses a specified proxy server, overrides system settings."

  4. Исходный код Chromium: net/socket/socks5_client_socket.cc

    Сторонний источник · Проверено:

    Прочитано 28 октября 2026 из официального репозитория chromium/chromium (ветка main): приветствие SOCKS5 жёстко задано как kSOCKS5GreetWriteData {0x05, 0x01, 0x00} с комментарием "no authentication"; клиент требует, чтобы сервер выбрал метод 0x00, иначе рукопожатие завершается ошибкой (ERR_SOCKS_CONNECTION_FAILED). SOCKS5-аутентификацию по логину и паролю Chromium не предлагает никогда.

  5. Исходный код Chromium: net/base/proxy_server.cc

    Сторонний источник · Проверено:

    Прочитано 28 октября 2026 из официального репозитория chromium/chromium (ветка main): допустимые схемы прокси — SCHEME_HTTP, SCHEME_SOCKS4, SCHEME_SOCKS5, SCHEME_HTTPS и SCHEME_QUIC; порт по умолчанию для SOCKS4 и SOCKS5 — 1080.

  6. Исходный код Chromium: net/base/net_error_list.h

    Сторонний источник · Проверено:

    Прочитано 28 октября 2026 из официального репозитория chromium/chromium (ветка main): NO_SUPPORTED_PROXIES (-336) — "There are no supported proxies in the provided list."; PROXY_CONNECTION_FAILED (-130) — "Could not create a connection to the proxy server. An error occurred either in resolving its name, or in connecting a socket to it."

  7. Документация libcurl: CURLOPT_PROXY

    Сторонний источник · Проверено:

    Прочитано 28 октября 2026 из официального репозитория curl/curl (ветка master): "socks5h:// — SOCKS5 Proxy. Proxy resolves URL hostname" (у обычного socks5:// такой пометки нет); учётные данные прокси можно передавать в стиле URL scheme://username:password@hostname.

  8. Proxy302: адрес, порт и логин прокси

    Наблюдение за продуктом · Проверено:

    Прочитано на живом сайте 28 октября 2026: для ротационных резидентных прокси шлюз proxy.proxy302.com, порт 2222 для HTTP и 3333 для SOCKS5; HOST, PORT, USERNAME и PASSWORD показаны на странице «Мои активы».

  9. Proxy302: страница ротационных резидентных прокси

    Наблюдение за продуктом · Проверено:

    Прочитано на живом сайте 28 октября 2026: каждый запрос идёт через другой настоящий домашний IP; липкая сессия удерживает один резидентный IP на последовательность запросов; HTTP и SOCKS5; оплата по гигабайтам.

  10. Proxy302: страница тарифов

    Наблюдение за продуктом · Проверено:

    Прочитано на живом сайте 28 октября 2026 (страница указывает, что цены взяты из действующего прайс-листа от 18 октября 2026, в долларах США, 1 PTC = US$1.00): резидентная линия Budget — US$1.50/GB при любом объёме и US$1.35/GB при 100 GB; Premium — от US$5.00/GB; минимальная покупка 1 GB; купленные GB не сгорают; без подписки, оплата по мере использования.

Готовы попробовать?

Создайте аккаунт, пополните баланс и выберите ротируемый резидентный, статический ISP или дата-центр IP — настроить его в браузере можно за несколько минут.