Kimlik doğrulaması olmayan bir proxy herkese açık bir geçittir: adresi bilen herkes üzerinden trafik gönderebilir. Bu yüzden ticari proxy hizmetleri bağlantıyı iki yöntemden biriyle kısıtlar: kullanıcı adı ve şifre ya da kaynak IP yetkilendirmesi. Hangisinin sunulduğu ürüne göre değişir; seçim ise yazdığınız istemcinin ve çalıştığı ağın özelliklerine bağlıdır.
Kullanıcı adı ve şifre ile doğrulama
İstemci, her bağlantıda proxy’ye kim olduğunu söyler. Protokole göre mekanizma farklıdır.
HTTP/HTTPS proxy’lerde doğrulama Proxy-Authorization başlığıyla yapılır. En yaygın şema Basic olup değer, kullanici:sifre çiftinin Base64 kodlanmış halidir. HTTPS hedefler için istemci önce CONNECT hedef:443 isteğini gönderir ve başlık bu istekte yer alır. Kimlik bilgisi eksik ya da hatalıysa proxy 407 Proxy Authentication Required yanıtı döndürür.
SOCKS5’te doğrulama bağlantının başında, RFC 1928’deki yöntem pazarlığı sırasında yapılır. İstemci desteklediği yöntemleri listeler; sunucu birini seçer. 0x00 doğrulamasız, 0x02 kullanıcı adı/şifre anlamına gelir ve ikincisinin ayrıntıları RFC 1929’da tanımlıdır. Sunucu hiçbir yöntemi kabul etmezse 0xFF ile bağlantıyı reddeder.
IP yetkilendirme (whitelist)
IP yetkilendirmesinde istemci hiçbir kimlik bilgisi göndermez. Proxy, bağlantının geldiği kaynak IP adresine bakar; adres önceden onaylı listedeyse bağlantıyı kabul eder. Kod tarafında şifre yönetimi gerekmez ve kimlik bilgisini kabul etmeyen eski araçlar da bu şekilde kullanılabilir.
Karşılığında iki sınırlama vardır. Birincisi, kaynak IP’niz değişirse (dinamik IP, farklı ofis, mobil bağlantı) erişim kesilir ve listeyi güncellemeniz gerekir. İkincisi, aynı NAT çıkışını paylaşan herkes aynı kaynak IP’yle görünür; yani yetki, tek bir uygulamaya değil o ağdaki herkese verilmiş olur. Sunucuda sabit IP’li çalışan bir iş yükü için uygun, sürekli yer değiştiren istemciler için sorunludur.
İki yöntemin karşılaştırması
| Ölçüt | Kullanıcı adı / şifre | IP yetkilendirme |
|---|---|---|
| İstemci ne gönderir? | Her bağlantıda kimlik bilgisi | Hiçbir şey; kaynak IP yeterli |
| Gezgin istemci | Sorunsuz | Kaynak IP değiştikçe liste güncellenmeli |
| Paylaşılan ağ (NAT) | Yetki uygulamaya bağlı | Aynı çıkıştaki herkes yetkili olur |
| Sızıntı riski | Kimlik bilgisi sızarsa her yerden kullanılır | Liste dışı IP’den kullanılamaz |
| Kod karmaşıklığı | Kimlik bilgisi saklama ve kodlama gerekir | İstemci tarafında ek iş yok |
Ürünlerde hangi yöntem sunuluyor?
Aşağıdaki bilgiler saglamproxy.com mağaza sayfalarındaki beyanlara dayanır; sipariş sayfasında ayrıca doğrulanmayan noktalar tabloda belirtilmiştir. Tam ayrıntı için ilgili ürün sayfasına ve sipariş sonrası panele bakın.
| Ürün | Kullanıcı adı / şifre | IP yetkilendirme |
|---|---|---|
| Datacenter Proxy | Evet | Mağaza beyanı: evet |
| Mobil Proxy | Evet | Mağaza beyanı: IP:Port / whitelist |
| Rotating Mobil Proxy | Evet | Yalnız yurt dışı paketlerde (IP:Port); Türkiye paketlerinde yok |
| ISP Proxy | Evet | Ürün sayfasında belirtilmiyor |
| Residential Proxy | Evet | Belirtilmiyor |
| IPv6 Proxy | Evet | Belirtilmiyor |
Kimlik bilgisini istemcide doğru taşımak
En sık yapılan hata, kimlik bilgisini proxy URL’sine yazarken özel karakterleri kodlamamaktır. Şifrede @, :, / veya # varsa URL ayrıştırıcı bunları ayraç sanır ve bağlantı 407 ya da anlamsız bir ayrıştırma hatasıyla düşer. Çözüm yüzde-kodlamadır (@ yerine %40). Ayrıca bilgiyi kaynak koda gömmek yerine ortam değişkeninden okumak daha güvenlidir.
import os
import requests
from urllib.parse import quote
kullanici = quote(os.environ["PROXY_USER"], safe="")
sifre = quote(os.environ["PROXY_PASS"], safe="")
proxy = f"http://{kullanici}:{sifre}@proxy.example.com:PORT"
yanit = requests.get(
"https://api.ipify.org",
proxies={"http": proxy, "https": proxy},
timeout=15,
)
print(yanit.status_code, yanit.text)curl -sS -x http://proxy.example.com:PORT \
-U "$PROXY_USER:$PROXY_PASS" \
https://api.ipify.orgHata teşhisi: 407 ve bağlantı reddi
- 407 Proxy Authentication Required: kimlik bilgisi eksik, yanlış ya da kodlanmamış özel karakter içeriyor. Kullanıcı adı ve şifreyi panelden yeniden kopyalayın.
- Bağlantı sıfırlanıyor veya reddediliyor (IP yetkilendirmede): kaynak IP’niz listede olmayabilir. Çıkış IP’nizi kontrol edip listeyi güncelleyin; IP sorgulama aracı bunun için kullanılabilir.
- SOCKS5’te “kimlik doğrulama başarısız”: istemci
0x02yöntemini önermiyor olabilir; kütüphanenin kullanıcı adı/şifre desteğini ve URL biçimini kontrol edin. - Protokol uyuşmazlığı: HTTP proxy portuna SOCKS5 istemcisiyle bağlanmak (veya tersi) doğrulama hatasına benzeyen cevaplar üretir. Doğru port ve protokol çiftini Proxy Kontrol aracıyla sınayın.
Özet
- Kullanıcı adı/şifre her bağlantıda kimlik gönderir; IP yetkilendirme kaynak adrese güvenir.
- HTTP’de
Proxy-Authorizationve407, SOCKS5’te RFC 1929 ve yöntem0x02işin özüdür. - Base64 ve düz TCP kimlik bilgisini korumaz; güvenilmeyen ağlarda dikkatli olun.
- Sabit IP’li sunucular için IP yetkilendirme, gezgin istemciler için kullanıcı adı/şifre daha uygundur.
- Kimlik bilgisini ortam değişkeninde tutun ve URL’ye yazarken özel karakterleri kodlayın.