SOCKS55 dk okuma

HTTP proxy ve SOCKS5 karşılaştırması: hangisi ne zaman yeterli?

Yalnızca web istekleri gönderiyorsanız HTTP proxy çoğu durumda yeterlidir; HTTP olmayan bir TCP protokolü ya da UDP taşımanız gerekiyorsa çoğu zaman SOCKS5 gerekir. Aradaki fark hız ya da güvenlik değil, proxy’nin trafiği hangi katmanda ve ne kadar anlayarak taşıdığıdır.

FİG. 01 — Tüm trafiği saran tünel ve seçili trafiği taşıyan aracı

İki protokol de istemci ile hedef arasına bir aracı koyar, ikisi de kendi başına şifreleme eklemez. HTTP proxy, HTTP’yi konuşan ve gerektiğinde istekleri yorumlayan bir aracıdır; SOCKS5 ise içeriğe bakmadan bağlantı kuran ve baytları aktaran genel amaçlı bir tüneldir. Seçim, uygulamanızın hangi protokolü konuştuğuna ve istemcinizin neyi desteklediğine göre yapılır.

HTTP proxy iki şekilde çalışır

Düz HTTP isteklerinde istemci, isteği tam adresle proxy’ye gönderir: GET http://example.com/sayfa HTTP/1.1. Proxy isteği okur, hedefe kendisi iletir ve yanıtı geri döndürür. Bu kipte proxy URL’yi, başlıkları ve gövdeyi görür; başlık ekleyebilir, çıkarabilir veya yanıtı önbelleğe alabilir.

HTTPS isteklerinde istemci önce bir tünel ister: CONNECT api.ipify.org:443 HTTP/1.1. Proxy 200 yanıtı verdikten sonra bağlantı, istemci ile hedef arasındaki TLS oturumunu taşıyan bir boruya dönüşür. Proxy yalnızca hedef ana makine adını ve portu bilir; TLS içeriğini okuyamaz. Yöntemin tanımı RFC 9110 §9.3.6 (yeni sekmede açılır) ve MDN CONNECT sayfasında (yeni sekmede açılır) yer alır.

CONNECT ile tünel açma
CONNECT api.ipify.org:443 HTTP/1.1
Host: api.ipify.org:443
Proxy-Authorization: Basic S1VMTEFOSUNJOlBBUk9MQQ==

HTTP/1.1 200 Connection Established

# Bu satırdan sonra bağlantı üzerinden TLS el sıkışması akar.

Proxy-Authorization başlığındaki değer KULLANICI:PAROLA metninin Base64 kodlamasıdır; Base64 bir şifreleme değildir. Kimlik bilgisi eksik ya da hatalıysa proxy 407 Proxy Authentication Required (yeni sekmede açılır) yanıtı döndürür.

Karşılaştırma tablosu

Her iki protokol de proxy ile istemci arasındaki hattı şifrelemez.
ÖlçütHTTP proxySOCKS5
Çalıştığı katmanUygulama katmanı; HTTP’yi anlarUygulama ile taşıma katmanı arası; içeriği yorumlamaz
Taşıyabildiği trafikHTTP; CONNECT ile tünellenen TCP (çoğunlukla HTTPS)Her türlü TCP; destekleniyorsa UDP
HTTPSCONNECT tüneli; proxy yalnızca host:port görürCONNECT komutu; proxy yalnızca hedef adres ve portu görür
UDPKlasik HTTP proxy’lerde yokUDP ASSOCIATE ile, sunucu destekliyorsa
Kimlik doğrulamaProxy-Authorization başlığı (çoğunlukla Basic), 407 yanıtıRFC 1929 kullanıcı adı/parola veya kimlik doğrulamasız (IP ile sınırlandırılmış)
DNS çözümüHedef adını proxy çözer; istemci ad gönderirİstemciye bağlı: socks5 yerelde, socks5h proxy’de çözer
Başlık müdahalesiDüz HTTP’de mümkün (Via, Forwarded, önbellek); CONNECT içinde mümkün değilYok; baytlar olduğu gibi aktarılır
Araç desteğiTarayıcılar, cURL, çoğu HTTP kütüphanesi yerleşik desteklerTarayıcılar ve cURL destekler; bazı kütüphanelerde ek paket gerekir
Tipik kullanımWeb istekleri, API çağrıları, tarayıcı trafiğiMasaüstü uygulamalar, SSH, HTTP dışı TCP, UDP gerektiren istemciler

Hangisi daha “güvenli”?

