ERR_TUNNEL_CONNECTION_FAILED mit einem Proxy beheben

Aktualisiert:

Um eine https://-Seite über einen Proxy aufzurufen, sendet der Browser eine CONNECT-Anfrage und wartet darauf, dass der Proxy einen Tunnel zur Zielseite öffnet. ERR_TUNNEL_CONNECTION_FAILED tritt auf, wenn der Proxy diese Anfrage mit einem Fehler beantwortet, statt die Verbindung aufzubauen. Das Problem: Chrome zeigt nicht an, um welchen Fehler es sich handelt. Der erste Schritt besteht daher darin, den eigentlichen Code zu ermitteln.

Proxys, die mit Puppeteer und Playwright funktionieren

Zwei von uns reproduzierte Fälle

Beide Fälle wurden an einem Test-Proxy reproduziert, hier dargestellt mit der Dokumentationsadresse 203.0.113.10:8080 und user123:pass456. In einem regulären Chrome-Fenster führt der 407-Fall nicht zu einem Tunnelfehler; Chrome öffnet stattdessen einen Anmeldedialog für Proxy-Benutzername und -Passwort. Durch 407 verursachte Tunnelfehler treten daher vor allem in Automatisierungs-Tools und Apps auf, die kein Passwort abfragen können.

Proxy antwortet auf CONNECT mitChrome zeigtcurl zeigt
407 ohne Möglichkeit zur Passworteingabe (headless Chrome)ERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 407
502, weil der Proxy die Zielseite nicht erreichen kannERR_TUNNEL_CONNECTION_FAILEDcurl: (56) CONNECT tunnel failed, response 502

Ursachen, wahrscheinlichste zuerst

  • Ein Automatisierungsskript sendet keine Anmeldedaten. Das Flag --proxy-server von Chrome akzeptiert nur Host und Port, kein user:pass. Puppeteer oder Selenium im Headless-Modus erhält einen 407 und meldet einen Tunnelfehler.
  • Eine Smartphone-App hinter einem passwortgeschützten WLAN-Proxy. Die App hat keinen Login-Dialog, sodass HTTPS fehlschlägt, während der Browser weiterhin funktioniert.
  • Der Proxy kann das Ziel nicht erreichen. Er gibt 502 auf CONNECT zurück; die 502 Bad Gateway-Seite behandelt dies ausführlich.
  • Nur bestimmte Websites schlagen fehl. Das Ziel blockiert Anfragen oder ist offline, während andere Websites über denselben Proxy erreichbar sind.

Den tatsächlichen Code mit einem curl-Befehl finden

Führen Sie curl -v -x http://user123:[email protected]:8080 https://example.com mit Ihren eigenen Werten aus. Prüfen Sie die Zeile direkt nach > CONNECT example.com:443 HTTP/1.1: Ein 407 bedeutet, dass Sie dem 407-Leitfaden folgen sollten; ein 502 verweist auf das Ziel oder die Route hinter dem Proxy. Wenn Sie kein Terminal nutzen möchten, fügen Sie die Zeile in den Proxy-Checker ein, der für dieselben Situationen auth failed (407) oder HTTP 502 meldet.

Lösungen nach Umgebung

  • Puppeteer: Belassen Sie --proxy-server=http://host:port beim Start und rufen Sie vor der Navigation page.authenticate({ username, password }) auf. Ein vollständiges Beispiel finden Sie im Puppeteer-Proxy-Leitfaden.
  • Playwright: Übergeben Sie beim Start des Browsers proxy: { server, username, password }, damit Playwright den 407 automatisch beantwortet; siehe Playwright.
  • Selenium: Chrome übernimmt user:pass nicht über die Befehlszeile; funktionierende Optionen zeigt der Selenium-Leitfaden.
  • Chrome unter Windows: Wenn das Anmeldefenster nicht erscheint, prüfen Sie, ob eine Proxy-Erweiterung es unterdrückt, und testen Sie es erneut in einem Fenster ohne Erweiterungen.
  • Smartphones: Nutzen Sie für Apps, die einen authentifizierten Proxy erfordern, eine Proxy-App mit user:pass-Unterstützung, wie im Android-Einrichtungsleitfaden beschrieben.

