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 połączenia i TLS

Błąd SSL WRONG_VERSION_NUMBER przez proxy: jak naprawić

Błąd TLS po stronie klienta: dokładny komunikat w każdym narzędziu, możliwe przyczyny w kolejności oraz działające rozwiązanie.

Ostatnia aktualizacja: · 3 min czytania

Szybka odpowiedź

Co oznacza SSL: WRONG_VERSION_NUMBER w kontekście proxy?

[SSL: WRONG_VERSION_NUMBER] przez proxy niemal zawsze oznacza, że klient rozpoczął handshake TLS z czymś, co odpowiedziało zwykłym tekstem. Zwykła przyczyna to URL proxy https:// wskazujący na port zwykłego proxy HTTP. W CrawlRelay wpisz http:// przed adresem bramy dla celów HTTP i HTTPS; HTTPS strony działa nadal przez tunel.

SSL: WRONG_VERSION_NUMBER w skrócie

BłądSSL: WRONG_VERSION_NUMBER
TypBłąd TLS po stronie klienta
Wysłane przezTwoja biblioteka TLS, gdy strona po drugiej stronie nie używa TLS
Zdefiniowano wTLS 1.3: RFC 8446; HTTP proxy CONNECT: RFC 9110, section 9.3.6
Spróbować ponownie?Nie. To błąd konfiguracji
Najpierw sprawdźSprawdź schemat przed adresem proxy

Co oznacza SSL: WRONG_VERSION_NUMBER?

TLS zaczyna się od rekordu handshake. Jeśli dane zwrócone są odpowiedzią HTTP zamiast tego, biblioteka TLS czyta nonsensowny numer wersji i się zatrzymuje. Python pokazuje WRONG_VERSION_NUMBER; treść różni się zależnie od wersji OpenSSL i klienta.

Schemat URL proxy decyduje, jak klient komunikuje się z proxy. http:// to zwykły HTTP do proxy, potem tunel CONNECT i TLS z witryną. https:// to TLS z samym proxy, co działa tylko gdy proxy oczekuje TLS na tym porcie.

Jak wygląda SSL: WRONG_VERSION_NUMBER 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:

  • Python requests / urllib3 2.x: SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number')) opakowany w ProxyError
  • httpx: httpx.ConnectError: [SSL: WRONG_VERSION_NUMBER] wrong version number
  • curl: curl: (35) ... wrong version number gdy wpiszesz -x https:// dla zwykłego proxy
  • Node.js: EPROTO ... wrong version number w komunikacie o błędzie

Co powoduje SSL: WRONG_VERSION_NUMBER?

Najczęściej na początku:

  • https:// przed adresem proxy z portem zwykłego HTTP proxy. Najczęstszy przypadek.
  • Skopiowane ustawienia od dostawcy, którego port proxy czeka na TLS.
  • https:// na URL z portem 80, lub http:// na porcie strony oczekującej TLS, poza proxy.
  • Zmienne środowiskowe takie jak HTTPS_PROXY=https://... dziedziczone przez Twój kod.

Jak krok po kroku zdiagnozować SSL: WRONG_VERSION_NUMBER?

  1. Wypisz URL proxy, którego używa Twój kod i sprawdź schemat.
  2. Sprawdź zmienne środowiskowe HTTPS_PROXY i ALL_PROXY.
  3. Uruchom poniższy test curl z -x http:// i potwierdź działanie.
  4. Jeśli curl działa, a Twój kod nie, to kod lub środowisko używa jeszcze https://.
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ć SSL: WRONG_VERSION_NUMBER?

  • Użyj http:// jako URL proxy w każdym kluczu: {"http": "http://...", "https": "http://..."}.
  • Zostaw włączoną weryfikację TLS. Naprawa to schemat, nie verify=False.
  • Popraw zmienną środowiskową zamiast nadpisywać ją w skrypcie.

Czy warto ponawiać próbę po SSL: WRONG_VERSION_NUMBER?

Nie powtarzaj tego błędu: każda próba kończy się tak samo. To naprawa jednym znakiem w konfiguracji.

Jak SSL: WRONG_VERSION_NUMBER odnosi się do CrawlRelay?

HTTP port CrawlRelay to zwykły port HTTP proxy, który przesyła strony HTTPS przez tunele CONNECT. TLS jest end-to-end między klientem a witryną wewnątrz tunelu, więc brama nie potrzebuje adresu proxy https://.

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: Błąd weryfikacji certyfikatu SSL · Nie można połączyć się z proxy · Python guide.

SSL: WRONG_VERSION_NUMBER: pytania, które zadają deweloperzy

Czy mój ruch jest niezaszyfrowany, jeśli używam adresu proxy http://?

Nie dla stron HTTPS. Schemat http:// dotyczy tylko krótkiej wymiany CONNECT z proxy, w tym Twoich danych proxy. Potem klient prowadzi TLS bezpośrednio z witryną w tunelu, a proxy tylko przekazuje zaszyfrowane dane. Zwykłe strony http:// są niezaszyfrowane z proxy lub bez niego.

Dlaczego to się zaczęło po aktualizacji urllib3?

urllib3 2.x obsługuje HTTPS proxy, więc literalnie potraktuje URL proxy https:// i zacznie TLS z proxy. Starsze konfiguracje czasem działały przypadkowo z niewłaściwym schematem. Wpisz http:// dla zwykłych portów HTTP proxy, aby błąd zniknął.

Czy powinienem ustawić verify=False, aby rozwiązać błąd?

Nie. Wyłączanie sprawdzania certyfikatów nie naprawi złego schematu i naraża Cię na podsłuch przy każdym żądaniu. Popraw schemat URL proxy. W produkcji trzymaj weryfikację włączoną.

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