Sipariş: saglamproxy.com

Giriş Yap ↗

SOCKS5

SOCKS5 proxy nasıl çalışır: el sıkışma, kimlik doğrulama ve istek akışı

SOCKS5, uygulama protokolünden bağımsız çalışan, TCP bağlantılarını (ve isteğe bağlı UDP datagramlarını) bir ara sunucu üzerinden ileten bir proxy protokolüdür. Bu yazı bağlantının hangi adımlarla kurulduğunu RFC 1928 ve RFC 1929 çerçevesinde açıklar.

4 dk okuma

SOCKS5, bir istemci ile hedef sunucu arasına giren ve uygulama katmanı protokolünü yorumlamayan bir proxy protokolüdür. Proxy, taşıdığı verinin HTTP, SMTP, SSH ya da başka bir protokol olduğunu bilmek zorunda değildir; yalnızca istemcinin istediği hedefe bir bağlantı açar ve iki yön arasında baytları aktarır. Protokol RFC 1928 ile tanımlanır, kullanıcı adı ve şifre ile doğrulama ise RFC 1929 içinde ayrı bir alt müzakere olarak belirtilir.

Tasarımın temel fikri

Bir SOCKS5 oturumunda istemci önce proxy sunucusuna kendi TCP bağlantısını açar. Bu bağlantı üzerinden üç aşamalı bir konuşma yapılır: hangi doğrulama yönteminin kullanılacağı belirlenir, doğrulama tamamlanır, ardından istemci hedef adresi bildirir. Proxy hedefe bağlanabilirse başarı cevabı döner ve bu noktadan sonra proxy yalnızca iki soket arasında veri taşır.

Bu yapı, SOCKS5 proxy kullanan bir uygulamanın hedef sunucuya doğrudan bağlanmış gibi davranabilmesini sağlar. Hedef sunucunun gördüğü kaynak adres, istemcinin değil proxy çıkış noktasının adresidir.

Adım 1: Yöntem müzakeresi

İstemci, proxy bağlantısı kurulur kurulmaz bir selamlama mesajı gönderir. Mesaj sürüm numarasını (0x05), desteklenen yöntem sayısını ve yöntem kodlarının listesini içerir. Proxy bu listeden birini seçip cevap verir.

RFC 1928 yöntem kodlarından sık karşılaşılanlar
Yöntem koduAnlamı
0x00Kimlik doğrulama yok
0x01GSSAPI
0x02Kullanıcı adı ve şifre (RFC 1929)
0xFFKabul edilebilir yöntem yok; istemci bağlantıyı kapatmalıdır

Kullanıcı adı ve şifre isteyen bir proxy ile konuşan istemci tipik olarak 05 01 02 (sürüm 5, bir yöntem, yöntem 2) ya da 05 02 00 02 (iki yöntem: doğrulamasız ve kullanıcı adı/şifre) gönderir. Proxy 05 02 cevabını verirse bir sonraki adımda kullanıcı adı ve şifre beklenir.

Adım 2: Kullanıcı adı ve şifre doğrulaması

RFC 1929 alt müzakeresinde istemci alt-protokol sürümünü (0x01), kullanıcı adı uzunluğunu, kullanıcı adını, şifre uzunluğunu ve şifreyi gönderir. Proxy iki baytlık bir cevap döner: sürüm ve durum. Durum 0x00 ise doğrulama başarılıdır; sıfırdan farklı herhangi bir değer başarısızlıktır ve bağlantı kapatılmalıdır.

Adım 3: Bağlantı isteği

Doğrulama tamamlandığında istemci asıl isteği gönderir. İstek; sürüm, komut, ayrılmış bir bayt, adres türü, hedef adres ve hedef port alanlarından oluşur.

Komut
0x01 CONNECT (TCP bağlantısı), 0x02 BIND (gelen bağlantı bekleme), 0x03 UDP ASSOCIATE (UDP aktarımı). Günlük kullanımın büyük bölümü CONNECT komutudur.
Adres türü
0x01 IPv4 adresi, 0x03 alan adı, 0x04 IPv6 adresi. Alan adı türünde adres, uzunluk baytıyla başlayan bir metindir.
Hedef port
İki bayt, ağ bayt sırasıyla (big-endian).

