Bir proxy'nin çalışıp çalışmadığını anlamak için önce "çalışmak" ile neyi kastettiğinizi ayırmanız gerekir. Proxy'ye TCP bağlantısı kurulabilir ama kimlik doğrulama başarısız olabilir; kimlik doğrulama geçse de hedef siteye tünel açılmayabilir; tünel açılsa da yanıt dakikalar sürebilir. Her durumda ekranda aynı şeyi görürsünüz: sayfa yüklenmiyor.
Aşağıda önce belirtiyi, sonra o belirtiyi üreten katmanı buluyorsunuz. Böylece "proxy bozuk" demeden önce sorunun proxy'de mi, sizin yapılandırmanızda mı, hedef sitede mi olduğunu ayırabilirsiniz.
Belirtiye göre karar tablosu
| Belirti | Olası katman | Bir sonraki adım |
|---|---|---|
| Hemen "bağlantı reddedildi" | Port kapalı ya da yanlış | Portu ve IP'yi sağlayıcı panelinden yeniden kontrol edin |
| Uzun süre bekleyip zaman aşımı | Paketler düşüyor: proxy kapalı veya güvenlik duvarı | Başka bir ağdan deneyin, port kontrolü yapın |
| Bağlantı kurulup hemen kopuyor | Protokol uyuşmazlığı | HTTP yerine SOCKS5 (ya da tersi) deneyin |
| HTTP 407 | Kimlik doğrulama | Kullanıcı adı, parola ve IP izin listesini kontrol edin |
| HTTP siteler açılıyor, HTTPS açılmıyor | CONNECT yöntemi kısıtlı | Proxy sağlayıcısına CONNECT/443 iznini sorun |
| 502 / 504 | Proxy hedefe ulaşamıyor | Başka bir hedefle deneyin; sorun hedefte olabilir |
| Çalışıyor ama IP değişmiyor | Proxy kullanılmıyor veya saydam | Çıkış IP'sini proxy'siz IP ile karşılaştırın |
Birinci sınama: proxy yanıt veriyor mu?
Önce en ucuz soruyu sorun: proxy'ye TCP bağlantısı kurulabiliyor mu? Bu aşamada protokol ya da kimlik bilgisi önemli değildir. Bağlantı süresi de burada ölçülür: kısa ve tutarlı bir süre, ağ yolunun sağlam olduğuna işaret eder; ama proxy'nin işe yarar olduğunu kanıtlamaz.
nc -vz -w 5 proxy.example.com 8080Windows'ta aynı işi PowerShell ile yaparsınız. Başarısızsa sorun proxy yapılandırmasından önce ağ erişimindedir.
Test-NetConnection -ComputerName proxy.example.com -Port 8080İkinci sınama: doğru protokolü konuşuyor musunuz?
Port açık ama istek anlamsız yanıt veriyorsa büyük olasılıkla yanlış protokolü kullanıyorsunuzdur. Aynı IP:port'a üç farklı komutla deneyin; yalnızca doğru olan çalışır.
curl -sS -o /dev/null -m 15 -x http://proxy.example.com:8080 -w '%{http_code}\n' http://example.com/
curl -sS -o /dev/null -m 15 --proxy https://proxy.example.com:8080 -w '%{http_code}\n' https://example.com/
curl -sS -o /dev/null -m 15 --socks5-hostname proxy.example.com:8080 -w '%{http_code}\n' https://example.com/Hedef düz HTTP: istemci isteği proxy’ye tam URL ile (absolute-form) gönderir, proxy hedefe bağlanıp iletir.
- 1. İstemci → Proxy: İstek proxy’ye tam URL ile gider
- 2. Proxy → İstemci: Proxy kimlik doğrulaması isteyebilir (isteğe bağlı)
- 3. İstemci → Proxy: İstek kimlik bilgisiyle yinelenir (isteğe bağlı)
- 4. Proxy → Hedef: Proxy hedefe bağlanır ve isteği iletir
- 5. Hedef → Proxy: Hedef yanıt verir
- 6. Proxy → İstemci: Proxy yanıtı istemciye iletir
Düz bağlantı
İstek proxy’ye tam URL ile gider
- İstek satırı
- GET http://example.com/yol HTTP/1.1
- Host
- example.com
- Biçim
- absolute-form (tam URL)
Proxy hedefi bu URL’den okur; istemci hedefe doğrudan bağlanmaz.
Proxy düz HTTP trafiğini okuyabilir ve değiştirebilir.
Üçüncü sınama: kimlik doğrulama
HTTP proxy kimlik bilgisini reddettiğinde 407 Proxy Authentication Required döner. SOCKS5'te aynı durum, kullanıcı adı/parola aşamasında sıfır dışı bir durum koduyla ya da kabul edilebilir yöntem bulunmamasıyla anlaşılır. İki durumda da önce kimlik bilgisini panelden yeniden kopyalayın: sondaki boşluk ve @, : gibi özel karakterler sık görülen tuzaklardır. Özel karakterli parolayı URL içinde yazıyorsanız yüzde-kodlama gerekir; cURL'de --proxy-user kullanmak bu sorunu ortadan kaldırır.
Sağlayıcınız IP izin listesi (whitelist) ile çalışıyorsa kimlik bilgisi sormaz; bu durumda başka bir ağdan (ör. mobil veri) yapılan deneme, izinli IP'niz dışında olduğu için reddedilir. Bu bir arıza değil, beklenen davranıştır.
Dördüncü sınama: gerçekten proxy üzerinden mi çıkıyorsunuz?
En sık yanılgılardan biri, uygulamanın proxy ayarını sessizce yok saymasıdır. Bu durumda "çalışıyor" gibi görünür ama trafik doğrudan çıkıyordur. Proxy ile ve proxy olmadan IP Adresim aracını açıp iki IP'yi karşılaştırın. Aynıysa trafik proxy'den geçmiyordur.
import requests
PROXY = "http://KULLANICI:[email protected]:8080"
HEDEF = "https://example.com/"
dogrudan = requests.get(HEDEF, timeout=15)
proxyli = requests.get(HEDEF, proxies={"http": PROXY, "https": PROXY}, timeout=(10, 20))
print("dogrudan:", dogrudan.status_code)
print("proxy ile:", proxyli.status_code)
# IP karsilastirmasi icin HEDEF'i, istemci IP'sini donduren
# kendi kontrol ettiginiz bir adrese cevirin.Denetleyici bu sorunun neresini cevaplar?
Proxy denetleyicisi yukarıdaki dört sınamayı sizin yerinize sırayla çalıştırır ve her aşamanın durumunu ayrı gösterir: bağlantı, protokol, kimlik doğrulama, sınama adresinden ilk bayt. Hangi aşamada durduysa sorunun katmanı odur. Farklı bir ağdan ölçtüğü için, "benim güvenlik duvarım mı engelliyor" sorusunu da ayırmanıza yardım eder.
- Başarılı sonuç: proxy o an, o sınama adresi için çalışıyor demektir.
- Sonuç hedef sitenizin proxy'yi kabul edeceğini göstermez.
- Hız değil, yanıt verebilirliği ölçer; bant genişliği için hız testi rehberine bakın.
- Herkese açık olmayan (özel/iç ağ) adreslere bağlanmaz.
Hangi aşamada takıldığınızı görmek için proxy'nizi denetleyicide çalıştırın.
Proxy Kontrol Et