İkisi de değil. Güvenlik taşınan protokolden gelir: HTTPS isteği iki proxy türünde de uçtan uca TLS ile korunur. Düz HTTP ise iki türde de açık gider; HTTP proxy bu durumda isteği okuyabilir, SOCKS5 proxy de baytları görebilir. Proxy ile aranızdaki hattı korumak istiyorsanız TLS ile sarılmış bir proxy bağlantısı (HTTPS proxy) veya bir VPN gerekir; fark için VPN ve proxy rehberine bakın.

HTTP proxy ne zaman yeterlidir?

  • Tarayıcı trafiği, web sayfası ve API istekleri — yani istemcinin konuştuğu tek protokol HTTP veya HTTPS ise.
  • Kullandığınız kütüphane yalnızca HTTP proxy destekliyorsa; ek bağımlılık gerekmez.
  • Kurumsal ağlarda olduğu gibi isteklerin proxy’de kayıt altına alınması veya önbelleğe alınması isteniyorsa (yalnızca düz HTTP için geçerlidir).

Bir sınırlama: birçok HTTP proxy, CONNECT isteklerini yalnızca 443 gibi belirli portlara izin verecek şekilde yapılandırılır. Bu yüzden HTTP proxy üzerinden HTTPS dışında bir protokolü tünellemek teknik olarak mümkün olsa da her proxy’de çalışmaz.

SOCKS5 ne zaman gerekir?

  • HTTP olmayan TCP protokolleri: veritabanı istemcileri, e-posta protokolleri, SSH. OpenSSH’nin kendi SOCKS5 istemcisi yoktur; ProxyCommand ayarıyla bağlantıyı SOCKS5 konuşabilen yardımcı bir araca devreder.
  • UDP gerektiren uygulamalar: UDP kullanan bir uygulama, ancak istemci ve proxy UDP ASSOCIATE’i desteklediğinde proxy’den UDP gönderebilir. Desteklenmiyorsa yalnızca TCP kısmı proxy’den geçer, UDP doğrudan çıkabilir ya da hiç çalışmaz.
  • Oyun istemcileri: Proxy ayarı olan bazı oyun istemcileri SOCKS5 bekler. Oyun trafiğinin bir kısmı UDP olabilir; istemcinin proxy desteği ve oyunun kuralları önceden kontrol edilmelidir.
  • Torrent istemcileri: BitTorrent hem TCP hem UDP kullanabilir; SOCKS5 ayarı olan istemcilerde UDP desteği proxy’ye bağlıdır. Yalnızca dağıtım hakkı olan içerikler için kullanın.

HTTP üzerinden UDP taşımayı tanımlayan daha yeni bir standart da vardır (RFC 9298 (yeni sekmede açılır); HTTP/1.1, HTTP/2 ve HTTP/3 için tanımlıdır); ancak klasik HTTP proxy hizmetlerinde ve istemcilerde yaygın değildir. Pratikte “UDP gerekiyor” cümlesi, “SOCKS5 ve UDP desteği gerekiyor” anlamına gelir.

Aynı istek, iki protokol

Aşağıdaki iki komut aynı hedefe aynı kimlik bilgileriyle gider; yalnızca proxy şeması değişir. Yanıttaki IP adresi, proxy’nin çıkış adresidir.

cURL: HTTP proxy ve SOCKS5
# HTTP proxy (HTTPS için otomatik olarak CONNECT kullanılır)
curl --proxy "http://KULLANICI:PAROLA@PROXY_ADRESI:PORT" \
  "https://api.ipify.org?format=json"

# SOCKS5, alan adını proxy çözer
curl --proxy "socks5h://KULLANICI:PAROLA@PROXY_ADRESI:PORT" \
  "https://api.ipify.org?format=json"

Proxy’nin HTTP mi SOCKS5 mi konuştuğunu bilmiyorsanız yanlış şemayla bağlanmak tipik bir hatadır: bir SOCKS5 sunucusuna HTTP isteği gönderildiğinde bağlantı çoğu zaman anlamsız bir yanıtla ya da hemen kapanır. HTTP proxy kontrol ve SOCKS5 kontrol araçları her iki durumu ayrı ayrı sınar. SOCKS5’in bayt düzeyindeki ayrıntıları için SOCKS5 proxy nedir yazısına bakabilirsiniz.

Ortam değişkenleriyle yapılandırma

