- Хост
- gw.prokso.com
- Порт
- 823 HTTP · 824 SOCKS5 — новый IP на каждый запрос · 10000–20000 фиксированный IP (sticky-сессия), HTTP(S) и SOCKS5
- Логин и пароль
- в кабинете, на странице плана
Готовые строки в нужном формате генерирует кабинет: выберите страну, тип IP и протокол.
- Хост — gw.prokso.com, порты 823 (HTTP), 824 (SOCKS5), 10000–20000 (фиксированный IP, HTTP или SOCKS5)
- Логин и пароль — в кабинете на странице плана
- Проверяйте IP в ответе самого запроса через прокси: страница «Мой IP» в браузере ваш скрипт не проверяет
Пошаговая инструкция, как подключить прокси Prokso в Puppeteer. Займёт несколько минут.
Шаг 1. Возьмите данные прокси в кабинете
Откройте план и скопируйте хост gw.prokso.com, порт, логин и пароль. Порт 823 — HTTP, 824 — SOCKS5 (оба дают новый IP на каждый запрос); порты 10000–20000 — фиксированный IP до 120 минут, работают и как HTTP, и как SOCKS5 (каждый порт — отдельный адрес). Страну задают в логине: логин__cr.ua.

Шаг 2. Передайте прокси при запуске
Chromium в Puppeteer берёт прокси из аргумента --proxy-server. Укажите только хост и порт — без логина.
Шаг 3. Авторизуйтесь на странице
Логин и пароль передайте через page.authenticate() до первого перехода. Пример ниже откроет страницу и выведет IP прокси.
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({ args: ["--proxy-server=http://gw.prokso.com:823"] });
const page = await browser.newPage();
await page.authenticate({ username: "USERNAME", password: "PASSWORD" });
await page.goto("https://api.ipify.org");
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();Сохраните код как check.mjs и запустите node check.mjs.
Шаг 4. Один IP на сессию
Для работы с аккаунтами запускайте каждый браузер на своём фиксированном порту 10000–20000: так cookies и IP не перемешаются.
Шаг 5. Проверьте IP в запущенном браузере
Пример из шага 3 открывает https://api.ipify.org в браузере Puppeteer и печатает в консоль IP, который видит сайт, — он должен отличаться от вашего. Можно открыть и https://prokso.com/ru/tools/my-ip через page.goto(): там видна ещё и страна. Ваш обычный Chrome идёт без прокси и покажет ваш адрес.

Как сократить расход трафика
Браузер загружает всё: картинки, шрифты, видео, рекламу. Для сбора данных это лишнее. Перехват запросов позволяет отменить то, что не нужно:
await page.setRequestInterception(true);
page.on("request", (req) => {
// skip heavy resources: they are not needed for data collection
const skip = ["image", "media", "font"].includes(req.resourceType());
skip ? req.abort() : req.continue();
});На страницах с большим количеством картинок это сокращает объём в несколько раз. Стили лучше не блокировать: без них часть сайтов рисует страницу иначе, и нужные элементы могут не появиться.
Отдельный IP для каждого браузера
Аргумент --proxy-server задаётся при запуске и действует на весь браузер. Сменить прокси у работающего браузера нельзя. Чтобы получить другой IP, запустите ещё один браузер с другим фиксированным портом или перезапустите текущий.
Для аккаунтов добавьте к прокси отдельную папку профиля через userDataDir: тогда у каждого аккаунта свои cookie и свой IP.
Если страница не открывается
- net::ERR_PROXY_CONNECTION_FAILED. Браузер не достучался до прокси: проверьте хост и порт в аргументе запуска.
- net::ERR_TUNNEL_CONNECTION_FAILED. Прокси ответил отказом: неверные логин и пароль или закончился трафик.
- net::ERR_INVALID_AUTH_CREDENTIALS.
page.authenticate()вызван после перехода или с опечаткой. Вызывайте его до первогоpage.goto(). - Тайм-аут навигации. Через резидентские адреса страницы грузятся дольше. Увеличьте тайм-аут в
page.goto().
Разбор первых двух ошибок — на страницах ERR_PROXY_CONNECTION_FAILED и ERR_TUNNEL_CONNECTION_FAILED.
Вопросы и ответы
Нужно ли вызывать page.authenticate() для каждой вкладки?
Да. Авторизация задаётся для страницы, поэтому вызывайте её для каждой новой вкладки до перехода.
Можно ли обойтись без логина и пароля?
Да. Добавьте IP компьютера или сервера в блок «Доступ по IP без пароля» на странице плана — тогда <code>page.authenticate()</code> не нужен.
Работает ли прокси в headless-режиме?
Да, одинаково в обоих режимах.