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.
İ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 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
| Ölçüt | HTTP proxy | SOCKS5 |
|---|---|---|
| Çalıştığı katman | Uygulama katmanı; HTTP’yi anlar | Uygulama ile taşıma katmanı arası; içeriği yorumlamaz |
| Taşıyabildiği trafik | HTTP; CONNECT ile tünellenen TCP (çoğunlukla HTTPS) | Her türlü TCP; destekleniyorsa UDP |
| HTTPS | CONNECT tüneli; proxy yalnızca host:port görür | CONNECT komutu; proxy yalnızca hedef adres ve portu görür |
| UDP | Klasik HTTP proxy’lerde yok | UDP ASSOCIATE ile, sunucu destekliyorsa |
| Kimlik doğrulama | Proxy-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üdahalesi | Düz HTTP’de mümkün (Via, Forwarded, önbellek); CONNECT içinde mümkün değil | Yok; baytlar olduğu gibi aktarılır |
| Araç desteği | Tarayıcılar, cURL, çoğu HTTP kütüphanesi yerleşik destekler | Tarayıcılar ve cURL destekler; bazı kütüphanelerde ek paket gerekir |
| Tipik kullanım | Web istekleri, API çağrıları, tarayıcı trafiği | Masaü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;
ProxyCommandayarı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.
# 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.
# 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?
- Uygulamanız yalnızca HTTP/HTTPS konuşuyor ve istemciniz HTTP proxy destekliyorsa: HTTP proxy.
- Uygulama HTTP dışı bir TCP protokolü kullanıyorsa: SOCKS5 (CONNECT).
- UDP gerekiyorsa: SOCKS5, istemci ve proxy UDP ASSOCIATE’i destekliyorsa; aksi halde proxy bu ihtiyacı karşılamaz.
- Yerel DNS sorgusu oluşmasın istiyorsanız: HTTP proxy veya
socks5hşeması. - Proxy ile aranızdaki hattın da şifrelenmesi gerekiyorsa: ne düz HTTP proxy ne SOCKS5 tek başına yeterlidir.
Sık sorulanlar