Proxy hedefe bağlanmayı dener ve cevap mesajı gönderir. Cevabın ikinci alanı sonuç kodudur: 0x00 başarı, 0x01 genel hata, 0x02 kurallar gereği izin verilmedi, 0x03 ağa ulaşılamıyor, 0x04 ana makineye ulaşılamıyor, 0x05 bağlantı reddedildi, 0x06 TTL doldu, 0x07 komut desteklenmiyor, 0x08 adres türü desteklenmiyor. Başarılı cevaptan sonra aynı TCP bağlantısı doğrudan hedefe giden bir tünele dönüşür.

Alan adının nerede çözüleceği

Adres türü olarak alan adı (0x03) gönderildiğinde adı proxy sunucusu çözer. İstemci adı kendisi çözüp IPv4 ya da IPv6 adresini gönderirse DNS sorgusu istemcinin yerel çözümleyicisinden çıkar. Birçok istemcide bu ayrım şema adıyla belirlenir: socks5:// yerel çözümü, socks5h:// uzaktan çözümü ifade eder. Ayrıntılı anlatım için DNS sızıntısı ve socks5h yazısına bakın.

Uygulamada görünümü

Komut satırında bir SOCKS5 proxy üzerinden istek atmanın en kısa yolu curl kullanmaktır. Aşağıdaki örnek dokümantasyon amaçlı yer tutucular içerir; KULLANICI, SIFRE ve PORT değerlerini kendi bilgilerinizle değiştirin.

Bash
# Alan adı çözümü proxy üzerinde yapılır (socks5h)
curl --proxy socks5h://KULLANICI:SIFRE@proxy.example.com:PORT https://api.ipify.org
curl ile SOCKS5 üzerinden IP adresi sorgusu

Python tarafında requests kütüphanesi SOCKS desteği için ek bir bağımlılık ister (pip install "requests[socks]"). Bağlantı ayrıntıları proxies sözlüğüyle verilir.

Python
import requests

proxy = "socks5h://KULLANICI:[email protected]:PORT"
proxies = {"http": proxy, "https": proxy}

r = requests.get("https://api.ipify.org", proxies=proxies, timeout=15)
print(r.text)
requests ile SOCKS5 proxy kullanımı

SOCKS5 ne yapmaz

  • Trafiği kendi başına şifrelemez; şifreleme uygulama protokolüne aittir.
  • İstemcinin hedef sunucuya kendini tanıtan başlıklarını (örneğin HTTP User-Agent) değiştirmez; protokolü yorumlamaz.
  • Tek başına gizlilik ya da anonimlik garantisi değildir; hedefin gördüğü adres proxy çıkış adresi olur, bunun ötesindeki izler uygulama ve tarayıcı davranışına bağlıdır.
  • UDP aktarımı (UDP ASSOCIATE) hem protokolün hem de karşıdaki proxy hizmetinin desteğine bağlıdır; her SOCKS5 sunucusu bu komutu uygulamaz.

Özet

  • SOCKS5 uygulama protokolünden bağımsızdır; proxy yalnızca baytları taşır.
  • Oturum üç adımdır: yöntem müzakeresi, doğrulama, bağlantı isteği.
  • Kullanıcı adı ve şifre doğrulaması RFC 1929 ile yapılır ve şifre düz metin gider.
  • Adres türü alan adı olduğunda ad çözümü proxy tarafında yapılır; istemcilerde bu davranış socks5h ile seçilir.
  • Başarılı bir CONNECT cevabından sonra proxy iki yön arasında veri iletir.

01SIK SORULANLAR

Sık sorulan sorular

02İLGİLİ OKUMALAR

İlgili makaleler

03İLGİLİ ÜRÜNLER

Bu konuyla ilgili ürünler

Sipariş saglamproxy.com üzerinde, Türkçe arayüzde tamamlanır.
  • P-08

    HTTP & SOCKS5 Proxy

    Protokol katmanı: HTTP veya SOCKS5 seçimi sipariş sırasında. ISP Proxy ile aynı sipariş sayfası.

    • HTTP
    • SOCKS5
    • Kullanıcı / şifre
    Satın Al
  • P-04

    Residential Proxy

    GB bazlı fiyatlanan, dönen residential IP erişimi. 30 günlük paketler.

    • Rotating
    • GB paketi
    • HTTP(S) / SOCKS5
    Satın Al