Att ansluta en Asio TCP-socket till en SOCKS5-lyssnare slutför ett steg: TCP-anslutningen till den lyssnaren. Det ber inte proxyn att ansluta till den slutliga servern. För ett tillåtet test mot ett offentligt mål erbjuder SOCKS5-proxylistan kandidater för den första TCP-slutpunkten; anslutaren måste ändå genomföra utbytet nedan.

En SOCKS5-anslutare måste därefter köra protokollutbytet:

  1. Skicka en hälsning med version 5 som listar de autentiseringsmetoder klienten stöder.
  2. Läs den valda metoden och utför dess autentiseringsutbyte när det krävs.
  3. Skicka CONNECT med målets adresstyp, adress och port i nätverksbyteordning.
  4. Läs svaret, kontrollera versionen och resultatkoden, och förbruka den fullständiga bundna adressen och porten med variabel längd.
  5. Lämna över den etablerade strömmen till applikationens protokoll.

En hjälpare som heter socks5::async_proxy_connect tillhör SOCKS-implementeringen som tillhandahåller den hjälparen. Att namnge den bredvid boost::asio gör den inte till en del av Asios TCP-socketgränssnitt.

TCP-läsningar kan bara returnera en del av ett svar. Sätt samman läsningar för de nödvändiga byteantalen och välj sedan den återstående längden från adresstypfältet. Anta inte att varje serversvar har den fasta IPv4-layouten.

För HTTPS, utför målets TLS-handskakning efter att SOCKS CONNECT lyckats, och bevara målets SNI och värdnamnsverifiering. Ett lyckat proxy-svar ensamt autentiserar inte webbplatsen.

Behåll avbrytning och tidsgränser genom hela installationen. Om tiden för att upprätta TCP-anslutningen löper ut blir de senare hälsnings-, autentiserings- och CONNECT-utbytena annars obegränsade.

Relaterade artiklar