- Yayın tarihi
- Okuma süresi
- 5 dk okuma
cURL ile Proxy Testi ve Sorun Giderme
cURL ile proxy nasıl test edilir: -x, kimlik doğrulama, socks5 ve socks5h, -v ile CONNECT gözlemi, zaman aşımı, IPv6 adresli proxy ve 407, 502, timeout ayrımı.
Bir proxy'nin çalışıp çalışmadığını anlamanın en hızlı yolu curl komutudur. Tek satırda proxy'ye bağlanır, kimlik doğrular ve hedefe gider; -v ile aradaki her adımı görürsünüz. Bu rehber curl'ü sınama aracı olarak kullanmayı, çıktıyı okumayı ve hataları ayırt etmeyi anlatır.
Örneklerde PROXY_HOST, PROXY_PORT, KULLANICI ve PAROLA yer tutucudur; IPv6 örnekleri 2001:db8::/32 belgelendirme aralığındandır. Komutlar Linux ve macOS kabuklarında olduğu gibi, Windows'ta curl.exe ile çalışır (ayrıntı aşağıda).
Temel kullanım
curl -x http://PROXY_HOST:PROXY_PORT \
--proxy-user KULLANICI:PAROLA \
https://api64.ipify.org-x (--proxy) proxy adresini verir, --proxy-user (-U) kimlik bilgisini. api64.ipify.org, bağlandığınız adresi düz metin olarak yansıtan ve hem IPv4 hem IPv6 ile erişilebilen bir hizmettir. Proxy çalışıyorsa yazdığı adres sizin ev ya da ofis adresiniz değil, proxy'nin çıkış adresidir. Beklenen örnek çıktı:
2001:db8:abcd:12::5Bu adres belgelendirme aralığından uydurma bir örnektir. IPv6 görüyorsanız trafik IPv6 çıkışından gidiyor demektir; IPv4 adresi görüyorsanız çıkış çift yığınlıdır ya da istek proxy'den geçmemiştir. Karşılaştırmak için -x olmadan aynı komutu çalıştırın. Tarayıcıdan sınamak isterseniz proxy kontrol aracı aynı işi görsel olarak yapar.
Parola ve kabuk uyarıları
Parola özel karakter içeriyorsa kabuk tırnaklaması önemlidir.
# Linux/macOS: tek tırnak kabuğun yorumlamasını engeller
curl -x http://PROXY_HOST:PROXY_PORT -U 'KULLANICI:p@ss!word' \
https://api64.ipify.orgWindows komut isteminde (cmd) yalnızca çift tırnak çalışır; PowerShell'de tek tırnak kullanabilirsiniz. Parolayı adres içine (http://KULLANICI:PAROLA@...) yazarsanız @, :, /, # gibi karakterleri yüzde kodlamasıyla yazmanız gerekir; --proxy-user ile bu derdiniz olmaz.
Komut satırındaki parola kabuk geçmişine ve süreç listesine düşer. Paylaşılan makinelerde parolayı -K (--config) ile verdiğiniz bir yapılandırma dosyasına koyun ve dosya iznini kısıtlayın.
PowerShell'de curl.exe uyarısı
Windows PowerShell 5.1'de curl, Invoke-WebRequest komutunun takma adıdır. -x ya da -U verdiğinizde "parametre bulunamadı" benzeri bir hata alırsınız; çünkü bu cURL değildir. Gerçek cURL'ü .exe uzantısıyla çağırın:
curl.exe -x http://PROXY_HOST:PROXY_PORT -U KULLANICI:PAROLA https://api64.ipify.orgHangi komutun çalıştığını Get-Command curl ile görebilirsiniz. Windows 10 ve sonrasında curl.exe işletim sistemiyle gelir. Yeni PowerShell sürümlerinde bu takma ad bulunmayabilir, yine de curl.exe yazmak her sürümde belirsizliği ortadan kaldırır.
Proxy türleri ve şemalar
| Şema | Anlamı |
|---|---|
http:// | HTTP proxy; proxy'ye düz bağlanılır |
https:// | HTTPS proxy; proxy'ye TLS ile bağlanılır |
socks5:// | SOCKS5; alan adı istemcide çözülür |
socks5h:// | SOCKS5; alan adı proxy'de çözülür |
SOCKS5 örneği (--socks5-hostname kısa yoludur ve socks5h ile aynı davranışı verir):
curl -x socks5h://KULLANICI:PAROLA@PROXY_HOST:PROXY_PORT \
https://api64.ipify.orgSOCKS5 RFC 1928 (yeni sekmede açılır) ile tanımlıdır; kullanıcı adı ve parola RFC 1929 (yeni sekmede açılır) ile gönderilir ve ağda düz metin gider. socks5h ile alan adını proxy çözer; çıkış ağında yalnızca proxy'nin görebildiği adresler ya da AAAA kaydı çözümü gerekiyorsa bu fark önemlidir. Sürekli bir SOCKS5 sınaması için SOCKS5 kontrol aracı da vardır.
Her proxy ürünü SOCKS5 sunmaz. IPv6 Proxy paket özelliklerinde protokol HTTP(S) olarak geçer; SOCKS5 gerekiyorsa sipariş öncesi destekten teyit alın.
-v ile CONNECT'i gözlemleme
HTTPS hedefe giderken curl önce proxy'ye CONNECT isteği yollar (RFC 9110 §9.3.6 (yeni sekmede açılır)). -v bunu gösterir:
curl -v -x http://PROXY_HOST:PROXY_PORT -U KULLANICI:PAROLA \
https://example.com -o /dev/nullWindows'ta -o /dev/null yerine -o NUL yazın. Örnek çıktının önemli satırları (kısaltılmıştır):
* Connected to PROXY_HOST (192.0.2.10) port PROXY_PORT
* CONNECT tunnel: HTTP/1.1 negotiated
> CONNECT example.com:443 HTTP/1.1
> Host: example.com:443
> Proxy-Authorization: Basic [kısaltıldı]
< HTTP/1.1 200 Connection established
* CONNECT phase completed
* TLS handshake ...
> GET / HTTP/2
< HTTP/2 200Okuma sırası şöyledir: önce proxy'ye TCP bağlantısı, sonra CONNECT isteği, sonra proxy'nin yanıtı. 200 yanıtından sonra tünel açılmıştır ve TLS tünelin içinde kurulur. CONNECT satırı bile görünmüyorsa sorun proxy'ye bağlanma aşamasındadır. 407 ya da 502 görüyorsanız aşağıdaki tabloya bakın.
HTTP hedefte (http://) curl CONNECT kullanmaz, isteği doğrudan proxy'ye iletir. Tüneli zorlamak için -p (--proxytunnel) ekleyin.
Yanıt başlıklarını görmek için -I kullanın:
curl -I -x http://PROXY_HOST:PROXY_PORT -U KULLANICI:PAROLA https://example.comZaman aşımları
Takılan bir test sonsuza dek bekleyebilir. İki sınır koyun:
curl --connect-timeout 5 --max-time 20 \
-x http://PROXY_HOST:PROXY_PORT -U KULLANICI:PAROLA \
https://api64.ipify.org--connect-timeout bağlantı kurma süresini, --max-time işlemin toplam süresini sınırlar. Zaman aşımı olduğunda curl 28 koduyla çıkar. Kısa bir --connect-timeout erişilemeyen proxy hatasını hemen görünür kılar.
IPv6 adresli proxy
Proxy'nin kendisi IPv6 adresindeyse adres URL içinde köşeli parantezle yazılır (RFC 3986 §3.2.2 (yeni sekmede açılır)):
curl -x "http://[2001:db8::1]:8080" -U KULLANICI:PAROLA \
https://api64.ipify.orgKöşeli parantez olmadan 2001:db8::1:8080 yazarsanız adres ile port ayrılamaz. Hedef adres IPv6 literal ise (http://[2001:db8::2]/) curl köşeli parantezi "sıralama aralığı" sanıp yorumlamaya çalışabilir; bunu -g (--globoff) ile kapatın:
curl -g -x "http://PROXY_HOST:PROXY_PORT" "http://[2001:db8::2]/"-g yalnızca hedef URL için gerekir. Belirli bir IP sürümünü zorlamak isterseniz -6 ya da -4 ekleyin; ancak bunlar curl ile proxy arasındaki bağlantıyı etkiler, proxy'nin hedefe çıkış sürümünü değiştirmez. Adres yazımı konusunda IPv6 adres türleri yazısı faydalı olabilir.
407, 502 ve zaman aşımı nasıl ayırt edilir
| Belirti | Anlamı | Ne yapılmalı |
|---|---|---|
407 Proxy Authentication Required | Kimlik bilgisi eksik ya da yanlış | Kullanıcı adı ve parolayı, kabuk tırnaklamasını kontrol edin |
502 Bad Gateway | Proxy'ye ulaşıldı ama proxy hedefe bağlanamadı | Hedefi proxy dışında deneyin; hedef yalnızca IPv4 olabilir |
curl: (7) bağlantı reddedildi | Adres/port yanlış ya da servis kapalı | Host ve portu panel bilgisiyle karşılaştırın |
curl: (28) zaman aşımı | Ağ yolu kapalı ya da yanıt gelmiyor | -v ile hangi adımda takıldığına bakın |
curl: (5) proxy çözülemedi | Proxy alan adı DNS'te yok | Adı ya da DNS'i kontrol edin |
curl: (35) TLS hatası | Şema uyuşmazlığı (HTTPS proxy'ye http://) | Şemayı ve portu doğrulayın |
407 ve 502 durumunda curl çoğunlukla "CONNECT tunnel failed, response 407" benzeri bir iletiyle çıkar. Hata kodları sürüme göre küçük farklar gösterebilir; ileti metni kodu tek başına okumaktan güvenilirdir.
Hedefin yalnızca IPv4 adresi varsa (AAAA kaydı yoksa) yalnızca IPv6 çıkışlı bir proxy ona doğrudan ulaşamaz ve sonuç genellikle 502 ya da bağlantı hatası olur. Çıkış ağında NAT64/DNS64 çevirisi gerekir. IPv6 Proxy için bu katmanın kapsamı doğrulanmamıştır; hedefinizde önceden test edin.
HTTPS proxy, HTTP/2 ve riskler
-x https://... proxy ile aranızdaki bağlantıyı da TLS'e sarar. Bu, kimlik bilgisinin ağda görünmemesi açısından avantajdır; ancak her proxy HTTPS proxy bağlantısı sunmaz. Ürünün sunduğu bağlantı türünü panelden doğrulayın, varsaymayın.
--proxy-cacertproxy sertifikasını kendi CA dosyanızla doğrulamanızı sağlar.--proxy-insecureproxy sertifikasının doğrulamasını kapatır; ortadaki biri proxy'yi taklit edebilir. Yalnızca kendi test ortamınızda kullanın.--insecure(-k) ise hedef sitenin sertifikasını kapatır; bir proxy testini başarılı göstermek için bunu kullanmayın, gerçek bir TLS sorununu gizler.- HTTP/2, hedefle tünel içinde pazarlanır. Sorunun HTTP/2'den gelip gelmediğini anlamak için
--http1.1ekleyip farkı karşılaştırın.
Sonuçları programdan almak için Python ile proxy kullanımı ve Node.js ile proxy kullanımı yazılarına, paket ayrıntıları için IPv6 Proxy ürün sayfasına bakabilirsiniz.
Hızlı kontrol listesi
- Önce
curl -x ... https://api64.ipify.orgile çıkış adresine bakın. - Sorun varsa
-vekleyin veCONNECTsatırının yanıtını okuyun. - Her komuta
--connect-timeoutve--max-timekoyun. - Windows PowerShell'de
curl.exeyazın. - IPv6 proxy adresini köşeli parantezle, IPv6 hedef URL'sini
-gile kullanın.
Sık sorulan sorular
curl ile proxy nasıl belirtilir?
Proxy, -x (--proxy) seçeneğiyle belirtilir: curl -x http://PROXY_HOST:PROXY_PORT https://api64.ipify.org. Kimlik doğrulama gerekiyorsa --proxy-user KULLANICI:PAROLA ekleyin.
socks5 ile socks5h arasındaki fark nedir?
Şema olarak socks5h:// yazılırsa alan adı çözümü proxy tarafında yapılır, socks5:// yazılırsa curl bunu kendi makinesinde yapar. Çıkış adresi başka bir ağdaysa genellikle socks5h istenir.
Windows PowerShell'de curl komutu neden başka sonuç veriyor?
Windows PowerShell 5.1'de curl, Invoke-WebRequest komutunun takma adıdır ve seçenekleri farklıdır. Gerçek cURL için curl.exe yazın.
407 ile 502 hatası ne anlama gelir?
Durum kodu 407, proxy'nin kimlik doğrulaması istediğini ya da gönderdiğiniz bilgiyi reddettiğini gösterir. 502 ise proxy'nin kendisine ulaştığınızı ama proxy'nin hedefe bağlanamadığını gösterir.
--proxy-insecure ne yapar ve güvenli mi?
HTTPS proxy kullanırken proxy'nin sertifikasını doğrulamayı kapatır. Ortadaki biri proxy'yi taklit edebileceğinden yalnızca kendi kontrolünüzdeki test ortamlarında kullanılmalıdır.
/112İlgili sayfalar
- RehberPython ile Proxy Kullanımı: requests ve httpxPython'da requests ve httpx ile proxy kullanımı: kimlik doğrulama, özel karakterli parola, oturum, zaman aşımı, SOCKS5…
- RehberNode.js ile Proxy Kullanımı: undici ve fetchNode.js 20 ve 22'de fetch, undici ProxyAgent, https modülü ile CONNECT ve socks-proxy-agent kullanımı; kimlik…
- AraçProxy KontrolHTTP, HTTPS ve SOCKS5 proxy bağlantısını sınar
- AraçHTTP Proxy KontrolHTTP/HTTPS proxy yanıtını ve gecikmesini ölçer
/128Ürün
IPv6 Proxy ürününü inceleyin
Adet bazlı fiyatlanan IPv6 proxy paketleri. Satışı Sağlam Proxy (saglamproxy.com) üzerinden yapılır.