Proxy kimlik doğrulama, sunucunun "bu bağlantıyı kim yapıyor?" sorusuna verdiği yanıttır. Pratikte iki yöntemle karşılaşırsınız: istemcinin her bağlantıda kullanıcı adı ve parola göndermesi ya da sunucunun yalnızca önceden kaydedilmiş kaynak IP adreslerinden gelen bağlantıları kabul etmesi (IP beyaz listesi). Üçüncü bir durum, hiç doğrulama yapılmayan açık proxy'lerdir; bunlar hizmet değil, genellikle yapılandırma hatasıdır.
Bu rehber her yöntemin protokol düzeyinde nasıl çalıştığını, hangi hata kodunun neyi anlattığını ve cURL, Python ile tarayıcıda nasıl yapılandırılacağını anlatıyor.
Yöntemlere kısa bakış
| Yöntem | Nasıl doğrular | Artısı | Dikkat edilecek nokta |
|---|---|---|---|
| Kullanıcı adı + parola | Her bağlantıda kimlik bilgisi gönderilir | IP'si değişen istemcilerde de çalışır | Düz HTTP proxy bağlantısında bilgi ağda okunabilir |
| IP beyaz listesi | Kaynak IP önceden kayıtlıdır | İstemci tarafında parola gerekmez | İstemci IP'si değişirse bağlantı reddedilir; NAT arkasındaki herkes izinli sayılır |
| Hiçbiri (açık proxy) | Doğrulama yok | Kurulum yok | Herkes kullanabilir; kötüye kullanım ve güvenlik riski |
Kullanıcı adı ve parola: HTTP proxy
HTTP proxy kimlik bilgisi yoksa isteği 407 Proxy Authentication Required ile reddeder ve yanıtın Proxy-Authenticate başlığında hangi şemayı beklediğini bildirir. En yaygın şema Basic'tir: istemci kullanıcı:parola çiftini Base64 ile kodlayıp Proxy-Authorization başlığına koyar.
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
Proxy-Authorization: Basic S1VMTEFOSUNJOlBBUk9MQQ==
HTTP/1.1 200 Connection established401 ile karıştırmayın: 401 Unauthorized hedef sunucudan, 407 ise aradaki proxy'den gelir. Uygulamanız 407 görüyorsa kimlik bilgisini hedefe değil proxy'ye vermeniz gerekir.
Kullanıcı adı ve parola: SOCKS5
SOCKS5'te doğrulama HTTP başlığıyla değil, el sıkışmanın başında yapılır. İstemci desteklediği yöntemleri bildirir (0x00 doğrulama yok, 0x02 kullanıcı adı/parola); sunucu birini seçer, hiçbirini kabul etmiyorsa 0xFF döner. 0x02 seçilirse RFC 1929 alt müzakeresi başlar: istemci VER=1, ULEN, UNAME, PLEN, PASSWD gönderir, sunucu VER=1, STATUS ile yanıt verir ve STATUS=0 başarıdır.
- Yanlış kullanıcı adı ya da parola: alt müzakerede sıfırdan farklı STATUS ve bağlantı kapanır.
- İstemci yalnızca
0x00önerdi ama sunucu doğrulama istiyor:0xFFyanıtı, yani "kabul edilebilir yöntem yok". - SOCKS4'te kullanıcı adı/parola yoktur; USERID alanı yalnızca bir tanımlayıcıdır.
IP beyaz listesi nasıl çalışır?
IP izninde sunucu, bağlantının geldiği kaynak adrese bakar. Adres listede ise istemci hiçbir kimlik bilgisi göndermeden bağlanır; listede değilse sunucu bağlantıyı reddeder (çoğunlukla bağlantıyı doğrudan kapatır ya da 403 döndürür; kesin davranış sunucuya göre değişir). Bu yöntemde kimlik doğrulayan şey sizin ağ adresinizdir.
- 1
Gerçek çıkış IP'nizi öğrenin
Bağlantıyı yapan makinenin internete çıkarken kullandığı genel adres gerekir. IP Adresim aracı sunucunun gördüğü adresi gösterir; ev ya da ofis ağındaki özel adres (192.168.x.x) işe yaramaz.
- 2
Adresi izin listesine ekleyin
Hizmet sağlayıcının panelinde ya da sunucu yapılandırmasında bu adresi kaydedin. IPv4 ve IPv6 ayrı adreslerdir; makineniz ikisini de kullanıyorsa doğru olanı eklediğinizden emin olun.
- 3
Parolasız bağlanın
İstemcide kullanıcı adı ve parola vermeden proxy adresini ve portunu yazın. Başarısızsa 1. adımdaki adresin değişmediğini kontrol edin.
Komut satırı ve kod örnekleri
curl -x http://proxy.example.com:8080 --proxy-user KULLANICI:PAROLA https://example.com/
curl -x socks5h://KULLANICI:[email protected]:1080 https://example.com/
curl -x http://proxy.example.com:8080 https://example.com/Üçüncü komut IP izninde kullanılan biçimdir: kimlik bilgisi yoktur. Parolada @, :, / ya da # gibi karakterler varsa adres biçiminde yüzde kodlaması gerekir (@ yerine %40); --proxy-user seçeneği bu sorunu ortadan kaldırır.
import requests
from urllib.parse import quote
user = quote("KULLANICI", safe="")
password = quote("PAROLA", safe="")
http_proxy = f"http://{user}:{password}@proxy.example.com:8080"
proxies = {"http": http_proxy, "https": http_proxy}
r = requests.get("https://example.com/", proxies=proxies, timeout=15)
print(r.status_code)
# SOCKS5 (pip install "requests[socks]"): socks5h ile ad çözümlemesi proxy'de yapılır
socks = f"socks5h://{user}:{password}@proxy.example.com:1080"
r = requests.get("https://example.com/", proxies={"http": socks, "https": socks}, timeout=15)
print(r.status_code)socks5 ile socks5h arasındaki fark ad çözümlemesindedir: socks5 adı yerelde çözer, socks5h hedef adı proxy'ye bırakır. Ayrıntı için HTTP ve SOCKS5 farkı rehberine bakın.
Tarayıcıda ve sistemde kimlik bilgisi
Chrome ve Edge, proxy ayarını işletim sisteminden alır; Firefox kendi ayarını kullanabilir. Tarayıcılar proxy adresine gömülü kullanıcı adı/parolayı (http://KULLANICI:PAROLA@...) kabul etmez; proxy 407 verdiğinde bir kimlik doğrulama penceresi açar ve girdiğiniz bilgiyi oturum boyunca hatırlar. Parola istemeden çalışmasını istiyorsanız IP izni yöntemini kullanın ya da bir uzantı/otomasyon aracı kullanın. Adım adım ayarlar için proxy nasıl ayarlanır rehberine bakın.
Hata kodları ve çözümleri
| Belirti | Muhtemel neden | Ne yapmalı |
|---|---|---|
| 407 Proxy Authentication Required | Kimlik bilgisi gönderilmedi ya da yanlış | Kullanıcı adı/parolayı ve özel karakterlerin kodlamasını kontrol edin |
| Parola doğru, yine 407 | Sunucu Basic dışında bir şema istiyor (Proxy-Authenticate başlığına bakın) | cURL'de --proxy-anyauth; kullandığınız kütüphanenin şemayı desteklediğinden emin olun |
| Bağlantı hemen kapanıyor (ECONNRESET) | IP izninde adresiniz listede değil ya da yanlış protokol konuşuluyor | Çıkış IP'nizi kontrol edin; HTTP proxy'ye SOCKS5 gönderilmediğinden emin olun |
| SOCKS5: yöntem 0xFF | Sunucu doğrulama istiyor, istemci önermiyor | İstemcide kullanıcı adı/parola tanımlayın |
| Dün çalışıyordu, bugün reddediliyor | IP izninde çıkış adresiniz değişti | Yeni IP'yi izin listesine ekleyin |
Çıkış hatalarını daha geniş bir sınıflandırma içinde görmek için proxy bağlantı hataları rehberine bakabilirsiniz. Kimlik bilgilerini proxy kontrol aracı ile denerken parolanın sunucumuzda saklanmadığını ve günlüklere yazılmadığını bilin; yine de gerçek bir hesabın parolasını denemeden önce kendi ortamınızda cURL ile sınamak daha güvenlidir.
Kimlik bilgilerinizin çalışıp çalışmadığını bir kontrolle doğrulayın.
Proxy Kontrol Et