Schritt für Schritt

  1. 1

    CONNECT-Antwort identifizieren

    Führen Sie curl -v -x mit Ihrer Proxy-Zeile aus oder fügen Sie sie in den Checker ein, um zu sehen, ob der Proxy 407 oder 502 zurückgibt.

  2. 2

    Bei 407: Anmeldedaten korrekt übergeben

    Nutzen Sie in Skripten den Authentifizierungs-Hook der Bibliothek, anstatt user:pass in --proxy-server einzutragen.

  3. 3

    Bei 502: Andere Website testen

    Laden Sie eine große Website wie example.com über denselben Proxy. Funktioniert sie, liegt das Problem beim ursprünglichen Ziel.

  4. 4

    Erneut ausführen und Exit-IP prüfen

    Sobald der Tunnel steht, rufen Sie Meine IP im selben Browser auf, um sicherzustellen, dass der Datenverkehr über den Proxy läuft.

Häufig gestellte Fragen

Warum laden HTTP-Seiten, während HTTPS-Seiten fehlschlagen?

Einfaches HTTP benötigt kein CONNECT; der Proxy leitet die Anfrage direkt weiter. Nur HTTPS öffnet einen Tunnel, weshalb Tunnelfehler nur dort auftreten.

Was verursacht ERR_TUNNEL_CONNECTION_FAILED unter Android?

Meist eine App, die Benutzername und Passwort nicht an einen WLAN-Proxy übergeben kann. Öffnen Sie dieselbe Seite in Chrome für Android; kann Chrome den Dialog anzeigen und die Seite laden, liegt es an der App.

Kann ich user:pass in --proxy-server übergeben?

Nein. Chrome ignoriert Anmeldedaten in diesem Flag, was zu einem 407 und dem Tunnelfehler führt. Authentifizieren Sie sich stattdessen über Puppeteer, Playwright oder eine Erweiterung.

Behebt der Wechsel zu SOCKS5 den Tunnelfehler?

Nur, wenn Ihre Bestellung SOCKS5 umfasst. VinaProxy bietet sowohl HTTP(S) als auch SOCKS5; wählen Sie das Protokoll, das für Ihren Auftrag im Dashboard angezeigt wird, da Abweichungen zu anderen Fehlern führen.

Proxys, die mit Puppeteer und Playwright funktionieren

VinaProxy-Proxys nutzen den Standard-Login über user:pass, den gängige Automatisierungsbibliotheken direkt unterstützen.

Preise ansehen

Verwandte Artikel

Proxy-Fehler
So beheben Sie den Fehler 407 Proxy Authentication Required
Ein Fehler 407 Proxy Authentication Required bedeutet, dass der Proxy geantwortet, aber Ihre Anmeldung abgelehnt hat. Echte curl-Ausgaben, typische Ursachen und Lösungen je App.
Proxy-Fehler
502 Bad Gateway bei Proxys: Finden Sie heraus, wer den Fehler sendet
Ein 502 Bad Gateway über einen Proxy bedeutet, dass ein Zwischenserver keine gültige Antwort erhalten hat. So ermitteln Sie anhand echter curl-Ausgaben, ob der Proxy oder die Website verantwortlich ist.
Proxy-Einrichtung
Proxy mit Authentifizierung in Puppeteer einrichten (Node.js)
Konfigurieren Sie authentifizierte HTTP(S)-Proxys in Node.js Puppeteer mit dem Startparameter --proxy-server und await page.authenticate().
Proxy-Einrichtung
Proxy in Playwright einrichten (Browser- und Per-Context-Authentifizierung)
Konfigurieren Sie authentifizierte HTTP(S)-Proxys in Playwright für Node.js und Python. Betreiben Sie mehrere isolierte statische IPs über BrowserContexts.
Proxy-Einrichtung
Proxy mit Authentifizierung in Selenium WebDriver einrichten
HTTP(S)-Proxys mit Benutzername und Passwort in Selenium WebDriver über selenium-wire oder eine onAuthRequired-Erweiterung konfigurieren.
Kostenlose Tools
Proxy Checker: Ihre Proxys online prüfen
Kostenloser Proxy Checker: bis zu 100 Proxys als ip:port:user:pass einfügen und online Status, Exit-IP und Latenz prüfen. Erfahren Sie, was jeder Fehler bedeutet.
Proxy-Einrichtung
Proxy-Konfiguration in Google Chrome
Konfigurieren Sie VinaProxy HTTP(S)-Proxys in Google Chrome ohne Änderung der systemweiten IP über Erweiterungen, --proxy-server Flags oder getrennte Profile.
Proxy-Einrichtung
So konfigurieren Sie einen Proxy unter Windows 10 & Windows 11
Konfigurieren Sie VinaProxy HTTP(S)-Proxys unter Windows 10 und Windows 11 über die WinINET-Systemeinstellungen, PowerShell-Umgebungsvariablen oder netsh winhttp.