Um wget für Downloads über einen Proxy zu konfigurieren, setzen Sie die Umgebungsvariablen http_proxy, https_proxy oder ftp_proxy, geben Sie Proxy-Details über Befehlszeilenoptionen an oder definieren Sie diese in einer .wgetrc-Konfigurationsdatei.
Die Proxy-Konfiguration für wget ist notwendig, wenn der direkte Internetzugang durch Firewalls eingeschränkt ist, um Datenverkehr durch ein bestimmtes Netzwerk zu leiten oder zu Anonymisierungszwecken. wget unterstützt HTTP-, HTTPS- und FTP-Protokolle sowohl für Zielressourcen als auch für Proxy-Verbindungen.
Proxy-Konfigurationsmethoden
Es gibt drei primäre Methoden, wget für die Verwendung eines Proxys zu konfigurieren: Umgebungsvariablen, Befehlszeilenoptionen und die .wgetrc-Konfigurationsdatei. Jede Methode bietet unterschiedliche Geltungsbereiche und Persistenzstufen.
Umgebungsvariablen
Umgebungsvariablen bieten eine systemweite oder sitzungsspezifische Proxy-Konfiguration, die wget automatisch erkennt. Dies ist oft die gängigste Methode für temporäre oder benutzerspezifische Einstellungen.
http_proxy: Wird für HTTP-Ziele verwendet.https_proxy: Wird für HTTPS-Ziele verwendet.ftp_proxy: Wird für FTP-Ziele verwendet.no_proxy: Gibt eine kommagetrennte Liste von Domains oder IP-Adressen an, die den Proxy umgehen sollen.
Das allgemeine Format für Proxy-URLs ist http://[user:password@]host:port/. wget verwendet primär HTTP-Proxys, um Inhalte abzurufen, unabhängig davon, ob die Ziel-URL HTTP oder HTTPS ist. Daher ist http_proxy oft ausreichend für HTTP- und HTTPS-Ziele, es sei denn, ein spezifischer HTTPS-Proxy ist erforderlich.
Temporäre Konfiguration (Aktuelle Sitzung)
Setzen Sie diese Variablen in Ihrer Shell, bevor Sie wget aufrufen.
Linux/macOS (Bash/Zsh):
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export ftp_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1,.internal.domain.com"
wget http://example.com/file.zip
wget https://secure.example.com/data.tar.gz
Für Proxys, die eine Authentifizierung erfordern:
export http_proxy="http://user:password@proxy.example.com:8080"
export https_proxy="http://user:password@proxy.example.com:8080"
wget http://example.com/file.zip
Hinweis: Das direkte Einbetten von Anmeldeinformationen in Umgebungsvariablen oder URLs wird in sicherheitssensiblen Umgebungen generell nicht empfohlen, da sie für andere Prozesse sichtbar sein oder in der Shell-Historie gespeichert werden können.
Um den Proxy für eine bestimmte Sitzung zu deaktivieren:
unset http_proxy
unset https_proxy
unset ftp_proxy
Windows (CMD):
set http_proxy=http://proxy.example.com:8080
set https_proxy=http://proxy.example.com:8080
set ftp_proxy=http://proxy.example.com:8080
set no_proxy=localhost,127.0.0.1,.internal.domain.com
wget http://example.com/file.zip
Windows (PowerShell):
$env:http_proxy="http://proxy.example.com:8080"
$env:https_proxy="http://proxy.example.com:8080"
$env:ftp_proxy="http://proxy.example.com:8080"
$env:no_proxy="localhost,127.0.0.1,.internal.domain.com"
wget http://example.com/file.zip
Permanente Konfiguration (Benutzerspezifisch)
Um Proxy-Einstellungen sitzungsübergreifend für einen bestimmten Benutzer persistent zu machen, fügen Sie die export-Befehle zur Profil-Datei Ihrer Shell (z.B. ~/.bashrc, ~/.zshrc, ~/.profile unter Linux/macOS) oder zu systemweiten Konfigurationsdateien hinzu.
Beispiel für ~/.bashrc:
# Proxy-Einstellungen
export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export ftp_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1,.internal.domain.com"
Nach dem Bearbeiten die Datei sourcen oder Ihre Shell neu starten: source ~/.bashrc.
Befehlszeilenoptionen
wget bietet spezifische Befehlszeilenoptionen für die Proxy-Konfiguration, die Umgebungsvariablen und .wgetrc-Einstellungen für einen einzelnen Aufruf überschreiben. Dies ist geeignet für einmalige Downloads oder Skripte, bei denen Proxy-Einstellungen dynamisch gesteuert werden müssen.
--proxy-on: Proxy-Nutzung explizit aktivieren.--proxy-off: Proxy-Nutzung explizit deaktivieren.--no-proxy: Kommagetrennte Liste von Domains, die den Proxy umgehen sollen (ähnlich der Umgebungsvariablenno_proxy).--proxy-user=<user>: Proxy-Benutzernamen angeben.--proxy-password=<password>: Proxy-Passwort angeben.
Anwendungsbeispiele:
# Eine Datei über einen Proxy herunterladen, dabei alle Standardeinstellungen überschreiben
wget --proxy-on --proxy-user=myuser --proxy-password=mypassword http://proxy.example.com:8080 http://example.com/file.zip
# Eine Datei direkt herunterladen, dabei jeden konfigurierten Proxy umgehen
wget --proxy-off http://example.com/file.zip
# Proxy verwenden, aber für eine bestimmte Domain umgehen
wget --no-proxy=internal.example.com --proxy-on http://proxy.example.com:8080 http://example.com/file.zip
Bei der Verwendung von --proxy-user und --proxy-password versucht wget, sich mit dem Proxy unter Verwendung der bereitgestellten Anmeldeinformationen zu authentifizieren. Die Proxy-Adresse selbst wird typischerweise immer noch über Umgebungsvariablen oder .wgetrc definiert.
.wgetrc Konfigurationsdatei
Die .wgetrc-Datei ermöglicht persistente, benutzerspezifische oder systemweite Proxy-Einstellungen. wget liest diese Datei bei der Ausführung.
- Benutzerspezifisch:
~/.wgetrc(Linux/macOS) oder ein durch die UmgebungsvariableWGETRCangegebener Pfad. - Systemweit:
/etc/wgetrc(Linux/macOS).
Einstellungen in ~/.wgetrc haben Vorrang vor /etc/wgetrc. Befehlszeilenoptionen überschreiben beide.
Konfigurationsanweisungen:
# Proxy-Nutzung standardmäßig aktivieren oder deaktivieren
use_proxy = on
# HTTP-Proxy definieren
http_proxy = http://proxy.example.com:8080/
# HTTPS-Proxy definieren
https_proxy = http://proxy.example.com:8080/
# FTP-Proxy definieren
ftp_proxy = http://proxy.example.com:8080/
# Proxy-Authentifizierungsdaten
proxy_user = myuser
proxy_password = mypassword
# Domains, die den Proxy umgehen sollen
no_proxy = localhost,127.0.0.1,.internal.domain.com
Beispielinhalt für ~/.wgetrc:
# Proxy-Nutzung aktivieren
use_proxy = on
# Proxy-Server-Details
http_proxy = http://user:password@proxy.example.com:8080/
https_proxy = http://user:password@proxy.example.com:8080/
ftp_proxy = http://user:password@proxy.example.com:8080/
# Domains, die vom Proxy ausgeschlossen werden sollen
no_proxy = localhost,127.0.0.1,dev.local
Proxy-Authentifizierung
wget unterstützt die Basic- und Digest-Proxy-Authentifizierung.
- Über URL: Wie in den Beispielen für Umgebungsvariablen gezeigt (
http://user:password@host:port). Dies ist weniger sicher, da Anmeldeinformationen in Protokollen oder der Shell-Historie erscheinen können. - Über
proxy_userundproxy_password: In.wgetrcoder über Befehlszeilenoptionen (--proxy-user,--proxy-password). Dies wird im Allgemeinen aus Sicherheitsgründen bevorzugt, dawgetden Authentifizierungs-Handshake übernimmt, ohne Anmeldeinformationen unverschlüsselt in der URL offenzulegen.
Vergleich der Konfigurationsmethoden
| Merkmal | Umgebungsvariablen | Befehlszeilenoptionen | .wgetrc-Datei |
|---|---|---|---|
| Geltungsbereich | Sitzungs- oder Benutzerspezifisch (über Profil-Dateien) | Einzelner wget-Befehlsaufruf |
Benutzerspezifisch (~/.wgetrc) oder Systemweit (/etc/wgetrc) |
| Persistenz | Temporär (Sitzung) oder Permanent (Profil-Datei) | Keine (flüchtig) | Permanent |
| Rangfolge | Wird von Befehlszeilenoptionen überschrieben | Höchste (überschreibt alle anderen Methoden) | Wird von Befehlszeilenoptionen und Umgebungsvariablen überschrieben |
| Anwendungsfall | Allgemeiner Zweck, häufige Nutzung, Skripterstellung | Einmalige Downloads, dynamische Proxy-Änderungen, Tests | Standardeinstellungen für einen Benutzer oder ein System |
| Authentifizierung | Über URL (weniger sicher) | Dedizierte Optionen (--proxy-user, --proxy-password) |
Dedizierte Anweisungen (proxy_user, proxy_password) |
Behebung häufiger Probleme
- "Proxy authentication required": Stellen Sie sicher, dass
proxy_userundproxy_passwordkorrekt gesetzt sind oder Anmeldeinformationen in der Proxy-URL bereitgestellt werden. Überprüfen Sie, ob Benutzername und Passwort korrekt sind. - "Connection refused" / "Verbindung zum Proxy nicht möglich":
- Überprüfen Sie, ob Host und Port des Proxys korrekt sind und der Proxy-Dienst läuft.
- Überprüfen Sie die Netzwerkverbindung vom Client zum Proxy-Server.
- Firewalls (client- oder proxyseitig) könnten die Verbindung blockieren.
- "Bad Gateway" / "HTTP-Fehler 502": Der Proxy-Server konnte keine Verbindung zum Upstream-Server herstellen oder ist bei der Bearbeitung der Anfrage auf einen Fehler gestoßen. Dies deutet typischerweise auf ein Problem mit dem Proxy-Server selbst oder dessen Verbindung zum Internet hin.
wgetverwendet den Proxy nicht:- Überprüfen Sie
use_proxy = onin.wgetrcoder dass Umgebungsvariablen korrekt gesetzt und exportiert sind. - Stellen Sie sicher, dass keine widersprüchlichen
--proxy-off- oderno_proxy-Einstellungen für die Ziel-URL aktiv sind. - Überprüfen Sie Proxy-Adressen auf Tippfehler.
- Überprüfen Sie
no_proxyfunktioniert nicht: Stellen Sie sicher, dass dieno_proxy-Liste korrekt formatiert ist (kommagetrennt, keine Leerzeichen um die Kommas) und die genauen Domains oder IP-Adressen enthält.wgetführt eine Teilstring-Übereinstimmung durch, so passt.example.comzuhost.example.com.- HTTPS-Ziele schlagen über HTTP-Proxy fehl: Während
wgetoft HTTPS durch einen HTTP-Proxy tunneln kann, erfordern einige Proxys oder Netzwerkkonfigurationen möglicherweise eine dedizierte HTTPS-Proxy-Einstellung (unter Verwendung vonhttps_proxy) oder eine direkte Verbindung für HTTPS. Wennhttps_proxynicht gesetzt ist, verwendetwgetstandardmäßighttp_proxy. Stellen Sie sicher, dass Ihr Proxy-Server SSL/TLS-Tunneling unterstützt.