Bez KYC — brak dowodu, selfie i dokumentów. Płać w kryptowalutach: BTC, USDT, USDC, ETH, SOL, LTC
Język: Polski
Rozpocznij

Dokumentacja · Puppeteer · Chrome for Testing

Uwierzytelnianie proxy Puppeteer z proxy rezydencjalnymi i mobilnymi proxy 4G

Chrome pobiera adres proxy z flagi uruchomieniowej, a dane uwierzytelniające z page.authenticate(). Używaj jednego kontekstu przeglądarki na sesję, żeby dane uwierzytelniające nigdy nie przeciekały między zadaniami.

Ostatnia aktualizacja: · 4 min czytania

Szybka odpowiedź

Jak używać uwierzytelnionego proxy w Puppeteer?

Uruchom Chrome z --proxy-server=http://gw.crawlrelay.com:7777, potem wywołaj page.authenticate({ username, password }) przed pierwszym goto. Chrome ignoruje dane uwierzytelniające wpisane we flagę. CrawlRelay proxy rezydencjalne odczytują kraj i trwałą sesję z nazwy użytkownika, więc każda strona lub kontekst może mieć własne IP wyjściowe. Transfer kosztuje 0,50 USD/GB od 50 GB. Płatność w crypto, bez KYC.

Szybka konfiguracja Puppeteer

Adres proxy--proxy-server=http://gw.crawlrelay.com:7777 w args lub proxyServer na kontekst przeglądarki
Dane uwierzytelniająceawait page.authenticate({ username, password }) przed nawigacją
Osobne sesjebrowser.createBrowserContext({ proxyServer }): jeden kontekst na sesję
SOCKS5Nie działa z uwierzytelnianiem w Chrome: używaj portu HTTP
Oszczędzanie transferupage.setRequestInterception(true) i blokuj obrazy, czcionki oraz multimedia

Jak skonfigurować pojedyncze uwierzytelnione proxy?

To jest minimalny wzorzec. Blok try … finally zamyka Chrome nawet gdy nawigacja się nie powiedzie, co ma znaczenie na serwerach z porzuconymi procesami przeglądarek.

Node.js (moduł ES): jedna przeglądarka, jedno IP wyjściowe
import puppeteer from "puppeteer";

const browser = await puppeteer.launch({
  args: ["--proxy-server=http://gw.crawlrelay.com:7777"],
});
try {
  const page = await browser.newPage();
  await page.authenticate({ username: "USERNAME-country-us", password: "PASSWORD" });
  await page.setRequestInterception(true);
  page.on("request", (req) =>
    ["image", "font", "media"].includes(req.resourceType()) ? req.abort() : req.continue()
  );
  const res = await page.goto("https://example.com/", { waitUntil: "domcontentloaded", timeout: 60000 });
  console.log(res.status(), await page.title());
} finally {
  await browser.close();
}

Jak uruchomić kilka sesji lub krajów w jednej przeglądarce?

Utwórz jeden kontekst przeglądarki na sesję. Kontekst to izolowany profil z własnymi ciasteczkami, cache i stanem sieci, więc dane uwierzytelniające z jednego kontekstu nie przeciekają do innego. Nadaj każdemu kontekstowi nazwę użytkownika z własnym krajem lub ID sesji.

Node.js: jeden kontekst na trwałą sesję
import puppeteer from "puppeteer";
import { randomUUID } from "node:crypto";

const GATEWAY = "http://gw.crawlrelay.com:7777";
const browser = await puppeteer.launch();

async function visit(country, url) {
  const session = randomUUID().replaceAll("-", "").slice(0, 10);
  const context = await browser.createBrowserContext({ proxyServer: GATEWAY });
  try {
    const page = await context.newPage();
    await page.authenticate({
      username: `USERNAME-country-${country}-session-${session}-ttl-20`,
      password: "PASSWORD",
    });
    await page.goto(url, { waitUntil: "domcontentloaded", timeout: 60000 });
    return { country, session, ip: await page.evaluate(() => document.body.innerText.trim()) };
  } finally {
    await context.close();
  }
}

