Az Asiónak SOCKS5-csere kell a proxyhoz csatlakozás után
Kezelje a SOCKS5-öt protokoll-állapotgépként az Asio socket fölött: teljes olvasások, érvényesített válaszok és a cél TLS-e csak sikeres CONNECT után.
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:
- Küldjön 5-ös verziójú üdvözlést, amely felsorolja a kliens által támogatott hitelesítési módszereket.
- Olvassa be a kiválasztott módszert, és ha szükséges, hajtsa végre a hitelesítési cseréjét.
- 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.
- 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.
- 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.