Hata Giderme

Proxy kimlik doğrulama yöntemleri: kullanıcı adı/parola ve IP izni

Proxy'ler erişimi iki temel yolla kısıtlar: kullanıcı adı/parola ve kaynak IP izni. Hangisinin ne zaman uygun olduğunu, 407 hatasını ve doğru bağlantı biçimini örneklerle gösteriyoruz.

Kategori
Hata Giderme
Okuma süresi
8 dk okuma
Yayın:

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öntemNasıl doğrularArtısıDikkat edilecek nokta
Kullanıcı adı + parolaHer bağlantıda kimlik bilgisi gönderilirIP'si değişen istemcilerde de çalışırDüz HTTP proxy bağlantısında bilgi ağda okunabilir
IP beyaz listesiKaynak 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 yokKurulum yokHerkes 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.

HTTP
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
Proxy-Authorization: Basic S1VMTEFOSUNJOlBBUk9MQQ==

HTTP/1.1 200 Connection established
Basic doğrulamalı bir CONNECT isteği ve proxy yanıtı

401 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: 0xFF yanı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. 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. 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. 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

Bash
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/
cURL ile HTTP proxy ve SOCKS5, kullanıcı adı/parola ile

Üçü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.

Python
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)
requests ile kimlik bilgisi içeren proxy; SOCKS5 için PySocks gerekir

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

BelirtiMuhtemel nedenNe yapmalı
407 Proxy Authentication RequiredKimlik bilgisi gönderilmedi ya da yanlışKullanıcı adı/parolayı ve özel karakterlerin kodlamasını kontrol edin
Parola doğru, yine 407Sunucu 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 0xFFSunucu doğrulama istiyor, istemci önermiyorİstemcide kullanıcı adı/parola tanımlayın
Dün çalışıyordu, bugün reddediliyorIP izninde çıkış adresiniz değiştiYeni 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

Bu yazıda kullanılan araçlar

Sık sorulan sorular

İlgili rehberler