Proxy Kontrol

SOCKS5 proxy nasıl kontrol edilir? El sıkışma ve yanıt kodları

SOCKS5 proxy, HTTP'den farklı olarak üç aşamalı ikili bir protokol konuşur. Hangi aşamada durduğunu bilirseniz hatayı hızla bulursunuz.

Kategori
Proxy Kontrol
Okuma süresi
7 dk okuma
Yayın:

SOCKS5 proxy kontrol ederken bakılacak şey HTTP durum kodları değil, protokolün kendi aşamalarıdır: yöntem seçimi, kimlik doğrulama ve bağlantı isteği. Her aşamanın kendi hata biçimi vardır; bu yüzden "bağlanamadım" demek yerine hangi aşamada durduğunuzu bulmak çözümü kısaltır.

SOCKS5 el sıkışması üç aşamadır

  1. 1

    Yöntem seçimi

    İstemci desteklediği yöntemleri bildirir (0x00 kimlik yok, 0x02 kullanıcı adı/parola). Sunucu birini seçer; hiçbiri kabul edilemezse 0xFF döner ve bağlantı kesilir.

  2. 2

    Kullanıcı adı ve parola (RFC 1929)

    0x02 seçildiyse istemci kullanıcı adı ve parolayı yollar. Yanıttaki durum baytı 0 ise başarılıdır; başka bir değer reddedilmedir.

  3. 3

    Bağlantı isteği

    İstemci hedef adresi ve portu iletir (IPv4, alan adı ya da IPv6 olarak). Sunucu bir yanıt kodu döner; 0 başarıdır, diğerleri bir hata nedenini bildirir.

Konsept · eğitim amaçlı

SOCKS5 (RFC 1928): yöntem pazarlığı, isteğe bağlı kullanıcı adı/parola (RFC 1929), bağlantı isteği ve yanıt.

SOCKS5 proxy mesaj sırasıSOCKS5 proxy için istemci, proxy ve hedef arasındaki 8 adımlı mesaj sırası. Şu an 1. adım: İstemci desteklediği yöntemleri sunar. Tüm adımlar aşağıdaki gizli listede yazılıdır.
  1. 1. İstemci → Proxy: İstemci desteklediği yöntemleri sunar
  2. 2. Proxy → İstemci: Proxy bir yöntem seçer
  3. 3. İstemci → Proxy: Kullanıcı adı ve parola gönderilir (isteğe bağlı)
  4. 4. Proxy → İstemci: Proxy kimlik bilgisini onaylar (isteğe bağlı)
  5. 5. İstemci → Proxy: İstemci bağlantı ister
  6. 6. Proxy → Hedef: Proxy hedefe TCP bağlantısı açar
  7. 7. Proxy → İstemci: Proxy sonucu bildirir
  8. 8. İstemci → Hedef: Veri proxy üzerinden aktarılır
adım 1/8 · İstemci → Proxy

Düz bağlantı

İstemci desteklediği yöntemleri sunar

VER
0x05
NMETHODS
sunulan yöntem sayısı
METHODS
0x00 kimlik yok · 0x02 kullanıcı/parola

SOCKS5 kendi başına şifrelemez. socks5:// ile ad istemcide, socks5h:// ile proxy’de çözülür. Kontrol aracımız yalnızca TCP CONNECT sınar.

SOCKS5 el sıkışması: yöntem seçimi, isteğe bağlı kimlik doğrulama, ardından hedefe CONNECT. Her adımın yanıtı denetleyicide ayrı gösterilir.Konsept animasyonu

Yanıt kodları

SOCKS5 bağlantı isteği yanıt kodları (RFC 1928)
KodAnlamıPratikte genellikle
0BaşarılıTünel hazır
1Genel SOCKS sunucu hatasıProxy'nin iç sorunu, sağlayıcıya bildirin
2Kural kümesi izin vermiyorHedef veya port hesabınızda yasak
3Ağ erişilemezProxy'nin hedef ağa yolu yok
4Sunucu erişilemezHedef adres kapalı ya da çözülemedi
5Bağlantı reddedildiHedef portta dinleyen yok
6TTL dolduYönlendirme sorunu veya çok uzun yol
7Komut desteklenmiyorCONNECT dışında bir komut istendi (ör. UDP)
8Adres türü desteklenmiyorÖrneğin proxy IPv6 hedefi ya da alan adını kabul etmiyor