try {
  const results = await Promise.all([
    visit("us", "https://api.ipify.org"),
    visit("gb", "https://api.ipify.org"),
  ]);
  console.table(results);
} finally {
  await browser.close();
}

Dlaczego Puppeteer pokazuje błąd 407 lub ERR_TUNNEL_CONNECTION_FAILED?

Bo Chrome nie wysłał danych uwierzytelniających lub wysłał błędne. Sprawdź trzy rzeczy:

  1. page.authenticate() wywoływany jest przed pierwszym goto na tej stronie.
  2. Flaga --proxy-server lub proxyServer zawiera tylko schemat, host i port, bez części user:pass@.
  3. Nazwa użytkownika nie ma literówek w części docelowej: przetestuj ją najpierw curl, jak pokazano na stronie 407.

Jeśli curl działa z tym samym użytkownikiem i hasłem, a Puppeteer dalej nie, przeczytaj ERR_TUNNEL_CONNECTION_FAILED.

Ile transferu zużywa strona w Puppeteer?

Wszystko co Chrome pobiera, jest rozliczane: HTML, skrypty, style, obrazy, czcionki oraz wywołania API z strony. HTTP Archive Web Almanac 2025 zmierzył medianę wielkości strony na 2 164 KB na mobilnych oraz 2 412 KB na desktopie. Blokowanie obrazów, czcionek i multimediów przez przechwytywanie żądań zwykle redukuje to do kilkuset kilobajtów, a zwracanie z cache powtarzających się skryptów obniża dalej transfer. Używaj rotujących mobilnych proxy 4G tylko tam gdzie potrzebne: transfer mobilny kosztuje 1,50 USD/GB od 5 GB, proxy rezydencjalne 0,50 USD/GB od 50 GB.

Puppeteer i proxy: pytania

Czy mogę umieścić nazwę użytkownika i hasło w --proxy-server?

Nie. Chrome ignoruje dane uwierzytelniające we fladze --proxy-server, a pierwsze żądanie HTTPS kończy się błędem 407 ukrytym pod ERR_TUNNEL_CONNECTION_FAILED. We fladze podaj tylko http://host:port, a dane uwierzytelniające przekazuj przez page.authenticate() na każdej nowej stronie.

Jak rotować IP między stronami w Puppeteer?

Otwieraj każdą stronę w nowym kontekście przeglądarki lub daj każdej stronie nazwę użytkownika bez ID sesji. Nowy kontekst otwiera nowe połączenia, a każde połączenie zwykle ma inne proxy rezydencjalne jako wyjście. W obrębie jednej strony Chrome ponownie używa połączeń, więc żądania do tego samego serwisu często korzystają z tego samego IP wyjściowego do zamknięcia połączenia.

Czy page.authenticate() działa z przechwytywaniem żądań?

Tak. Puppeteer sam obsługuje wyzwania uwierzytelniania proxy, a Twój handler przechwytywania musi tylko wywołać continue() lub abort() dla każdego żądania. Najpierw skonfiguruj authenticate(), a potem włącz przechwytywanie, jak w pierwszym przykładzie.

Czy warto używać wtyczek stealth z puppeteer-extra razem z proxy?

Nie dokumentujemy ani nie wspieramy narzędzi mających na celu ukrycie automatyzacji lub obejście detekcji botów. Ich celem jest ominięcie decyzji serwisów o filtrowaniu odwiedzających automatycznych, co jest niezgodne z naszą Polityką Akceptowalnego Użytkowania. Renderuj strony publiczne w umiarkowanym tempie i korzystaj z oficjalnych API, jeśli strony je udostępniają.

Z którego Chrome korzysta Puppeteer z proxy?

Najnowsze wersje Puppeteer pobierają dopasowaną wersję Chrome for Testing i używają jej domyślnie. Flagi proxy i page.authenticate() działają w nim tak samo jak w zwykłym Chrome. Jeśli wskażesz Puppeteer na własnego Chrome z executablePath, dbaj o jego aktualizacje.

Uruchom Puppeteer przez proxy rezydencjalne

5,94 USD dla 10 GB, 0,50 USD/GB od 50 GB.

Od 0,50 USD/GB · bez KYC

Rozpocznij