wget aracını bir proxy üzerinden indirme yapacak şekilde yapılandırmak için http_proxy, https_proxy veya ftp_proxy ortam değişkenlerini ayarlayın, proxy bilgilerini komut satırı seçenekleriyle belirtin ya da bunları bir .wgetrc yapılandırma dosyasında tanımlayın.
wget için proxy yapılandırması, doğrudan internet erişimi güvenlik duvarlarıyla kısıtlandığında, trafiği belirli bir ağ üzerinden yönlendirmek için veya anonimleştirme amacıyla gereklidir. wget, hem hedef kaynaklar hem de proxy bağlantıları için HTTP, HTTPS ve FTP protokollerini destekler.
Proxy Yapılandırma Yöntemleri
wget aracını proxy kullanacak şekilde yapılandırmanın üç temel yöntemi vardır: ortam değişkenleri, komut satırı seçenekleri ve .wgetrc yapılandırma dosyası. Her yöntem farklı kapsam ve kalıcılık düzeyleri sunar.
Ortam Değişkenleri
Ortam değişkenleri, wget tarafından otomatik olarak algılanan, sistem genelinde veya oturuma özgü bir proxy yapılandırması sağlar. Bu, geçici veya kullanıcıya özgü ayarlar için genellikle en yaygın yöntemdir.
http_proxy: HTTP hedefleri için kullanılır.https_proxy: HTTPS hedefleri için kullanılır.ftp_proxy: FTP hedefleri için kullanılır.no_proxy: Proxy'yi atlaması gereken alan adlarının veya IP adreslerinin virgülle ayrılmış listesini belirtir.
Proxy URL'lerinin genel biçimi http://[user:password@]host:port/ şeklindedir. wget, hedef URL'nin HTTP veya HTTPS olmasından bağımsız olarak içerik almak için öncelikle HTTP proxy'leri kullanır. Bu nedenle, özel bir HTTPS proxy'si gerekmedikçe http_proxy çoğu zaman hem HTTP hem de HTTPS hedefleri için yeterlidir.
Geçici Yapılandırma (Mevcut Oturum)
Bu değişkenleri wget çalıştırmadan önce kabuğunuzda ayarlayın.
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
Kimlik doğrulama gerektiren proxy'ler için:
export http_proxy="http://user:[email protected]:8080"
export https_proxy="http://user:[email protected]:8080"
wget http://example.com/file.zip
Not: Kimlik bilgilerini doğrudan ortam değişkenlerine veya URL'lere gömmek, güvenlik açısından hassas ortamlarda genellikle önerilmez; çünkü bunlar diğer süreçler tarafından görülebilir veya kabuk geçmişinde saklanabilir.
Belirli bir oturumda proxy'yi devre dışı bırakmak için:
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
Kalıcı Yapılandırma (Kullanıcıya Özgü)
Proxy ayarlarının belirli bir kullanıcı için oturumlar arasında kalıcı olmasını sağlamak amacıyla export komutlarını kabuğunuzun profil dosyasına (örneğin Linux/macOS'ta ~/.bashrc, ~/.zshrc, ~/.profile) veya sistem genelindeki yapılandırma dosyalarına ekleyin.
~/.bashrc için örnek:
# Proxy Settings
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"
Düzenledikten sonra dosyayı yeniden yükleyin veya kabuğu yeniden başlatın: source ~/.bashrc.
Komut Satırı Seçenekleri
wget, proxy yapılandırması için, tek bir çalıştırmada ortam değişkenlerini ve .wgetrc ayarlarını geçersiz kılan özel komut satırı seçenekleri sunar. Bu, tek seferlik indirmeler veya proxy ayarlarının dinamik olarak denetlenmesi gereken betikler için uygundur.
--proxy-on: Proxy kullanımını açıkça etkinleştirir.--proxy-off: Proxy kullanımını açıkça devre dışı bırakır.--no-proxy: Proxy'yi atlaması gereken alan adlarının virgülle ayrılmış listesi (no_proxyortam değişkenine benzer).--proxy-user=<user>: Proxy kullanıcı adını belirtir.--proxy-password=<password>: Proxy parolasını belirtir.
Örnek Kullanım:
# Varsayılan ayarları geçersiz kılarak bir dosyayı proxy üzerinden indirir
wget --proxy-on --proxy-user=myuser --proxy-password=mypassword http://proxy.example.com:8080 http://example.com/file.zip
# Yapılandırılmış proxy'yi atlayarak dosyayı doğrudan indirir
wget --proxy-off http://example.com/file.zip
# Proxy kullanır, ancak belirli bir alan adı için atlar
wget --no-proxy=internal.example.com --proxy-on http://proxy.example.com:8080 http://example.com/file.zip
--proxy-user ve --proxy-password kullanıldığında wget, verilen kimlik bilgileriyle proxy'de kimlik doğrulaması yapmayı dener. Proxy adresinin kendisi genellikle yine ortam değişkenleri veya .wgetrc üzerinden tanımlanır.
.wgetrc Yapılandırma Dosyası
.wgetrc dosyası, kalıcı, kullanıcıya özgü veya sistem genelinde proxy ayarlarına olanak tanır. wget bu dosyayı çalıştırma sırasında okur.
- Kullanıcıya özgü:
~/.wgetrc(Linux/macOS) veyaWGETRCortam değişkeniyle belirtilen bir yol. - Sistem genelinde:
/etc/wgetrc(Linux/macOS).
~/.wgetrc içindeki ayarlar /etc/wgetrc dosyasına göre önceliklidir. Komut satırı seçenekleri her ikisini de geçersiz kılar.
Yapılandırma Direktifleri:
# Enable or disable proxy usage by default
use_proxy = on
# Define HTTP proxy
http_proxy = http://proxy.example.com:8080/
# Define HTTPS proxy
https_proxy = http://proxy.example.com:8080/
# Define FTP proxy
ftp_proxy = http://proxy.example.com:8080/
# Proxy authentication credentials
proxy_user = myuser
proxy_password = mypassword
# Domains to bypass proxy
no_proxy = localhost,127.0.0.1,.internal.domain.com
Örnek ~/.wgetrc içeriği:
# Enable proxy usage
use_proxy = on
# Proxy server details
http_proxy = http://user:[email protected]:8080/
https_proxy = http://user:[email protected]:8080/
ftp_proxy = http://user:[email protected]:8080/
# Domains to exclude from proxy
no_proxy = localhost,127.0.0.1,dev.local
Proxy Kimlik Doğrulaması
wget, basic ve digest proxy kimlik doğrulamasını destekler.
- URL üzerinden: Ortam değişkeni örneklerinde gösterildiği gibi (
http://user:password@host:port). Kimlik bilgileri günlüklerde veya kabuk geçmişinde görünebileceğinden daha az güvenlidir. proxy_userveproxy_passwordüzerinden:.wgetrciçinde veya komut satırı seçenekleriyle (--proxy-user,--proxy-password).wgetkimlik doğrulama el sıkışmasını, kimlik bilgilerini URL içinde açık biçimde göstermeden yürüttüğü için güvenlik açısından genellikle tercih edilir.
Yapılandırma Yöntemlerinin Karşılaştırması
| Özellik | Ortam Değişkenleri | Komut Satırı Seçenekleri | .wgetrc Dosyası |
|---|---|---|---|
| Kapsam | Oturuma veya kullanıcıya özgü (profil dosyaları üzerinden) | Tek bir wget komutu çalıştırması |
Kullanıcıya özgü (~/.wgetrc) veya sistem genelinde (/etc/wgetrc) |
| Kalıcılık | Geçici (oturum) veya kalıcı (profil dosyası) | Yok (geçici) | Kalıcı |
| Öncelik | Komut satırı seçenekleri tarafından geçersiz kılınır | En yüksek (diğer tüm yöntemleri geçersiz kılar) | Komut satırı seçenekleri ve ortam değişkenleri tarafından geçersiz kılınır |
| Kullanım Alanı | Genel amaçlı, sık kullanım, betik yazımı | Tek seferlik indirmeler, dinamik proxy değişiklikleri, test | Bir kullanıcı veya sistem için varsayılan ayarlar |
| Kimlik Doğrulama | URL üzerinden (daha az güvenli) | Özel seçenekler (--proxy-user, --proxy-password) |
Özel direktifler (proxy_user, proxy_password) |
Sık Karşılaşılan Sorunların Giderilmesi
- "Proxy authentication required":
proxy_userveproxy_passworddeğerlerinin doğru ayarlandığından ya da kimlik bilgilerinin proxy URL'sinde verildiğinden emin olun. Kullanıcı adı ve parolanın doğru olduğunu doğrulayın. - "Connection refused" / "Unable to connect to proxy":
- Proxy sunucusunun adresinin ve portunun doğru olduğunu ve proxy hizmetinin çalıştığını doğrulayın.
- İstemciden proxy sunucusuna ağ bağlantısını kontrol edin.
- Güvenlik duvarları (istemci veya proxy tarafında) bağlantıyı engelliyor olabilir.
- "Bad Gateway" / "HTTP Error 502": Proxy sunucusu üst sunucuya bağlanamadı veya isteği işlerken bir hatayla karşılaştı. Bu genellikle proxy sunucusunun kendisinde ya da onun internet bağlantısında bir sorun olduğunu gösterir.
wgetproxy kullanmıyor:.wgetrciçindeuse_proxy = onolduğunu ya da ortam değişkenlerinin doğru ayarlanıp dışa aktarıldığını doğrulayın.- Hedef URL için çakışan
--proxy-offveyano_proxyayarlarının etkin olmadığından emin olun. - Proxy adreslerinde yazım hatası olup olmadığını kontrol edin.
no_proxyçalışmıyor:no_proxylistesinin doğru biçimlendirildiğinden (virgülle ayrılmış, virgüllerin çevresinde boşluk olmadan) ve tam alan adlarını veya IP adreslerini içerdiğinden emin olun.wgetalt dize eşleştirmesi yapar, bu nedenle.example.comifadesihost.example.comile eşleşir.- HTTPS hedeflerinin HTTP proxy üzerinden başarısız olması:
wgetçoğu zaman HTTPS trafiğini bir HTTP proxy üzerinden tünelleyebilse de, bazı proxy'ler veya ağ yapılandırmaları HTTPS için özel bir HTTPS proxy ayarı (https_proxykullanarak) ya da doğrudan bağlantı gerektirebilir.https_proxyayarlı değilsewgetvarsayılan olarakhttp_proxydeğerini kullanır. Proxy sunucunuzun SSL/TLS tünellemeyi desteklediğinden emin olun.
