Kody błędów curl przy pracy przez proxy
curl kończy działanie kodem liczbowym i krótkim komunikatem. Przez proxy najczęściej pojawia się sześć kodów, a numer pokazuje, na którym etapie zatrzymało się żądanie.
Zaktualizowano · Redakcja Prokso
- Kody 5, 7 i 28 oznaczają, że żądanie nie dotarło do proxy: nazwa hosta, połączenie lub limit czasu
- Kody 56 i 97 najczęściej oznaczają, że protokół nie pasuje do portu lub login odrzucono
- Uruchom polecenie ponownie z opcją -v i sprawdź host gw.prokso.com, port i schemat adresu
Co oznacza błąd
Liczba w nawiasie w linii curl: (N) to kod wyjścia, taki sam jak kod błędu libcurl. Dokumentacja libcurl opisuje je tak: (5) CURLE_COULDNT_RESOLVE_PROXY – nie udało się ustalić adresu proxy na podstawie nazwy hosta; (7) CURLE_COULDNT_CONNECT – nie udało się połączyć z hostem lub proxy; (28) CURLE_OPERATION_TIMEDOUT – upłynął ustawiony limit czasu.
(35) CURLE_SSL_CONNECT_ERROR – problem gdzieś podczas uzgadniania SSL/TLS; (56) CURLE_RECV_ERROR – błąd odbierania danych z sieci; (97) CURLE_PROXY – błąd uzgadniania z proxy. Dla kodu 97 libcurl osobno podaje, co dokładnie poszło nie tak.
Kody 5, 7 i 28 zwykle oznaczają, że żądanie nie dotarło do proxy. Kody 56 i 97 – że połączenie jest, ale program i proxy się nie dogadały. Kod 35 najczęściej dotyczy szyfrowania między Tobą a stroną, a nie samego proxy.
Przyczyny
- (5) – nazwa bramy nie zamienia się na adres. Literówka w nazwie hosta, zbędny znak w linii lub niedziałający DNS w Twojej sieci. Prawidłowy host to
gw.prokso.com. - (7) – połączenie odrzucone. Brama albo sieć po Twojej stronie odmówiła połączenia: na przykład firmowa zapora blokuje wyjście na niestandardowe porty.
- (28) – brak odpowiedzi na czas. Na portach spoza 823, 824 i 10000–20000 brama w ogóle nie odpowiada, więc curl czeka do upływu limitu. Tak samo kończy się zbyt krótki limit w opcjach
-mlub--connect-timeout. - (35) – błąd TLS ze stroną. Uzgadnianie TLS z samą stroną się nie udało. Najczęściej antywirus lub sieć firmowa przechwytuje szyfrowane połączenia i podstawia własny certyfikat.
- (56) i (97) – protokół nie pasuje do portu lub login odrzucono. Kodem 56 curl kończy działanie, gdy żądanie HTTP idzie na port 824 (SOCKS5), gdy adres proxy zaczyna się od
https://zamiasthttp://i gdy brama odpowiedziała 407. Błędny login na SOCKS5 daje kod 97 z tekstemUser was rejected by the SOCKS5 server.
Jak to naprawić
- Uruchom polecenie ponownie z opcją
-vi znajdź ostatnią prawidłową linię. Omówienie wyjścia krok po kroku – na stronie „Proxy nie działa: sprawdzenie”. - Przy (5) sprawdź host:
nslookup gw.prokso.compowinien zwrócić adresy. Jeśli nie zwraca, problem leży w DNS Twojej sieci lub w literówce. - Przy (7) i (28) sprawdź port: 823 to HTTP, 824 to SOCKS5, 10000–20000 to stały IP. Jeśli port jest dobry, spróbuj innej sieci, na przykład internetu mobilnego. O długich żądaniach – na stronie timeout proxy.
- Przy (35) tymczasowo wyłącz skanowanie HTTPS w antywirusie lub spróbuj z sieci bez przechwytywania ruchu. Więcej – błędy certyfikatu SSL.
- Przy (56) i (97) dopasuj schemat do portu:
http://(niehttps://) dla HTTP,socks5h://dla 824 lub stałych portów w trybie SOCKS5. Login i hasło skopiuj z panelu klienta jeszcze raz; składnia parametrów jest w opisie bramy.
Jak sprawdzić, czy działa
Wykonaj curl -x http://LOGIN:HASŁO@gw.prokso.com:10000 https://prokso.com/ip. Jeśli przyszedł JSON z IP i krajem, proxy działa, a kod wyjścia wynosi 0. Kod ostatniego polecenia pokazuje echo $? w Linuksie i macOS lub $LASTEXITCODE w PowerShell. Przykłady do różnych zadań – w instrukcji curl.
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)
Czym kod (5) różni się od (6)?
Kod 6 (CURLE_COULDNT_RESOLVE_HOST) oznacza, że nie udało się ustalić adresu samej strony, a 5 – adresu proxy. Przy proxy kod 6 pojawia się, gdy curl sam szuka adresu strony, na przykład ze schematem socks5:// zamiast socks5h://, albo gdy proxy w ogóle nie zostało użyte.
Co, jeśli brama odpowiedziała 407?
Sam curl kończy wtedy działanie kodem (56), a przyczynę widać tylko z opcją -v, na przykład 407 NO_USER lub 407 TRAFFIC_EXHAUSTED. Przyczyny omawia strona <a href="/pl/errors/407-proxy-authentication-required">407 Proxy Authentication Required</a>.
Jak poznać dokładniejszą przyczynę?
Opcja -v pokazuje każdy etap, a tekst po numerze w linii curl: (N) doprecyzowuje błąd. Dla kodu 97 libcurl osobno przekazuje szczegóły uzgadniania z proxy.
Jak sprawdzić proxy bez terminala?
Wklej linię do <a href="/pl/tools/proxy-checker">sprawdzania proxy</a>: pokaże, czy proxy działa, protokół, zewnętrzny IP i kraj.
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.