cURL ile SOCKS5 testi: socks5 ile socks5h farkı

cURL'de SOCKS5 için iki biçim vardır. socks5:// alan adının istemci tarafında çözülmesini, socks5h:// ise çözümlemeyi proxy'ye bırakmayı ifade eder. Yerel DNS sorgularının dışarı sızmasını istemiyorsanız h ekli biçimi seçin; bu aynı zamanda yalnızca proxy tarafından çözülebilen adreslere ulaşmanın tek yoludur.

Bash
curl -sS -m 20 --socks5-hostname proxy.example.com:1080 --proxy-user KULLANICI:PAROLA -w 'kod=%{http_code} baglanti=%{time_connect} toplam=%{time_total}\n' -o /dev/null https://example.com/
curl -sS -m 20 -x socks5h://KULLANICI:[email protected]:1080 -o /dev/null -w 'kod=%{http_code}\n' https://example.com/
curl -sS -m 20 --socks5 proxy.example.com:1080 --proxy-user KULLANICI:PAROLA -o /dev/null -w 'kod=%{http_code}\n' https://example.com/
Birinci ve ikinci komut proxy tarafında ad çözümler (socks5h); üçüncüsü adı yerelde çözer

Hata çıktısını okumak

  • curl: (7) Failed to connect to proxy: port kapalı veya IP yanlış; henüz SOCKS aşamasına bile gelinmedi.
  • curl: (97) ... benzeri SOCKS el sıkışma hataları: yöntem ya da kimlik doğrulama reddi, proxy ise HTTP proxy olabilir (protokol uyuşmazlığı).
  • curl: (28) zaman aşımı: proxy yanıt vermiyor ya da hedef yolu düşüyor. Bkz. proxy timeout.
  • Sonuç boş ya da bağlantı kopması: proxy SOCKS5 değil, HTTP proxy olabilir. Aynı IP:port'u -x http:// ile deneyin.

Python ile SOCKS5 testi

requests kütüphanesi SOCKS desteğini ek pakette sunar: pip install "requests[socks]". Şemada socks5h yazarsanız ad çözümlemesi proxy'de yapılır.

Python
import time
import requests

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

t0 = time.perf_counter()
try:
    r = requests.get("https://example.com/", proxies=proxies, timeout=(10, 20))
    print("durum:", r.status_code, "sure: %.2f sn" % (time.perf_counter() - t0))
except requests.exceptions.ConnectTimeout:
    print("proxy'ye baglanti zaman asimi")
except requests.exceptions.ProxyError as e:
    print("SOCKS hatasi (kimlik, kural veya hedef):", e)
except requests.exceptions.RequestException as e:
    print("hata:", e)
SOCKS5 üzerinden HTTPS isteği; hata türüne göre ayrı mesaj

SOCKS5 ile ilgili sık yanılgılar

  • SOCKS5 trafiği şifrelemez. Proxy'ye giden yol, HTTPS gibi uygulama katmanı şifrelemesi kullanmadığı sürece okunabilir kalır.
  • Parola düz metin gider. RFC 1929 kimlik doğrulaması şifresizdir; güvenilmeyen ağlarda dikkatli olun.
  • Her SOCKS5 proxy UDP taşımaz. UDP ASSOCIATE komutu protokolde tanımlıdır ama her proxy bunu desteklemez; UDP gerekiyorsa sağlayıcıya sorun. Denetleyicimiz yalnızca TCP CONNECT'i sınar.
  • SOCKS4 farklı bir protokoldür. Kimlik doğrulama (kullanıcı adı/parola) ve IPv6 yoktur; ayrıntı için SOCKS4 sayfasına bakın.

Denetleyici ile SOCKS5 sınaması

SOCKS5 denetleyicisi üç aşamayı ayrı ayrı gösterir: proxy'ye bağlantı süresi, el sıkışma ve kimlik doğrulama sonucu, hedefe CONNECT yanıtı. Hata yanıt kodlarıyla birlikte anlatıldığı için yukarıdaki tabloyla doğrudan eşleştirebilirsiniz. Sınama adresinden ilk baytın geliş süresi de ayrıca kaydedilir.

SOCKS5 proxy'nizin hangi aşamada durduğunu görün.

Proxy Kontrol Et

Bu yazıda kullanılan araçlar

Sık sorulan sorular

İlgili rehberler