Egy Asio TCP-socket SOCKS5-figyelőhöz csatlakoztatása egyetlen lépést teljesít: a TCP-kapcsolatot ehhez a figyelőhöz. Ez nem kéri a proxyt, hogy csatlakozzon a végső kiszolgálóhoz. Egy engedélyezett nyilvános célú teszthez a SOCKS5-proxylista jelölteket kínál ehhez az első TCP-végponthoz; az összekötőnek azonban végre kell hajtania az alábbi cserét.

Ezután a SOCKS5-összekötőnek le kell futtatnia a protokollcserét:

  1. Küldjön 5-ös verziójú üdvözlést, amely felsorolja a kliens által támogatott hitelesítési módszereket.
  2. Olvassa be a kiválasztott módszert, és ha szükséges, hajtsa végre a hitelesítési cseréjét.
  3. Küldjön CONNECT-et a cél címének típusával, címével és portjával hálózati bájtsorrendben.
  4. Olvassa be a választ, ellenőrizze a verzióját és az eredménykódot, majd fogyassza el a teljes, változó hosszúságú kötött címet és portot.
  5. Adja át a létrejött adatfolyamot az alkalmazás protokolljának.

Az socks5::async_proxy_connect nevű segédfüggvény ahhoz a SOCKS-megvalósításhoz tartozik, amely ezt a segédfüggvényt nyújtja. Az boost::asio melletti említése nem teszi az Asio TCP-socket felületének részévé.

A TCP-olvasások csak a válasz egy részét adhatják vissza. Állítsa össze az olvasásokat a szükséges bájtszámokra, majd a fennmaradó hosszt a címtípus mezőből válassza ki. Ne feltételezze, hogy minden kiszolgálóválasz a rögzített IPv4-elrendezésű.

HTTPS esetén a cél TLS-kézfogását csak sikeres SOCKS CONNECT után végezze el, megőrizve a cél SNI-jét és hosztnév-ellenőrzését. Egy sikeres proxyválasz önmagában nem hitelesíti a webhelyet.

Tartsa be a megszakítást és a határidőket a teljes beállítási sorrendben. Ha a TCP-kapcsolat létrehozásának ideje lejár, a későbbi üdvözlés-, hitelesítés- és CONNECT-cserék korlátlanok maradnak.

Kapcsolódó cikkek