Kurze Antwort
Was bedeutet ERR_TUNNEL_CONNECTION_FAILED bei einem Proxy?
net::ERR_TUNNEL_CONNECTION_FAILED bedeutet, Chrome hat den Proxy gebeten, einen Tunnel zu einer HTTPS-Seite zu öffnen, und der Proxy hat nicht mit 200 Connection established geantwortet. Der Browser verbirgt den echten Status. Bei CrawlRelay residential Proxies liegt die Ursache meist an fehlenden Zugangsdaten in Playwright oder Puppeteer, danach an einem Ziel, das das Gateway nicht erreicht. Reproduzieren Sie mit curl -v, um den echten Code zu sehen.
ERR_TUNNEL_CONNECTION_FAILED auf einen Blick
| Fehler | ERR_TUNNEL_CONNECTION_FAILED |
|---|---|
| Typ | Chromium-Netzwerkfehler |
| Gesendet von | Ihr Browser, nachdem der Proxy die CONNECT-Anfrage abgelehnt oder nicht erfüllt hat |
| Definiert in | CONNECT method: RFC 9110, section 9.3.6 |
| Noch einmal versuchen? | Erst den dahinterliegenden Status herausfinden |
| Zuerst prüfen | Mit curl -v reproduzieren, um den echten CONNECT-Status zu sehen |
Was bedeutet ERR_TUNNEL_CONNECTION_FAILED?
Um eine HTTPS-Seite durch einen HTTP-Proxy zu laden, sendet der Browser zuerst CONNECT host:443. Antwortet der Proxy mit 200, startet der Browser TLS im Tunnel. Jede andere Antwort, z. B. 407, 403 oder 502, beendet den Versuch und Chromium zeigt einen generischen Fehler.
Deshalb sagt dieser Fehler, wo der Fehler lag, im Tunnel, aber nicht warum. Das Warum ist der vom Proxy gesendete Statuscode, den Sie mit curl sehen können.
Wie sieht ERR_TUNNEL_CONNECTION_FAILED 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:
- Playwright:
page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Puppeteer:
Error: net::ERR_TUNNEL_CONNECTION_FAILED at https://... - Chrome-Adressleiste: 'Diese Seite ist nicht erreichbar' mit dem Code
ERR_TUNNEL_CONNECTION_FAILED - Selenium mit Chrome: derselbe Code in einem
WebDriverException
Was verursacht ERR_TUNNEL_CONNECTION_FAILED?
Wahrscheinlich zuerst:
- Keine Anmeldedaten gesendet (versteckter 407). Chrome ignoriert Benutzername und Passwort in
--proxy-server. - Ein verweigertes Ziel (versteckter 403), z. B. eine durch die Proxy-Nutzungsrichtlinie gesperrte Kategorie.
- Ein unerreichbares Ziel (versteckter 502 oder 504): ein toter Host, ein Tippfehler oder ein DNS-Fehler am Ausgang.
- Ein falscher Port: den Browser auf den SOCKS5-Port statt auf HTTP zeigen lassen oder umgekehrt.
Wie diagnostiziere ich ERR_TUNNEL_CONNECTION_FAILED Schritt für Schritt?
- Führen Sie dieselbe URL mit curl und
-vaus (Befehl unten) und lesen Sie die Zeile nachCONNECT. - Ein
407bedeutet Anmeldedaten; ein403bedeutet verweigertes Ziel; ein502oder504bedeutet das Ziel oder den Ausgang. - Bestätigen Sie, dass der Browser den HTTP-Port für einen
http://Proxy-Server verwendet. - Testen Sie eine einfache Seite wie
https://api.ipify.orgvor Ihrem eigentlichen Ziel.
# 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 ERR_TUNNEL_CONNECTION_FAILED?
- Playwright: übergeben Sie
server,usernameundpasswordin derproxy-Option, pro Browser oder Kontext. Siehe den Playwright-Leitfaden. - Puppeteer: starten Sie mit
--proxy-server=http://host:portund rufen Sie vor dem erstengotopage.authenticate()auf. Siehe den Puppeteer-Leitfaden. - Selenium: führen Sie einen kleinen lokalen Forwarder aus, der die Anmeldedaten hinzufügt. Siehe den Selenium-Leitfaden.
- Überprüfen Sie das Ziel anhand unserer Akzeptablen Nutzungsrichtlinie.
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(proxy={
"server": "http://gw.crawlrelay.com:7777",
"username": "USERNAME-country-us",
"password": "PASSWORD",
})
page = browser.new_page()
response = page.goto("https://api.ipify.org")
print(response.status, page.inner_text("body"))
browser.close()Soll ich nach ERR_TUNNEL_CONNECTION_FAILED einen erneuten Versuch starten?
Wiederholen Sie nur, wenn Sie den versteckten Status kennen. Ein versteckter 407 oder 403 wird endlos wiederholt; beheben Sie die Konfiguration. Ein versteckter 502 oder 504 kann bei einem neuen Ausgang erneut versucht werden, wie jeder Gateway-Fehler.
Wie wirkt sich ERR_TUNNEL_CONNECTION_FAILED auf CrawlRelay aus?
CrawlRelays HTTP-Port leitet HTTPS durch CONNECT-Tunnel weiter, die jedes Chromium-basierte Tool unterstützt. Verwenden Sie den HTTP-Port für Browser: Chromium unterstützt SOCKS5 nicht mit Benutzername und Passwort.
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: 407 Proxy Authentication Required · ERR_PROXY_CONNECTION_FAILED · Playwright-Leitfaden.
ERR_TUNNEL_CONNECTION_FAILED: Fragen, die Entwickler stellen
Warum funktioniert curl, aber Playwright zeigt ERR_TUNNEL_CONNECTION_FAILED an?
Weil curl die Anmeldedaten aus der Proxy-URL sendet, während Chromium Anmeldedaten, die in der Proxy-Server-Adresse stehen, ignoriert. In Playwright übergeben Sie username und password als separate Felder der proxy-Option. In Puppeteer rufen Sie vor der ersten Navigation page.authenticate() auf.
Kann ich SOCKS5-Proxys mit Authentifizierung in Chrome verwenden?
Nicht direkt. Chromium unterstützt SOCKS5-Proxys, aber keine SOCKS5-Authentifizierung mit Benutzername und Passwort. Verwenden Sie stattdessen den HTTP-Port des Gateways, der HTTPS-Sites durch CONNECT-Tunnel verarbeitet, oder betreiben Sie einen lokalen Forwarder, der für den Browser authentifiziert.
Wird ERR_TUNNEL_CONNECTION_FAILED durch die Webseite verursacht?
Selten direkt. Der Tunnel besteht zwischen Browser und Proxy, daher tritt der Fehler auf, bevor die Webseite einen TLS-Handshake sieht. Die Webseite kann indirekt Ursache sein, wenn sie nicht erreichbar ist und der Proxy mit 502 oder 504 auf die CONNECT-Anfrage antwortet.
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.