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

Referencja błędu proxy · Błędy w przeglądarce i kliencie

ProxyError: 'Nie można połączyć się z proxy' w Python i Node.js

Błąd biblioteki klienta (Python, Node.js): dokładny komunikat w każdym narzędziu, możliwe przyczyny w kolejności oraz działające rozwiązanie.

Ostatnia aktualizacja: · 4 min czytania

Szybka odpowiedź

Co oznacza Cannot connect to proxy (ProxyError) w kontekście proxy?

'Nie można połączyć się z proxy' to błąd opakowujący: biblioteki requests i urllib3 w Pythonie zawierają w nim prawdziwy powód. Przeczytaj najgłębszą przyczynę. 'Połączenie odrzucone' lub timeout oznacza problem z hostem, portem lub siecią; 'Nie udało się rozwiązać' oznacza DNS; 'Nieudane połączenie tunelu: 407' oznacza błędne dane uwierzytelniające. W CrawlRelay każdy z nich da się naprawić w jednym zdaniu.

Cannot connect to proxy (ProxyError) w skrócie

BłądCannot connect to proxy (ProxyError)
TypBłąd biblioteki klienta (Python, Node.js)
Wysłane przezTwój klient HTTP, przed lub podczas rozmowy z proxy
Zdefiniowano wLibrary error; read the nested cause for the real reason
Spróbować ponownie?Zależy od ukrytej przyczyny
Najpierw sprawdźPrzeczytaj najgłębszy wyjątek: odmowa, timeout, rozpoznanie nazwy lub kod statusu

Co oznacza Cannot connect to proxy (ProxyError)?

urllib3 zgłasza ProxyError dla każdej awarii związanej z proxy, a requests przekazuje ten błąd dalej. Przydatne informacje są w zagnieżdżonym wyjątku, który traceback pokazuje na końcu długiej linii.

Klienci Node.js zachowują się różnie: raportują błąd gniazda bezpośrednio, np. ECONNREFUSED lub ETIMEDOUT, często nie mówiąc, że adres to proxy.

Jak wygląda 'Cannot connect to proxy' w Python, curl, Node.js i przeglądarkach?

Ten sam błąd wyświetla się inaczej w każdym narzędziu. Oto komunikaty, które warto wyszukać w logach:

  • Odrzucone: ProxyError('Unable to connect to proxy', NewConnectionError(... Connection refused))
  • DNS: NameResolutionError(... Failed to resolve ...) w ProxyError
  • Dane uwierzytelniające: OSError('Tunnel connection failed: 407 Proxy Authentication Required')
  • Błąd bramy: OSError('Tunnel connection failed: 502 Bad Gateway')
  • Node.js: Error: connect ECONNREFUSED, ETIMEDOUT lub ENOTFOUND, a potem adres proxy

Co powoduje 'Cannot connect to proxy'?

Najczęściej na początku:

  • Zły host lub port w URL proxy.
  • Brak schematu: host:port bez http:// jest nieoczekiwanie interpretowane przez niektóre biblioteki.
  • Zablokowany ruch wychodzący w Twojej sieci lub na serwerze.
  • Błędy uwierzytelniania lub bramy pojawiające się przy kroku CONNECT, opakowane w ten sam wyjątek.
  • Zmienna środowiskowa taka jak HTTPS_PROXY wskazująca na stare proxy i nadpisująca konfigurację.

Jak krok po kroku zdiagnozować 'Cannot connect to proxy'?

  1. Wypisz pełny wyjątek i przeczytaj ostatnią zagnieżdżoną przyczynę.
  2. Wypisz zmienne requests.utils.get_environ_proxies(url) lub HTTP_PROXY, HTTPS_PROXY i NO_PROXY aby zobaczyć, co jeszcze jest ustawione.
  3. Uruchom poniższy test curl na tym samym urządzeniu.
  4. Dopasuj przyczynę do listy rozwiązań poniżej.
Przetestuj nie działający URL za pomocą curl (port HTTP, tryb verbose)
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL

Jak naprawić 'Cannot connect to proxy'?

  • Odrzucone lub przeterminowane: popraw host i port albo otwórz ruch wychodzący do bramy.
  • Nie udało się rozwiązać: sprawdź DNS na maszynie; spróbuj hosta z nslookup.
  • 407: popraw i zakoduj w URL dane uwierzytelniające. Zobacz 407 Proxy Authentication Required.
  • 502 lub 504: spróbuj ponownie przez nowy exit. Zobacz 502 i 504.
  • Niechciane proxy z zmiennych środowiskowych: ustaw session.trust_env = False w requests lub wyczyść zmienne.
Python: zbuduj adres proxy z zakodowanymi poświadczeniami
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)

Czy warto ponawiać próbę po 'Cannot connect to proxy'?

Powtarzaj tylko przyczyny na poziomie sieci, które mogą się zmienić: timeouty i błędy bramy takie jak 502 lub 504. Odmowa połączenia, awaria DNS lub 407 powtórzą się, dopóki nie zmienisz konfiguracji – traktuj je jako krytyczne przy obsłudze błędów.

Jak Cannot connect to proxy (ProxyError) odnosi się do CrawlRelay?

Dla CrawlRelay URL proxy to http://USERNAME:PASSWORD@ po którym następuje host bramy i port HTTP niżej, dla celów HTTP i HTTPS jednakowo. Używaj tego samego URL http:// dla kluczy http i https w requests: schemat opisuje protokół z proxy, nie ze stroną.

Gateway: gw.crawlrelay.com, port 7777 (HTTP, HTTPS przez CONNECT) i port 7778 (SOCKS5). Format nazwy użytkownika: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Powiązane: SSL: WRONG_VERSION_NUMBER · 407 · Python guide.

Cannot connect to proxy (ProxyError): pytania, które zadają deweloperzy

Co oznacza 'Max retries exceeded with url' przy proxy?

Oznacza to, że urllib3 poddało się po wyczerpaniu limitu prób, a prawdziwa przyczyna jest w części 'Caused by' komunikatu. Przy proxy to zwykle ProxyError z zagnieżdżoną przyczyną: odmowa połączenia, timeout, błąd nazw lub status tunelu jak 407.

Dlaczego requests używa proxy, którego nie skonfigurowałem?

requests domyślnie czyta zmienne środowiskowe HTTP_PROXY, HTTPS_PROXY i NO_PROXY, a na Windows też systemowe ustawienia proxy. Stara wartość nadpisuje Twoje założenia. Ustaw session.trust_env = False lub podawaj proxy jawnie przy każdym żądaniu.

Czy mam wpisać http:// czy https:// przed adresem proxy?

Wpisz http:// dla proxy HTTP, nawet gdy witryna jest HTTPS. Schemat mówi, jak klient komunikuje się z proxy. Wpisanie https:// powoduje, że nowsze urllib3 zaczynają TLS z proxy, co kończy się błędem SSL na porcie zwykłego proxy HTTP.

Inne błędy proxy w tym odniesieniu

Kody statusu HTTP

Błędy w przeglądarce i kliencie

Błędy połączenia i TLS

Proxy rezydencjalne z dokumentacją opisującą przypadki błędów

CrawlRelay proxy rezydencjalne od 0,50 USD/GB, ruch, który nigdy nie wygasa.

Od 0,50 USD/GB · bez KYC

Rozpocznij