Jak skonfigurować uwierzytelniane proxy w Puppeteer (Node.js)
Updated:
Puppeteer steruje przeglądarkami Chrome i Chromium przez DevTools Protocol (CDP), oferując natywne API await page.authenticate({ username, password }) do obsługi uwierzytelniania proxy HTTP 407. Połączenie parametru --proxy-server=http://ip:port z page.authenticate() pozwala Twoim scraperom w Node.js kierować ruch przez statyczne proxy VinaProxy bez użycia zewnętrznych rozszerzeń przeglądarki.
--proxy-server=http://ip:port + page.authenticate({ username, password })- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
- 1 IP40 000 VND
- 5+ IP35 000 VND
- 10+ IP25 000 VND
- 20+ IP25 000 VND
- 50+ IP25 000 VND
- 100+ IP25 000 VND
- 200+ IP25 000 VND
- 500+ IP25 000 VND
- 1000+ IP22 000 VND
- 2000+ IP20 000 VND
Dwuetapowa konfiguracja proxy w Puppeteer
Nigdy nie umieszczaj user:pass@ wewnątrz argumentu startowego --proxy-server. Zamiast tego przekaż host i port przy uruchomieniu, a uwierzytelnianie przeprowadź na instancji Page:
| Krok | Kod Puppeteer | Dlaczego to ważne |
|---|---|---|
| 1. Uruchom Chromium | puppeteer.launch({ args: ['--proxy-server=http://ip:port'] }) | Kieruje gniazdo sieciowe Chromium na Twoje proxy VinaProxy |
| 2. Uwierzytelnij stronę | await page.authenticate({ username, password }) | Przekazuje dane logowania CDP dla żądań HTTP 407 |
| 3. Przejdź do adresu | await page.goto(url, { waitUntil: 'domcontentloaded' }) | Wczytuje docelowy URL przez uwierzytelniony tunel |
Rotacja wielu proxy między kartami za pomocą proxy-chain
- Pamiętaj, że działanie
page.authenticate()jest ograniczone do konkretnej kartyPage— wywołuj je dla każdej nowej karty zwróconej przezbrowser.newPage() - Aby używać różnych proxy w kontekstach incognito w ramach jednego procesu Chromium, owiń każdy adres
http://user:pass@ip:portpakietem npmproxy-chain(anonymizeProxy()) i przekażproxyServerdobrowser.createBrowserContext({ proxyServer }) - Rozwiązanie kompatybilne z
puppeteer-extraorazpuppeteer-extra-plugin-stealth
Krok po kroku
- 1
Przekaż --proxy-server=http://ip:port do puppeteer.launch()
Uruchom przeglądarkę za pomocą
const browser = await puppeteer.launch({ args: ['--proxy-server=http://ip:port'] });. - 2
Wywołaj await page.authenticate() na nowej stronie
Otwórz kartę przez
const page = await browser.newPage();i wywołajawait page.authenticate({ username: 'USER', password: 'PASS' });. - 3
Przetestuj wyjściowy adres IP
Wykonaj
await page.goto('https://vinaproxy.com/api/my-ip');i sprawdź zwrócony JSON. - 4
Zamknij procesy przeglądarki
Wywołaj
await browser.close();po zakończeniu zadania.
Często zadawane pytania
Dlaczego Puppeteer zgłasza błąd `ERR_NO_SUPPORTED_PROXIES`?
Ten błąd pojawia się, gdy dodasz user:pass@ wewnątrz --proxy-server=http://user:pass@ip:port. Zachowaj czysty format --proxy-server=http://ip:port, a dane logowania przekaż przez await page.authenticate({ username, password }).
Dlaczego druga karta otwarta przez `browser.newPage()` zwróciła błąd HTTP 407?
page.authenticate() działa per karta. Wywołaj await secondPage.authenticate({ username, password }) przed przejściem pod adres na każdej nowo otwartej karcie.
Czy proxy VinaProxy są bez limitu danych przy scrapingu w headless Chrome?
Tak. Wszystkie plany Dedykowane IPv4 oraz Statyczne ISP zawierają nielimitowany miesięczny transfer.
Wzmocnij swoją infrastrukturę Node.js Puppeteer statycznymi IP
Błyskawiczne nielimitowane proxy Dedykowane IPv4 i Statyczne ISP w 7 krajach.
Kup proxy do Puppeteer