Kurze Antwort
Was bedeutet SSL: WRONG_VERSION_NUMBER bei einem Proxy?
[SSL: WRONG_VERSION_NUMBER] durch einen Proxy bedeutet fast immer, dass Ihr Client eine TLS-Handschlag gestartet hat, aber eine Klartext-Antwort bekam. Die häufigste Ursache ist eine https://-Proxy-URL, die auf einen reinen HTTP-Proxy-Port zeigt. Bei CrawlRelay schreiben Sie http:// vor die Gateway-Adresse für HTTP- und HTTPS-Ziele; das HTTPS der Webseite funktioniert weiterhin durch den Tunnel.
SSL: WRONG_VERSION_NUMBER auf einen Blick
| Fehler | SSL: WRONG_VERSION_NUMBER |
|---|---|
| Typ | TLS-Fehler im Client |
| Gesendet von | Ihre TLS-Bibliothek, wenn die Gegenseite kein TLS spricht |
| Definiert in | TLS 1.3: RFC 8446; HTTP proxy CONNECT: RFC 9110, section 9.3.6 |
| Noch einmal versuchen? | Nein. Es ist ein Konfigurationsfehler |
| Zuerst prüfen | Achten Sie auf das Schema vor Ihrer Proxy-URL |
Was bedeutet SSL: WRONG_VERSION_NUMBER?
TLS beginnt mit einem Handshake-Datensatz. Wenn die zurückkommenden Bytes stattdessen eine HTTP-Antwort sind, liest die TLS-Bibliothek eine unverständliche Versionsnummer und stoppt. Python meldet WRONG_VERSION_NUMBER; die genaue Formulierung variiert mit OpenSSL-Version und Client.
Das Schema der Proxy-URL entscheidet, wie Ihr Client mit dem Proxy spricht. http:// bedeutet simples HTTP zum Proxy, gefolgt von einem CONNECT-Tunnel und TLS mit der Website. https:// bedeutet TLS mit dem Proxy selbst, was nur funktioniert, wenn der Proxy-Port TLS erwartet.
Wie sieht SSL: WRONG_VERSION_NUMBER in Python, curl, Node.js und Browsern aus?
Der gleiche Fehler wird in jedem Tool anders angezeigt. Hier sind die Meldungen, nach denen Sie in Ihren Logs suchen sollten:
- Python requests / urllib3 2.x:
SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number'))in einerProxyError - httpx:
httpx.ConnectError: [SSL: WRONG_VERSION_NUMBER] wrong version number - curl:
curl: (35) ... wrong version number, wenn Sie-x https://für einen einfachen Proxy schreiben - Node.js:
EPROTO ... wrong version numberin der Fehlermeldung
Was verursacht SSL: WRONG_VERSION_NUMBER?
Wahrscheinlich zuerst:
https://vor der Proxy-Adresse auf einem Port, der nur einfaches HTTP spricht. Das ist der häufigste Fall.- Kopierte Einstellungen von einem Anbieter, dessen Proxy-Port TLS erwartet.
https://auf einer URL mit Port 80 oderhttp://auf einem Website-Port, der TLS erwartet, ohne Proxy.- Eine Umgebungsvariable wie
HTTPS_PROXY=https://..., die Ihr Code übernimmt.
Wie diagnostiziere ich SSL: WRONG_VERSION_NUMBER Schritt für Schritt?
- Drucken Sie die Proxy-URL aus, die Ihr Code verwendet, und prüfen Sie das Schema.
- Prüfen Sie die Umgebungsvariablen
HTTPS_PROXYundALL_PROXY. - Führen Sie den curl-Test unten mit
-x http://aus und vergewissern Sie sich, dass er funktioniert. - Wenn curl funktioniert, Ihr Code aber nicht, verwendet Ihr Code oder die Umgebung noch
https://.
# 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_URLWie behebe ich SSL: WRONG_VERSION_NUMBER?
- Verwenden Sie
http://für die Proxy-URL in jedem Schlüssel:{"http": "http://...", "https": "http://..."}. - Lassen Sie die TLS-Prüfung aktiviert. Die Lösung ist das Schema, nicht
verify=False. - Korrigieren Sie die Umgebungsvariable, anstatt sie in einem Skript zu überschreiben.
Soll ich nach SSL: WRONG_VERSION_NUMBER einen erneuten Versuch starten?
Versuchen Sie nicht, diesen Fehler erneut: Jeder Versuch schlägt gleich fehl. Es ist eine Konfigurationskorrektur mit einem Zeichen.
Wie wirkt sich SSL: WRONG_VERSION_NUMBER auf CrawlRelay aus?
CrawlRelay's HTTP-Port ist ein einfacher HTTP-Proxy-Port, der HTTPS-Websites über CONNECT-Tunnel weiterleitet. TLS läuft Ende-zu-Ende zwischen Ihrem Client und der Website im Tunnel, daher benötigt das Gateway niemals eine https://-Proxy-URL.
Gateway: gw.crawlrelay.com, Port 7777 (HTTP, HTTPS über CONNECT) und Port 7778 (SOCKS5). Benutzername im Format: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Verwandt: SSL-Zertifikat-Überprüfung fehlgeschlagen · Keine Verbindung zum Proxy · Python-Leitfaden.
SSL: WRONG_VERSION_NUMBER: Fragen, die Entwickler stellen
Ist mein Datenverkehr unverschlüsselt, wenn ich eine http:// Proxy-URL benutze?
Nicht bei HTTPS-Websites. Das http://-Schema betrifft nur den kurzen CONNECT-Austausch mit dem Proxy, inklusive Ihrer Proxy-Anmeldedaten. Danach läuft TLS direkt zwischen Ihrem Client und der Website durch den Tunnel, und der Proxy leitet nur verschlüsselte Daten weiter. Reine http://-Websites sind mit oder ohne Proxy unverschlüsselt.
Warum trat das Problem erst nach dem Upgrade von urllib3 auf?
urllib3 2.x unterstützt HTTPS-Proxies, daher nimmt es eine https:// Proxy-URL wörtlich und startet TLS mit dem Proxy. Ältere Setups funktionierten manchmal zufällig mit dem falschen Schema. Schreiben Sie http:// für einfache HTTP-Proxy-Ports, damit der Fehler verschwindet.
Soll ich verify=False setzen, damit der Fehler verschwindet?
Nein. Das Abschalten von Zertifikatsprüfungen behebt kein falsches Schema und macht Sie bei jeder Anfrage anfällig für MitM-Angriffe. Korrigieren Sie das Proxy-URL-Schema. Lassen Sie die Überprüfung in der Produktion aktiviert.
Weitere Proxy-Fehler in diesem Leitfaden
HTTP-Statuscodes
- 401 Unauthorized vs 407
- 403 Forbidden
- 407 Proxy Authentication Required
- 429 Too Many Requests
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
Browser- und Clientfehler
Verbindungs- und TLS-Fehler
Residential-Proxys mit Dokumentationen, die Fehlerfälle abdecken
CrawlRelay Residential-Proxys von 0,50 $/GB, Traffic, der nie abläuft.