Asio TCP soketini SOCKS5 dinləyicisinə qoşmaq bir addımı tamamlayır: həmin dinləyiciyə TCP bağlantısı. Bu, proksidən son serverə qoşulmağı tələb etmir. İcazə verilmiş ictimai hədəf sınağı üçün SOCKS5 proksi siyahısı həmin ilk TCP son nöqtəsi üçün namizədlər təklif edir; bağlayıcı yenə də aşağıdakı mübadiləni tamamlamalıdır.

SOCKS5 bağlayıcısı bundan sonra protokol mübadiləsini yerinə yetirməlidir:

  1. Müştərinin dəstəklədiyi autentifikasiya üsullarını sadalayan 5 versiyalı salam göndərin.
  2. Seçilmiş üsulu oxuyun və tələb olunduqda onun autentifikasiya mübadiləsini yerinə yetirin.
  3. CONNECT-i hədəfin ünvan növü, ünvanı və şəbəkə bayt sırası ilə portu ilə birlikdə göndərin.
  4. Cavabı oxuyun, versiyasını və nəticə kodunu yoxlayın, tam dəyişən uzunluqlu bağlanmış ünvanı və portu qəbul edin.
  5. Qurulmuş axını tətbiqin protokoluna verin.

socks5::async_proxy_connect adlı köməkçi həmin köməkçini təqdim edən SOCKS tətbiqinə aiddir. Onu boost::asio yanında adlandırmaq onu Asio-nun TCP soket interfeysinin hissəsi etmir.

TCP oxumaları cavabın yalnız bir hissəsini qaytara bilər. Tələb olunan bayt sayları üçün oxumaları birləşdirin, sonra qalan uzunluğu ünvan növü sahəsindən seçin. Hər server cavabının sabit IPv4 düzümü olduğunu güman etməyin.

HTTPS üçün SOCKS CONNECT uğurlu olduqdan sonra hədəfin TLS əl sıxmasını yerinə yetirin, hədəfin SNI və host adı yoxlamasını qoruyun. Tək uğurlu proksi cavabı veb saytı autentifikasiya etmir.

Ləğvetmə və son tarixləri bütün quraşdırma ardıcıllığı boyunca saxlayın. TCP bağlantısının qurulması vaxtı bitərsə, sonrakı salam, autentifikasiya və CONNECT mübadilələri məhdudiyyətsiz qalır.

Əlaqəli məqalələr