Kort antwoord
Wat betekent SSL: WRONG_VERSION_NUMBER bij een proxy?
[SSL: WRONG_VERSION_NUMBER] via een proxy betekent bijna altijd dat je client een TLS-handshake begon met iets dat in platte tekst antwoordde. De gebruikelijke oorzaak is een https:// proxy-URL die naar een plain HTTP proxy-poort wijst. Bij CrawlRelay schrijf je http:// vóór het gateway-adres voor zowel HTTP- als HTTPS-doelen; de HTTPS-site zelf werkt nog steeds via de tunnel.
SSL: WRONG_VERSION_NUMBER in één oogopslag
| Fout | SSL: WRONG_VERSION_NUMBER |
|---|---|
| Type | TLS-fout in de client |
| Verzonden door | Jouw TLS-bibliotheek, als de andere kant geen TLS spreekt |
| Gedefinieerd in | TLS 1.3: RFC 8446; HTTP proxy CONNECT: RFC 9110, section 9.3.6 |
| Opnieuw proberen? | Nee. Het is een configuratiefout |
| Eerst controleren | Kijk naar het schema vóór je proxy-URL |
Wat betekent SSL: WRONG_VERSION_NUMBER?
TLS begint met een handshake-record. Als wat terugkomt een HTTP-respons is, leest de TLS-bibliotheek een nonsense versienummer en stopt. Python meldt WRONG_VERSION_NUMBER; de exacte tekst hangt af van de OpenSSL-versie en client.
Het proxy-URL schema bepaalt hoe jouw client met de proxy praat. http:// betekent plain HTTP naar de proxy, gevolgd door een CONNECT tunnel en TLS met de website. https:// betekent TLS direct met de proxy, wat alleen werkt als de proxy-poort TLS verwacht.
Hoe ziet SSL: WRONG_VERSION_NUMBER eruit in Python, curl, Node.js en browsers?
Dezelfde fout verschijnt anders in elk hulpmiddel. Dit zijn de berichten om in je logs te zoeken:
- Python requests / urllib3 2.x:
SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number'))verpakt in eenProxyError - httpx:
httpx.ConnectError: [SSL: WRONG_VERSION_NUMBER] wrong version number - curl:
curl: (35) ... wrong version numberals je-x https://schrijft voor een plain proxy - Node.js:
EPROTO ... wrong version numberin de foutmelding
Wat veroorzaakt SSL: WRONG_VERSION_NUMBER?
Waarschijnlijk eerst:
https://vóór het proxy-adres op een poort die plain HTTP spreekt. Dit is het meest voorkomende geval.- Settings gekopieerd en geplakt van een provider waarvan de proxy-poort TLS verwacht.
https://op een URL met poort 80, ofhttp://op een sitepoort die TLS verwacht, buiten enige proxy.- Een omgevingsvariabele zoals
HTTPS_PROXY=https://...die je code erft.
Hoe diagnosticeer ik SSL: WRONG_VERSION_NUMBER stap voor stap?
- Print de proxy-URL die je code gebruikt en controleer het schema.
- Check de omgeving op
HTTPS_PROXYenALL_PROXY. - Voer de curl-test hieronder uit met
-x http://en bevestig dat het werkt. - Als curl werkt en je code niet, gebruikt je code of omgeving nog steeds
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_URLHoe los ik SSL: WRONG_VERSION_NUMBER op?
- Gebruik
http://voor de proxy-URL in elke sleutel:{"http": "http://...", "https": "http://..."}. - Laat TLS-verificatie aan staan. De fix is het schema, niet
verify=False. - Fix de omgevingsvariabele in plaats van overschrijven in één script.
Moet ik opnieuw proberen na SSL: WRONG_VERSION_NUMBER?
Probeer deze fout nooit opnieuw: elke poging faalt op dezelfde manier. Het is een configuratiefout van één karakter.
Hoe geldt SSL: WRONG_VERSION_NUMBER voor CrawlRelay?
CrawlRelay’s HTTP-poort is een plain HTTP proxy-poort die HTTPS-sites door CONNECT tunnels draagt. TLS loopt end-to-end tussen je client en de site binnen de tunnel, dus de gateway heeft nooit een https:// proxy-URL nodig.
Gateway: gw.crawlrelay.com, poort 7777 (HTTP, HTTPS via CONNECT) en poort 7778 (SOCKS5). Gebruikersnaamformaat: USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}. Gerelateerd: SSL certificate verify failed · Kan geen verbinding maken met proxy · Python-gids.
SSL: WRONG_VERSION_NUMBER: vragen die ontwikkelaars stellen
Is mijn verkeer onbeveiligd als ik een http:// proxy-URL gebruik?
Niet bij HTTPS-websites. Het http:// schema betreft alleen de korte CONNECT-uitwisseling met de proxy, inclusief je proxy-inloggegevens. Daarna loopt TLS direct van client naar site binnen de tunnel en fungeert de proxy alleen als doorgeefluik voor versleutelde bytes. Plain http:// sites zijn onversleuteld met of zonder proxy.
Waarom begon dit na het updaten van urllib3?
Urllib3 2.x ondersteunt HTTPS-proxies, dus accepteert een https:// proxy-URL letterlijk en start TLS met de proxy. Oudere setups werkten soms per ongeluk met het verkeerde schema. Schrijf http:// voor plain HTTP proxy-poorten en de fout verdwijnt.
Moet ik verify=False zetten om de fout te verhelpen?
Nee. Certificaatchecks uitzetten lost geen verkeerd schema op en maakt je kwetsbaar voor onderschepping bij elke aanvraag. Fix het proxy-URL schema. Laat verificatie aan in productie.
Andere proxyfouten in deze referentie
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- en clientfouten
Verbindings- en TLS-fouten
Residentiële proxy's met documentatie die de faalgevallen beschrijft
CrawlRelay residentiële proxy's van US$ 0,50/GB, verkeer dat nooit verloopt.