Налаштування проксі в Playwright

Проксі в Playwright з логіном і паролем в опції proxy: Chromium, Firefox і WebKit, окремий проксі для кожного контексту й обмеження SOCKS5.

Оновлено · Редакція Prokso

Дані для підключення
Хост
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» у браузері ваш скрипт не перевіряє
Проксі в Playwright: коротка відеоінструкція · 0:33

Покрокова інструкція, як підключити проксі Prokso в Playwright. Займе кілька хвилин.

Крок 1. Візьміть дані проксі в особистому кабінеті

Відкрийте план і скопіюйте хост gw.prokso.com, порт, логін і пароль. Порт 823 — HTTP, 824 — SOCKS5 (обидва дають новий IP на кожен запит); порти 10000–20000 — фіксований IP (sticky-сесія) до 120 хвилин, працюють і як HTTP, і як SOCKS5 (кожен порт — окрема адреса). Країну задають у логіні: логін__cr.ua.

Блок «Доступ» на сторінці плану: хост, порти, логін і пароль для рядка проксі
Блок «Доступ» на сторінці плану: хост, порти, логін і пароль для рядка проксі

Крок 2. Вкажіть проксі в опціях запуску

Playwright приймає проксі разом із логіном і паролем в опції proxy — окрема авторизація не потрібна. Працює для Chromium, Firefox і WebKit.

Крок 3. Запустіть приклад

Код нижче відкриє сторінку й виведе IP-адресу проксі. У Python синтаксис такий самий: chromium.launch(proxy={...}).

import { chromium } from "playwright";

const browser = await chromium.launch({
  proxy: { server: "http://gw.prokso.com:823", username: "USERNAME", password: "PASSWORD" },
});
const page = await browser.newPage();
await page.goto("https://api.ipify.org");
console.log(await page.textContent("body"));
await browser.close();

Збережіть код як check.mjs і запустіть node check.mjs.

Крок 4. Різні IP для різних контекстів

Проксі можна задати й для окремого контексту: browser.newContext({ proxy }). Так в одному браузері працюють кілька профілів з різними фіксованими портами.

Крок 5. Перевірте IP у запущеному браузері

Приклад із кроку 3 відкриває https://api.ipify.org у браузері Playwright і виводить IP, який бачить сайт, — він має відрізнятися від вашого. Для кількох контекстів відкрийте цю адресу в кожному: на різних фіксованих портах IP будуть різні. Звичайний браузер на комп'ютері йде без проксі й покаже вашу адресу.

Приклад запуску: у виводі — IP проксі, а не ваш. На порту 823 кожен запуск дає нову адресу
Приклад запуску: у виводі — IP проксі, а не ваш. На порту 823 кожен запуск дає нову адресу

Проксі на контекст: кілька IP в одному браузері

Контекст у Playwright — це ізольований профіль зі своїми cookie. Задавши кожному контексту свій фіксований порт, ви отримуєте кілька незалежних сесій в одному браузері:

const browser = await chromium.launch();

for (const port of [10001, 10002]) {
  // each context has its own cookies and its own sticky IP
  const context = await browser.newContext({
    proxy: { server: `http://gw.prokso.com:${port}`, username: "USERNAME", password: "PASSWORD" },
  });
  const page = await context.newPage();
  await page.goto("https://prokso.com/ip");
  console.log(port, await page.textContent("body"));
  await context.close();
}
await browser.close();

Це заощаджує пам'ять порівняно з окремим браузером на кожну сесію.

Як скоротити витрату трафіку

Скасовуйте завантаження важких ресурсів через route. Картинки, відео та шрифти дають більшу частину обсягу сторінки й для збирання даних не потрібні:

await page.route("**/*", (route) => {
  // skip heavy resources: they are not needed for data collection
  const skip = ["image", "media", "font"].includes(route.request().resourceType());
  return skip ? route.abort() : route.continue();
});

Якщо сторінка не відкривається

  • net::ERR_PROXY_CONNECTION_FAILED. Браузер не достукався до проксі: перевірте поле server.
  • net::ERR_TUNNEL_CONNECTION_FAILED. Проксі відповів відмовою: перевірте логін, пароль і залишок трафіку.
  • Тайм-аут навігації. Стандартних 30 секунд буває замало для резидентських адрес. Збільште тайм-аут у page.goto().
  • SOCKS5 з паролем у Chromium. Не підтримується. Використовуйте HTTP або доступ за IP.

Докладніше про коди — на сторінці коди помилок проксі.

Питання й відповіді

Чи працює проксі однаково в Chromium, Firefox і WebKit?

HTTP-проксі з логіном і паролем працює в усіх трьох. Відмінності стосуються SOCKS5: з паролем він у Chromium не підтримується.

Як задати проксі в тестах Playwright Test?

У файлі конфігурації в розділі <code>use</code> вкажіть той самий об'єкт <code>proxy</code> з полями <code>server</code>, <code>username</code> і <code>password</code>.

Чи можна частину адрес пустити повз проксі?

Так, в об'єкті <code>proxy</code> є поле <code>bypass</code> зі списком доменів через кому.