HTTP hedefleri için küçük harfli http_proxy değişkenini ayarlayın. curl, büyük harfli HTTP_PROXY değişkenini bilinçli olarak yok sayar. POSIX kabuğunda:

http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/

Bu atamalar yalnızca hemen ardından gelen komut için geçerlidir. Örnekteki dinleyici adresini kendi proxy’nizle değiştirin; genel erişime açık uç noktaları karşılaştırmak için HTTP proxy listesinden bir aday seçin. https_proxy değişkeni HTTPS hedefleri için rota seçer; http:// içeren bir değer yine de hedefe tünel kurabilen sıradan bir HTTP proxy’si anlamına gelir. PowerShell ve Windows komut kabukları farklı atama söz dizimi kullanır.

Tam bu büyük harfli yazım neden tehlikelidir?

CGI ortamları, gelen istek başlıklarını büyük harfli HTTP_ değişkenlerine dönüştürebilir. Bu nedenle Proxy adlı bir başlık HTTP_PROXY olabilir. Buna giden bağlantı yapılandırması olarak güvenmek, istek verilerinin proxy seçmesine izin verirdi. curl’ün küçük harf gereksinimi bu eşlemeyi önler; istisna HTTPS ve diğer protokol değişkenlerine aynı şekilde uygulanmaz.

Değişkeni değiştirmek rotayı değiştirmiyorsa

Önce protokole özgü değişkeni, ardından yedek seçenek ALL_PROXY değişkenini arayın. Eşleşen bir NO_PROXY kuralı proxy’yi atlayabilir. Küçük harfli çeşitler ve birbiriyle yarışan tanımlar da önemlidir. Unix benzeri kabuklar için bu döngü, kimlik bilgileri içerebilecek değerleri yazdırmadan yalnızca varlığı bildirir:

for name in http_proxy HTTP_PROXY https_proxy HTTPS_PROXY all_proxy ALL_PROXY no_proxy NO_PROXY; do
  if printenv "$name" >/dev/null; then
    printf '%s is set\n' "$name"
  fi
done

Listelenen tanımları yerel olarak inceleyin. Biri yeniden beliriyorsa başlatan kabuğun, hizmetin, IDE’nin, konteynerin veya CI’ın yapılandırmasını kontrol edin. Varlık olası girdileri gösterir; hangi değerin öncelik kazandığını söylemez.

Tek bir isteği bu proxy seçimlerinden ayırmak için hem uç noktayı hem de boş bir atlama listesi belirtin:

curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/

Doğrudan bağlantıya izin veriliyorsa karşılaştırma için:

curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/

Bu komutlar devralınan rotayı bağlantı hatasından ayırmaya yardımcı olur. Daha fazla ortam ayarını değiştirmeden önce proxy test sonuçlarını aşama aşama okuyun. curl’ün değişken kurallarını curl’e uygulayın; uygulamanın kendi çalışma ortamı proxy’leri farklı biçimde keşfedip birleştirebilir.

İlgili makaleler