Proxy z loginem w Puppeteer i Playwright: jak przekazać i co znaczą błędy
Obie biblioteki sterują przeglądarką, a Chromium nie bierze loginu i hasła z adresu proxy. Dlatego dane logowania przekazuje się osobno, a każda biblioteka robi to po swojemu.
Zaktualizowano · Redakcja Prokso
- Flaga --proxy-server nie przyjmuje loginu i hasła: Chromium odrzuca taki adres
- W Puppeteer login przekazuje page.authenticate(), w Playwright – pola username i password w opcji proxy
- SOCKS5 z loginem w Chromium nie działa: używaj portu HTTP 823 lub dostępu po IP
Co oznacza błąd
Flaga --proxy-server przyjmuje tylko schemat, host i port. Kod źródłowy Chromium odrzuca adres proxy z loginem i hasłem, więc linia http://LOGIN:HASŁO@gw.prokso.com:823 kończy się błędem net::ERR_NO_SUPPORTED_PROXIES.
W Puppeteer dane logowania przekazuje metoda page.authenticate({username, password}). Według dokumentacji dostarcza ona dane do uwierzytelniania HTTP i w tym celu w tle włącza przechwytywanie żądań, co może wpłynąć na wydajność. Metoda należy do strony, więc wywołuj ją dla każdej nowej strony przed page.goto().
W Playwright proxy ustawia się opcją proxy: {server, username, password}. Dokumentacja podaje, że obsługiwane są HTTP(S) i SOCKSv5, proxy można ustawić dla całej przeglądarki albo dla osobnego kontekstu, a login i hasło opisano tylko dla proxy HTTP(S). Krótki zapis gw.prokso.com:823 jest traktowany jako proxy HTTP.
Przyczyny
- Login w --proxy-server. Chromium odrzuca taki adres i przeglądarka zostaje bez proxy: net::ERR_NO_SUPPORTED_PROXIES.
- Brak lub złe dane logowania. Kod -338 net::ERR_INVALID_AUTH_CREDENTIALS w Chromium oznacza, że nie udało się ustalić danych logowania podczas uwierzytelniania HTTP. Sprawdź, czy uwierzytelnianie jest wywołane i czy login oraz hasło są poprawne; o samym kodzie – na stronie 407.
- Przeglądarka nie dotarła do proxy. Kod -130 net::ERR_PROXY_CONNECTION_FAILED oznacza, że nie udało się utworzyć połączenia z serwerem proxy: błąd w rozwiązywaniu nazwy hosta lub w połączeniu gniazda. W Firefoksie pod Playwright odpowiednikiem jest NS_ERROR_PROXY_CONNECTION_REFUSED: próba połączenia z proxy się nie udała.
- SOCKS5 z loginem w Chromium. Chromium nie obsługuje uwierzytelniania dla SOCKSv5, więc page.authenticate() tu nie pomoże: uzgadnianie zakończy się błędem SOCKS.
- Tunel się nie otworzył. Jeśli połączenie z proxy jest, ale CONNECT do strony się nie udał, pojawi się ERR_TUNNEL_CONNECTION_FAILED.
Jak to naprawić
- Puppeteer: uruchamiaj z
--proxy-server=http://gw.prokso.com:823, a potem wywołajawait page.authenticate({username: 'LOGIN', password: 'HASŁO'})przed przejściem na stronę. Pełny przykład – w instrukcji Puppeteer. - Playwright: przekaż
proxy: {server: 'http://gw.prokso.com:823', username: 'LOGIN', password: 'HASŁO'}dolaunch(). Szczegóły – w instrukcji Playwright. - Dla SOCKS5 w Chromium włącz dostęp po IP (do 5 adresów w panelu klienta) i używaj
socks5://gw.prokso.com:824bez loginu albo przejdź na port HTTP 823 z loginem. - Potrzebujesz jednego IP na cały scenariusz – bierz port z zakresu 10000–20000: trzyma stały IP przez czas trwania sesji (1–120 min, domyślnie 30). Więcej – sesja sticky.
- Jeśli widzisz ERR_PROXY_CONNECTION_FAILED, sprawdź host gw.prokso.com, port i sieć według strony błędu połączenia z proxy.
Jak sprawdzić, czy działa
Po uruchomieniu otwórz https://prokso.com/ip na tej samej stronie i przeczytaj JSON: pola ip, country i org powinny należeć do proxy, a nie do Twojego połączenia. To samo widać na stronie sprawdzania IP.
Diagnoza w 2 minuty
Najpierw wklej linię do sprawdzania proxy. Jeśli tam proxy działa, przyczyna leży w programie lub jego ustawieniach. Jeśli nie - sprawdź linię z terminala:
curl -v -x "http://LOGIN:HASŁO@gw.prokso.com:823" https://api.ipify.org
- Wiersz
< HTTP/1.1 407zaraz poCONNECToznacza, że odpowiada proxy. Nazwa po kodzie, na przykładNO_USER, wskazuje przyczynę. - Proxy odpowiedziało na
CONNECTkodem 200, a potem przyszedł inny kod - proxy działa, tę odpowiedź dała strona. - Brak odpowiedzi, tylko przekroczony czas - połączenie nie dotarło do proxy: sprawdź host, port i sieć.
Instrukcje, w których pojawia się ten błąd
Pytania i odpowiedzi (FAQ)
Czy można ustawić różne proxy dla różnych kart?
Flaga --proxy-server ustawia proxy dla całej przeglądarki. W Playwright dokumentacja pozwala ustawić proxy także dla osobnego kontekstu, więc różne konteksty mogą iść przez różne porty.
Dlaczego page.authenticate() nie działa z SOCKS5?
Metoda odpowiada na żądanie uwierzytelniania HTTP. Chromium nie obsługuje uwierzytelniania dla SOCKSv5, więc prośby o logowanie po prostu nie będzie. Używaj portu HTTP lub dostępu po IP.
Skąd wziąć login i hasło?
Skopiuj linię proxy w panelu klienta na stronie planu. Jak zbudowany jest login i jakie parametry się do niego dodaje – na stronie <a href="/pl/help/gateway">bramy</a>.
Inne błędy proxy
Rezydencjalne $1.59, mobilne $2.50, serwerowe $0.65 za 1 GB
Rejestracja w minutę, dostęp od razu po płatności.