Jak skonfigurować proxy w Playwright

Proxy w Playwright z loginem i hasłem w opcji proxy: Chromium, Firefox i WebKit, osobne proxy dla każdego kontekstu i ograniczenia SOCKS5.

Zaktualizowano · Redakcja Prokso

Dane do połączenia
Host
gw.prokso.com
Port
823 HTTP · 824 SOCKS5 — nowy IP przy każdym żądaniu · 10000–20000 stały IP na całą sesję, HTTP(S) i SOCKS5
Login i hasło
w panelu klienta, na stronie planu

Gotowe wiersze w potrzebnym formacie wygenerujesz w panelu klienta: wybierz kraj, typ IP i protokół.

W skrócie
  • Host gw.prokso.com, porty 823 (HTTP), 824 (SOCKS5), 10000–20000 (sesje sticky, HTTP lub SOCKS5)
  • Login i hasło znajdziesz w panelu klienta na stronie planu
  • Sprawdzaj IP w odpowiedzi na samo żądanie wysłane przez proxy: strona „Mój IP” w przeglądarce nie testuje Twojego skryptu

Instrukcja krok po kroku, jak podłączyć proxy Prokso w Playwright. Zajmie Ci to kilka minut.

Krok 1. Pobierz dane proxy z panelu klienta

Otwórz swój plan i skopiuj host gw.prokso.com, port, login i hasło. Port 823 to HTTP, a 824 to SOCKS5 (oba dają nowy IP przy każdym żądaniu); porty 10000–20000 utrzymują jeden IP (sesja sticky) przez maksymalnie 120 minut i działają zarówno jako HTTP, jak i SOCKS5 (każdy port to osobny adres). Kraj ustawiasz w loginie: username__cr.ua.

Blok „Dostęp” na stronie planu: host, porty, login i hasło do linii proxy
Blok „Dostęp” na stronie planu: host, porty, login i hasło do linii proxy

Krok 2. Ustaw proxy w opcjach uruchomienia

Playwright przyjmuje proxy razem z loginem i hasłem w opcji proxy – osobne uwierzytelnianie nie jest potrzebne. Działa w Chromium, Firefox i WebKit.

Krok 3. Uruchom przykład

Poniższy kod otwiera stronę i wypisuje IP proxy. W Pythonie składnia jest taka sama: 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();

Zapisz go jako check.mjs i uruchom node check.mjs.

Krok 4. Różne IP dla różnych kontekstów

Proxy możesz też ustawić dla każdego kontekstu osobno: browser.newContext({ proxy }). Dzięki temu jedna przeglądarka obsługuje kilka profili na różnych portach sticky.

Krok 5. Sprawdź IP w uruchomionej przeglądarce

Przykład z kroku 3 otwiera https://api.ipify.org w przeglądarce Playwright i wypisuje IP, który widzi strona – powinien różnić się od Twojego. Przy kilku kontekstach otwórz ten adres w każdym z nich: różne porty sticky dają różne IP. Twoja zwykła przeglądarka nie korzysta z tego proxy i pokaże Twój własny adres.

Przykład uruchomienia: w wyniku widać IP proxy, a nie Twoje. Na porcie 823 każde uruchomienie daje nowy adres
Przykład uruchomienia: w wyniku widać IP proxy, a nie Twoje. Na porcie 823 każde uruchomienie daje nowy adres

Proxy dla każdego kontekstu: kilka IP w jednej przeglądarce

Kontekst w Playwright to odizolowany profil z własnymi plikami cookie. Gdy każdemu kontekstowi przypiszesz osobny port sticky, dostaniesz kilka niezależnych sesji w jednej przeglądarce:

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();

To oszczędza pamięć w porównaniu z osobną przeglądarką dla każdej sesji.

Jak ograniczyć zużycie transferu

Blokuj ładowanie ciężkich zasobów przez route. Obrazy, wideo i fonty stanowią większość objętości strony, a do zbierania danych nie są potrzebne:

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();
});

Jeśli strona się nie otwiera

  • net::ERR_PROXY_CONNECTION_FAILED. Przeglądarka nie mogła połączyć się z proxy: sprawdź pole server.
  • net::ERR_TUNNEL_CONNECTION_FAILED. Proxy odrzuciło połączenie: sprawdź login, hasło i pozostały transfer.
  • Navigation timeout. Domyślne 30 sekund może nie wystarczyć dla adresów rezydencjalnych. Zwiększ timeout w page.goto().
  • SOCKS5 z hasłem w Chromium. Nie jest obsługiwane. Użyj HTTP lub dostępu po IP.

Więcej o kodach przeczytasz na stronie kody błędów proxy.

Jeśli proxy nie działa

Pytania i odpowiedzi (FAQ)

Czy proxy działa tak samo w Chromium, Firefox i WebKit?

Proxy HTTP z loginem i hasłem działa we wszystkich trzech. Różnice dotyczą SOCKS5: z hasłem nie jest obsługiwane w Chromium.

Jak ustawić proxy w testach Playwright Test?

W pliku konfiguracyjnym, w sekcji use, podaj ten sam obiekt proxy z polami server, username i password.

Czy mogę wyłączyć niektóre adresy z proxy?

Tak, obiekt proxy ma pole bypass, które przyjmuje listę domen rozdzielonych przecinkami.