NP NEONPROXYPROXY NETWORK
КупитьЦеныFAQПартнёркаБлог Прокси-чекерМой IPAPI TG-бот

Настройка прокси в Puppeteer: полный гайд

Puppeteer управляет headless Chrome из Node.js — идеален для рендеринга SPA, скриншотов и сбора данных с сайтов, где нужен JavaScript. Прокси направляет трафик браузера через внешний IP: полезно для гео-тестов, распределения нагрузки и изоляции сессий. Ниже — рабочие конфигурации для прокси NEONPROXY (HTTPS и SOCKS5). Используйте их только для задач, разрешённых robots.txt и Terms of Service целевых сайтов.

Базовый HTTP-прокси при запуске

Самый простой способ — передать адрес через аргумент --proxy-server. Логин и пароль передаются отдельно через page.authenticate():

const puppeteer = require('puppeteer');

const PROXY_HOST = '123.45.67.89';
const PROXY_PORT = '8080';
const PROXY_USER = 'your_login';
const PROXY_PASS = 'your_password';

(async () => {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: [`--proxy-server=http://${PROXY_HOST}:${PROXY_PORT}`]
  });
  const page = await browser.newPage();
  await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });

  await page.goto('https://api.ipify.org?format=json');
  console.log(await page.content());

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

Убедитесь, что IP в ответе совпадает с ожидаемым — проверьте также через «Мой IP» в обычном браузере с тем же прокси.

SVYAZVPN — свобода без границ

SOCKS5 в Puppeteer

Chrome принимает SOCKS5 через тот же аргумент. Для NEONPROXY укажите socks5://host:port:

const browser = await puppeteer.launch({
  args: ['--proxy-server=socks5://123.45.67.89:1080']
});
const page = await browser.newPage();
await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });

Разница протоколов — в статье SOCKS5 vs HTTPS.

Ротация пула прокси

Для парсинга публичных страниц запускайте новый browser context на каждый IP или меняйте прокси между задачами. Не ротируйте IP внутри авторизованной сессии — см. ротацию прокси:

const proxies = [
  { host: '1.2.3.4', port: '8080' },
  { host: '5.6.7.8', port: '8080' }
];

async function browseWithProxy(proxy) {
  const browser = await puppeteer.launch({
    headless: 'new',
    args: [`--proxy-server=http://${proxy.host}:${proxy.port}`]
  });
  const page = await browser.newPage();
  await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });
  await page.goto('https://example.com', { waitUntil: 'networkidle2' });
  const title = await page.title();
  await browser.close();
  return title;
}

Обход типичных ошибок

ERR_NO_SUPPORTED_PROXIES — неверный формат адреса или SOCKS без поддержки в сборке Chrome. 407 Proxy Authentication Required — забыли page.authenticate(). Timeout — прокси перегружен; проверьте latency в чекере.

Отключите WebRTC-утечки, если тестируете анонимность: Chrome в headless обычно не светит локальный IP, но при полном Chrome добавьте флаги или используйте puppeteer-extra-plugin-stealth осознанно и только в легальных сценариях.

puppeteer-core и удалённый Chrome

В Docker подключайте puppeteer-core к системному Chromium и передавайте те же --proxy-server args. Список прокси можно подгружать из API NEONPROXY при старте воркера.

Выбор типа прокси под задачу

Публичный краулинг с высокой частотой — IPv6 или shared IPv4 с ротацией. Авторизованные кабинеты и соцсети — один приватный IPv4 на сессию. Критерии — в гайде по выбору. Альтернатива Puppeteer — Playwright с встроенной поддержкой proxy в context.

Оформить прокси для проекта — на странице заказа.