Jak skonfigurować proxy w Puppeteer

Proxy w Puppeteer: flaga --proxy-server, dane logowania przez page.authenticate(), osobny port sticky dla każdej przeglądarki i oszczędzanie transferu.

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 Puppeteer. Zajmie 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) do 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. Przekaż proxy przy uruchomieniu

Chromium w Puppeteer pobiera proxy z argumentu --proxy-server. Podaj tylko host i port – bez loginu i hasła.

Krok 3. Uwierzytelnij się na stronie

Przekaż login i hasło przez page.authenticate() przed pierwszą nawigacją. Poniższy przykład otwiera stronę pokazującą Twój 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();

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

Krok 4. Jeden IP na sesję

Przy pracy z kontami uruchamiaj każdą przeglądarkę na osobnym porcie sticky 10000–20000, żeby pliki cookie i adresy IP się nie mieszały.

Krok 5. Sprawdź IP w uruchomionej przeglądarce

Przykład z kroku 3 otwiera https://api.ipify.org w przeglądarce Puppeteer i wypisuje IP, który widzi strona – powinien różnić się od Twojego. Możesz też otworzyć https://prokso.com/pl/tools/my-ip przez page.goto(), żeby zobaczyć kraj. Twój zwykły Chrome 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

Jak zmniejszyć zużycie transferu

Przeglądarka pobiera wszystko: obrazy, czcionki, wideo, reklamy. Przy zbieraniu danych to zbędne. Przechwytywanie żądań pozwala anulować to, czego nie potrzebujesz:

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

Na stronach z dużą liczbą obrazów zmniejsza to wolumen kilkukrotnie. Lepiej nie blokować stylów: bez nich niektóre strony renderują się inaczej i potrzebne elementy mogą się nie pojawić.

Osobny IP dla każdej przeglądarki

Argument --proxy-server ustawia się przy uruchomieniu i dotyczy całej przeglądarki. Nie da się zmienić proxy w działającej przeglądarce. Aby dostać inny IP, uruchom kolejną przeglądarkę z innym portem sticky albo zrestartuj obecną.

Przy pracy z kontami dodaj do proxy osobny folder profilu przez userDataDir: wtedy każde konto ma własne pliki cookie i własny IP.

Jeśli strona się nie otwiera

  • net::ERR_PROXY_CONNECTION_FAILED. Przeglądarka nie mogła połączyć się z proxy: sprawdź host i port w argumencie uruchomienia.
  • net::ERR_TUNNEL_CONNECTION_FAILED. Proxy odrzuciło połączenie: login lub hasło są nieprawidłowe albo skończył się transfer.
  • net::ERR_INVALID_AUTH_CREDENTIALS. page.authenticate() zostało wywołane po nawigacji albo z literówką. Wywołaj je przed pierwszym page.goto().
  • Timeout nawigacji. Przez adresy rezydencjalne strony ładują się wolniej. Zwiększ timeout w page.goto().

Omówienie dwóch pierwszych błędów znajdziesz na stronach ERR_PROXY_CONNECTION_FAILED i ERR_TUNNEL_CONNECTION_FAILED.

Jeśli proxy nie działa

Pytania i odpowiedzi (FAQ)

Czy trzeba wywoływać page.authenticate() dla każdej karty?

Tak. Uwierzytelnianie ustawia się dla każdej strony osobno, więc wywołaj je dla każdej nowej karty przed nawigacją.

Czy mogę obejść się bez loginu i hasła?

Tak. Dodaj IP swojego komputera lub serwera w bloku „Biała lista IP (bez hasła)” na stronie planu: wtedy page.authenticate() nie jest potrzebne.

Czy proxy działa w trybie headless?

Tak, działa tak samo w obu trybach.