Asio tarvitsee SOCKS5-vaihdon proxyn kanssa yhdistämisen jälkeen
Käsittele SOCKS5:tä protokollan tilakoneena Asio-socketin päällä: täydelliset luvut, validoidut vastaukset ja kohteen TLS vasta onnistuneen CONNECTin jälkeen.
Asio TCP-socketin yhdistäminen SOCKS5-kuuntelijaan suorittaa yhden vaiheen: TCP-yhteyden kyseiseen kuuntelijaan. Se ei pyydä proxya yhdistämään lopulliseen palvelimeen. Sallittua julkisen kohteen testiä varten SOCKS5-proxyluettelo tarjoaa ehdokkaita tuolle ensimmäiselle TCP-päätepisteelle; yhdistäjän on silti suoritettava alla oleva vaihto.
SOCKS5-yhdistäjän on sen jälkeen suoritettava protokollan vaihto:
- Lähetä version 5 tervehdys, joka luettelee asiakkaan tukemat todennusmenetelmät.
- Lue valittu menetelmä ja suorita sen todennusvaihto, kun sitä vaaditaan.
- Lähetä CONNECT kohteen osoitetyypin, osoitteen ja portin kanssa verkon tavujärjestyksessä.
- Lue vastaus, tarkista sen versio ja tuloskoodi, ja kuluta koko vaihtelevan pituinen sidottu osoite ja portti.
- Luovuta muodostettu virta sovelluksen protokollalle.
socks5::async_proxy_connect-niminen apuri kuuluu siihen SOCKS-toteutukseen, joka tarjoaa kyseisen apurin. Sen nimeäminen boost::asio:n vieressä ei tee siitä osaa Asion TCP-socket-rajapinnasta.
TCP-luennat voivat palauttaa vain osan vastauksesta. Kokoa luennot tarvittaville tavumäärille ja valitse sitten jäljellä oleva pituus osoitetyyppikentästä. Älä oleta, että jokaisella palvelimen vastauksella on kiinteä IPv4-asettelu.
HTTPS:ää varten tee kohteen TLS-kättely vasta onnistuneen SOCKS CONNECTin jälkeen, säilyttäen kohteen SNI ja isäntänimen varmennus. Pelkkä onnistunut proxyvastaus ei todenna verkkosivustoa.
Säilytä peruutus ja määräajat koko asennusjakson ajan. Jos TCP-yhteyden muodostuksen aikaraja umpeutuu, myöhemmät tervehdys-, todennus- ja CONNECT-vaihdot jäävät rajoittamattomiksi.