Birçok komut satırı aracı ve kütüphane, proxy ayarını kod yerine ortam değişkenlerinden okur. cURL; http_proxy (yalnızca küçük harfle), HTTPS_PROXY, ALL_PROXY ve NO_PROXY değişkenlerini tanır ve değişkenin değerindeki şemaya göre HTTP ya da SOCKS5 kullanır. Python requests de HTTP_PROXY, HTTPS_PROXY, ALL_PROXY ve NO_PROXY değişkenlerini okur; SOCKS5 şeması için requests[socks] paketinin kurulu olması gerekir. Değişken adlarının anlamı, hedefin şemasını belirtir: HTTPS_PROXY, “HTTPS hedeflere giderken kullanılacak proxy” demektir, proxy’nin kendisinin HTTPS olduğu anlamına gelmez.

Aynı kabuk oturumu, iki farklı protokol
# HTTPS hedefler için HTTP proxy
export HTTPS_PROXY="http://KULLANICI:PAROLA@PROXY_ADRESI:PORT"
curl "https://api.ipify.org?format=json"

# Tüm hedefler için SOCKS5 (DNS proxy tarafında)
unset HTTPS_PROXY
export ALL_PROXY="socks5h://KULLANICI:PAROLA@PROXY_ADRESI:PORT"
curl "https://api.ipify.org?format=json"

# Yerel adresleri proxy dışında tutun
export NO_PROXY="localhost,127.0.0.1"

Ortam değişkenleri kabuk geçmişine ve süreç listesine düşebilir; parolanızı paylaşılan sunucularda bu yolla tanımlarken dikkatli olun. Hangi değişkenlerin okunduğu araca göre değiştiği için kullandığınız aracın belgesine bakmak en güvenli yoldur (cURL kılavuzu (yeni sekmede açılır), requests belgeleri (yeni sekmede açılır)).

Yaygın yanlış anlamalar

  • “SOCKS5 trafiği gizler.” SOCKS5 içeriği yorumlamaz ama şifrelemez de; gizlilik, taşınan protokolün kendi şifrelemesine bağlıdır.
  • “HTTP proxy yalnızca HTTP sitelerinde çalışır.” CONNECT yöntemi sayesinde HTTPS sitelere de erişilir; proxy bu durumda yalnızca hedef adını ve portu görür.
  • “SOCKS5 her zaman UDP taşır.” UDP ASSOCIATE isteğe bağlıdır; hem sunucunun hem istemcinin desteklemesi gerekir.
  • “HTTPS_PROXY bir HTTPS proxy’dir.” Değişken adı hedefin şemasını anlatır; proxy’ye bağlantı, değerdeki şemaya göre kurulur.

Bu sitedeki paketlerde protokol seçimi

Protokol, ayrı bir ürün olarak satılmaz. Türkiye ISP paketlerinde ve haftalık/aylık Türkiye mobil paketlerinde sipariş sırasında HTTP veya SOCKS5 seçilir; günlük mobil paketlerde bu seçim bulunmaz. Ayrıntılar ISP Proxy ve HTTP & SOCKS5 Proxy sayfalarında.

Ne zaman, hangisi?

  1. Uygulamanız yalnızca HTTP/HTTPS konuşuyor ve istemciniz HTTP proxy destekliyorsa: HTTP proxy.
  2. Uygulama HTTP dışı bir TCP protokolü kullanıyorsa: SOCKS5 (CONNECT).
  3. UDP gerekiyorsa: SOCKS5, istemci ve proxy UDP ASSOCIATE’i destekliyorsa; aksi halde proxy bu ihtiyacı karşılamaz.
  4. Yerel DNS sorgusu oluşmasın istiyorsanız: HTTP proxy veya socks5h şeması.
  5. Proxy ile aranızdaki hattın da şifrelenmesi gerekiyorsa: ne düz HTTP proxy ne SOCKS5 tek başına yeterlidir.

Sık sorulanlar

Akılda kalan sorular

02Okumaya devam

Devamını okuyun

03Konuyla bağlantılı

Ürünler ve araçlar

Ürün sayfaları paketleri ve fiyatları gösterir; araçlar ise elinizdeki bir proxy’yi ya da adresi sınamanız içindir.

Ürünler

Araçlar

  • HTTP Proxy Kontrol

    HTTP proxy’nizin düz istekleri ve HTTPS tünelini (CONNECT) doğru taşıyıp taşımadığını ölçün.

  • SOCKS5 Kontrol

    SOCKS5 el sıkışmasını, kullanıcı adı / parola doğrulamasını ve çıkış adresini sınayın.