Ohne KYC — keine ID, kein Selfie, keine Dokumente. Mit Krypto bezahlen: BTC, USDT, USDC, ETH, SOL, LTC
Sprache: Deutsch
Jetzt starten

Proxy-Fehlerreferenz · HTTP-Statuscodes

407 Proxy Authentication Required: was es bedeutet und wie Sie das Problem beheben

HTTP-Statuscode (4xx, Client-Fehler): die genaue Meldung in jedem Tool, wahrscheinliche Ursachen in Reihenfolge und die Lösung, die funktioniert.

Zuletzt aktualisiert: · 5 Min. Lesezeit

Kurze Antwort

Was bedeutet 407 Proxy Authentication Required bei einem Proxy?

407 Proxy Authentication Required bedeutet, dass das Proxy Ihre Anfrage abgelehnt hat, weil es keine oder falsche Zugangsdaten erhalten hat. Die Ziel-Website wurde nie kontaktiert. Bei CrawlRelay Residential Proxies prüfen Sie drei Dinge: Der Benutzername entspricht dem in Ihrem Dashboard, das Passwort stimmt überein, und Sonderzeichen sind URL-codiert. Ein erneutes Senden derselben Anfrage behebt nie einen 407.

407 Proxy Authentication Required auf einen Blick

Fehler407 Proxy Authentication Required
TypHTTP-Statuscode (4xx, Client-Fehler)
Gesendet vonDas Proxy-Gateway, niemals die Ziel-Website
Definiert inRFC 9110, section 15.5.8 (headers: Proxy-Authenticate 11.7.1, Proxy-Authorization 11.7.2)
Noch einmal versuchen?Nein. Dieselben Zugangsdaten schlagen wieder fehl; beheben Sie zuerst das Problem
Zuerst prüfenFühren Sie den Curl-Test unten mit nur dem Benutzernamen und ohne Zielparameter aus

Was bedeutet 407 Proxy Authentication Required?

Ein 407 kommt vom Proxy, nicht von der Website, die Sie erreichen möchten. RFC 9110 beschreibt es als Proxy-Version von 401: Der Client muss sich erst beim Proxy authentifizieren, bevor etwas anderes passiert. Das Proxy sendet einen Proxy-Authenticate Header mit dem akzeptierten Authentifizierungsschema, fast immer Basic. Ihr Client antwortet mit einem Proxy-Authorization Header, der username:password Base64-codiert enthält.

Bei einem HTTPS-Ziel kommt der 407 auf die CONNECT Anfrage zurück, die den Tunnel öffnet. Daher melden viele Bibliotheken es als Tunnel- oder Verbindungsfehler und nicht als HTTP-Status: die TLS-Sitzung mit der Website wurde nie aufgebaut.

Wie sieht a 407 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: ProxyError('Unable to connect to proxy', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))
  • curl: curl: (56) CONNECT tunnel failed, response 407
  • Scrapy: TunnelError: Could not open CONNECT tunnel with proxy ... [{'status': 407, 'reason': b'Proxy Authentication Required'}]
  • Chrome, Playwright, Puppeteer: net::ERR_TUNNEL_CONNECTION_FAILED, oder ein Login-Popup im sichtbaren Browser
  • Node.js-Clients auf einem http:// Ziel: Request failed with status code 407

Was verursacht a 407?

Wahrscheinlich zuerst:

  • Falscher Benutzername oder Passwort. Ein Tippfehler, ein altes Passwort nach Zurücksetzung oder Zugangsdaten eines anderen Sub-Users.
  • Nicht-kodierte Sonderzeichen. Ein Passwort mit @, :, / oder # zerstört die user:pass@host URL. Prozent-kodieren Sie es: @ wird zu %40, : wird zu %3A.
  • Ein defekter Ziel-Suffix. Gateways, die das Ziel aus dem Benutzernamen lesen, sehen nur einen langen Benutzernamen. Ein Tippfehler im Schlüssel oder Ländercode macht daraus einen unbekannten Benutzernamen.
  • Zugangsdaten, die nie Ihren Code verlassen. Chrome ignoriert einen in --proxy-server geschriebenen Benutzernamen und Passwort. Puppeteer benötigt page.authenticate(), Selenium benötigt einen lokalen Forwarder.
  • Ein leeres Guthaben. Prüfen Sie, ob Ihr Konto noch Traffic übrig hat, bevor Sie den Code debuggen.

Wie diagnostiziere ich a 407 Schritt für Schritt?

  1. Testen Sie die Zugangsdaten mit curl ohne Zielparameter (Befehl unten). Eine HTTP/1.1 407-Zeile im verbose-Output bestätigt ein Zugangsdatenproblem.
  2. Fügen Sie Ihre Zielparameter einzeln wieder hinzu und führen Sie den Test nach jedem hinzugefügten Parameter erneut aus.
  3. Protokollieren Sie die Proxy-URL, die Ihr Programm tatsächlich erzeugt, maskieren Sie das Passwort und vergleichen Sie sie Zeichen für Zeichen mit dem Dashboard.
  4. Wenn curl erfolgreich ist und Ihr Programm fehlschlägt, sendet die Bibliothek die Zugangsdaten nicht. Lesen Sie die Lösung für Ihr Tool unten.
