curl ile Proxy Kullanımı
curl, bir proxy'nin gerçekten çalışıp çalışmadığını saniyeler içinde gösteren en hızlı araçtır. Doğru bayrakları bildiğinizde kimlik, DNS ve tünel sorunlarını tek komutla ayırt edebilirsiniz.
- -x ve -U ile temel kullanım
- SOCKS5’te yerel ve uzak DNS
- -v ile CONNECT tünelini görme
Temel kullanım
-x (uzun adı --proxy) proxy adresini, -U (uzun adı --proxy-user) proxy kimlik bilgisini alır. Şema yazılmazsa curl proxy'yi HTTP proxy olarak kabul eder.
# Kimlik bilgisi URL içinde
curl -x "http://kullanici:sifre@proxy.example.com:8000" "https://api.ipify.org?format=json"
# Kimlik bilgisi ayrı bayrakla
curl -x proxy.example.com:8000 -U kullanici:sifre "https://api.ipify.org?format=json"
# IP whitelist ile (kimlik bilgisi yok)
curl -x proxy.example.com:8000 "https://api.ipify.org?format=json"
# Proxy'siz karşılaştırma
curl "https://api.ipify.org?format=json"URL’yi tırnak içine almak, ? ve & karakterlerinin kabuk tarafından yorumlanmasını önler.
SOCKS5: --socks5 ve --socks5-hostname
İki bayrak arasındaki tek fark DNS çözümlemesinin nerede yapıldığıdır; ama bu fark sonuçları ciddi biçimde değiştirebilir.
# Alan adı YEREL makinede çözülür, proxy'ye IP gönderilir
curl --socks5 proxy.example.com:1080 -U kullanici:sifre "https://api.ipify.org?format=json"
# Alan adı PROXY tarafında çözülür
curl --socks5-hostname proxy.example.com:1080 -U kullanici:sifre "https://api.ipify.org?format=json"
# Aynı işin -x ile şema yazımı
curl -x "socks5://kullanici:sifre@proxy.example.com:1080" "https://api.ipify.org?format=json"
curl -x "socks5h://kullanici:sifre@proxy.example.com:1080" "https://api.ipify.org?format=json"DNS farkı neden önemli?
| Kriter | --socks5 / socks5:// | --socks5-hostname / socks5h:// |
|---|---|---|
| Alan adını kim çözer? | Sizin makineniz ve yerel DNS sunucunuz | Proxy sunucusu |
| Yerel DNS’e sorgu gider mi? | Evet | Hayır |
| Coğrafi sonuç | Yerel konumunuza göre seçilmiş sunucu IP’si dönebilir | Proxy konumuna uygun sunucu IP’si döner |
| Yalnız proxy ağında çözülen adlar | Çözülemez | Çözülür |
| Ne zaman tercih edilir? | Yerel çözümlemenin bilinçli istendiği testler | Genel kullanım ve gizlilik odaklı senaryolar |
HTTPS proxy ve -v ile tüneli görmek
Proxy adresi https:// ile başlarsa curl önce proxy'nin kendisiyle TLS bağlantısı kurar; böylece CONNECT isteği ve kimlik bilgisi şifreli kanalda gider. Bu özellik curl 7.52.0 ve sonrasında, destekleyen bir TLS kütüphanesiyle derlenmiş sürümlerde bulunur. Port değerini sağlayıcınızın HTTPS proxy için verdiği portla değiştirin.
# Proxy sertifikası doğrulanarak
curl -x "https://kullanici:sifre@proxy.example.com:8443" "https://api.ipify.org?format=json"
# Proxy için ayrı CA dosyası
curl --proxy-cacert proxy-ca.pem -x "https://proxy.example.com:8443" -U kullanici:sifre "https://api.ipify.org?format=json"
# Yalnız test için: proxy sertifikasını doğrulama (hedefin doğrulaması sürer)
curl --proxy-insecure -x "https://proxy.example.com:8443" -U kullanici:sifre "https://api.ipify.org?format=json"curl -v -x proxy.example.com:8000 -U kullanici:sifre "https://api.ipify.org?format=json"
# Örnek çıktının ilgili kısmı (sürüme göre biçim değişebilir):
# * Connected to proxy.example.com (192.0.2.10) port 8000
# * Establish HTTP proxy tunnel to api.ipify.org:443
# > CONNECT api.ipify.org:443 HTTP/1.1
# > Host: api.ipify.org:443
# > Proxy-Authorization: Basic a3VsbGFuaWNpOnNpZnJl
# < HTTP/1.1 200 Connection established
# * CONNECT phase completed--proxy-insecure yalnız proxy sertifikasının doğrulamasını kapatır; hedef sitenin sertifikası için ayrı olan -k bayrağıdır. İkisini de üretimde kullanmayın. -v çıktısı Proxy-Authorization satırını içerdiği için ekran görüntüsü paylaşmadan önce bu satırı gizleyin.
Ortam değişkenleri ve istisnalar
curl, düz HTTP için yalnız küçük harfli http_proxy değişkenini okur; büyük harfli HTTP_PROXY güvenlik nedeniyle yok sayılır. https_proxy, all_proxy ve no_proxy için iki yazım da kabul edilir.
export http_proxy="http://kullanici:sifre@proxy.example.com:8000"
export https_proxy="$http_proxy"
export no_proxy="localhost,127.0.0.1,.yerel.lan"
curl "https://api.ipify.org?format=json" # proxy üzerinden
curl --noproxy "*" "https://api.ipify.org?format=json" # bu istekte proxy yokWindows 10 ve 11 ile birlikte gelen curl, komut isteminde ve PowerShell’de kullanılabilir. Ancak Windows PowerShell 5.1’de curl yazmak Invoke-WebRequest komutunun takma adını çalıştırır ve -x gibi bayraklar hata verir. Bu yüzden PowerShell’de her zaman curl.exe yazın; tek satırlık komutlar kullanın ve URL’yi çift tırnağa alın.
Sorun giderme
Sıkça Sorulan Sorular
-x bayrağında şema yazmazsam ne olur?
curl proxy'yi HTTP proxy olarak varsayar. SOCKS5 veya HTTPS proxy kullanıyorsanız socks5h:// ya da https:// şemasını açıkça yazmanız gerekir.
--socks5 mi, --socks5-hostname mi kullanmalıyım?
Çoğu senaryoda --socks5-hostname (veya socks5h://) daha doğru sonuç verir; alan adı proxy tarafında çözülür ve yerel DNS sorgusu yapılmaz. --socks5 ise yerel çözümlemenin bilinçli istendiği testler içindir.
curl HTTP_PROXY değişkenini neden okumuyor?
Bazı web sunucusu ortamlarında istekteki Proxy başlığı HTTP_PROXY değişkenine dönüşebildiği için curl düz HTTP için büyük harfli adı bilerek yok sayar. Küçük harfli http_proxy kullanın.
Bir proxy listesini curl ile toplu test edebilir miyim?
Basit bir kabuk döngüsüyle her satırı -x ile deneyip --max-time ile süreyi sınırlayabilirsiniz. Grafik arayüz tercih ederseniz araclar/proxy-kontrol sayfası aynı işi tarayıcıdan yapar.
--proxytunnel (-p) ne işe yarar?
HTTP proxy üzerinden düz http:// adreslerine giderken de curl'ün CONNECT tüneli açmasını zorlar. Bazı proxy'ler yalnız tünel trafiğine izin verdiğinde veya protokolü proxy'den gizlemek istediğinizde kullanılır.
curl çıktısında gerçek IP’mi görürsem ne demektir?
İstek proxy’den geçmiyor demektir. -v ile bağlantının proxy adresine mi yoksa doğrudan hedefe mi kurulduğunu kontrol edin; no_proxy listesinin hedefi kapsamadığından emin olun.
Bunlar da işinize yarayabilir
Doğru proxy ile hemen başlayın
Paketleri karşılaştırın, ihtiyacınıza uygun olanı seçin. Kararsız kaldığınız noktada WhatsApp üzerinden sorabilirsiniz.