Testen Sie die fehlerhafte URL mit curl (HTTP-Port, ausführlich)
# 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

Wie behebe ich a 407?

  • Kodieren Sie die Zugangsdaten mit urllib.parse.quote(value, safe='') in Python oder encodeURIComponent() in JavaScript, bevor Sie die URL zusammenbauen.
  • Browser: Übergeben Sie username und password im Playwright-proxy-Parameter, rufen Sie page.authenticate() in Puppeteer auf, und nutzen Sie für Selenium einen lokalen Forwarder. Siehe die Playwright](/docs/playwright/)- und Puppeteer](/docs/puppeteer/)-Anleitungen.
  • Umgebungsvariablen: Wenn Sie HTTPS_PROXY setzen, setzen Sie den kompletten Wert in Anführungszeichen, damit @ und $ erhalten bleiben.
  • Rotieren Sie das Passwort im Dashboard, wenn ein Leak vermutet wird, und aktualisieren Sie alle Scraper, die es nutzen.
Python: Bau der Proxy-URL mit kodierten Zugangsdaten
from urllib.parse import quote

import requests

user = "USERNAME-country-us"
password = "p@ss:word/1"  # example containing special characters

# safe="" also encodes "/", "@" and ":" inside the credentials
proxy = "http://{}:{}@gw.crawlrelay.com:7777".format(
    quote(user, safe=""), quote(password, safe="")
)
proxies = {"http": proxy, "https": proxy}  # http:// for both keys

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=(10, 30))
print(r.status_code, r.text)
Playwright (Python): Zugangsdaten als separate Felder
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 a 407 einen erneuten Versuch starten?

Versuchen Sie nicht automatisch eine Wiederholung bei einem 407. Eine Wiederholung mit denselben Zugangsdaten liefert dieselbe Antwort, und eine enge Wiederholungsschleife füllt nur Ihre Logs. Behandeln Sie 407 als Konfigurationsfehler: stoppen Sie den Job, beheben Sie die Zugangsdaten und starten Sie neu. Wenn 407 plötzlich in einem wochenlang funktionierenden Job erscheint, wurde wahrscheinlich das Passwort geändert oder der Sub-User deaktiviert.

Wie wirkt sich 407 Proxy Authentication Required auf CrawlRelay aus?

Das CrawlRelay-Gateway liest bei jeder neuen Verbindung Benutzername und Passwort aus. Ziel- und Sitzungsparameter stecken im Benutzernamen, daher kann ein gültiges Passwort trotzdem bei einem falsch formatierten Suffix fehlschlagen. Bauen Sie den Benutzernamen in einer Hilfsfunktion und protokollieren Sie das Ergebnis beim Start einmal. Die Quick-Start-Seite zeigt das genaue Format.

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: 401 vs 407 · ERR_TUNNEL_CONNECTION_FAILED · Cannot connect to proxy.

407 Proxy Authentication Required: Fragen, die Entwickler stellen

Wird ein 407 von der Website gesendet, die ich scrape?

Nein. Ein 407 wird immer von einem Proxy zwischen Ihnen und der Website gesendet. Die Anfrage erreicht nie die Website, also kann diese Ihren Traffic nicht sehen, zählen oder sperren. Wenn die Website eine Anmeldung wünschte, antwortet sie mit 401. Beheben Sie die Proxy-Zugangsdaten, dann verschwindet der 407.

Warum bekomme ich 407 in meinem Code, wenn curl mit demselben Proxy funktioniert?

Ihre Bibliothek sendet die Zugangsdaten nicht oder in einer anderen Form. Die gängigen Ursachen sind: Zugangsdaten in einem Browser-Flag, das sie ignoriert; eine Umgebungsvariable mit verlorenen Sonderzeichen; ein nicht URL-kodiertes Passwort. Drucken Sie die Proxy-URL, die Ihr Code erzeugt, mit maskiertem Passwort und vergleichen Sie sie mit dem curl-Befehl.

Verbraucht ein 407 Datenvolumen aus meinem Tarif?

Eine 407-Antwort ist nur wenige hundert Bytes groß, die Anfrage erreicht das Ziel nie, es wird keine Seite heruntergeladen. Die Kosten liegen anderswo: Ein Scraper, der in einer 407-Wiederholungsschleife steckt, verschwendet Zeit und füllt Ihre Logs. Machen Sie 407 zum Hard-Stop in Ihrer Fehlerbehandlung.

Weitere Proxy-Fehler in diesem Leitfaden

HTTP-Statuscodes

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.

Ab 0,50 $/GB · ohne KYC

Jetzt starten