Usmjeravanje Socket.Connect() na SOCKS server otvara TCP vezu s tim serverom. Sljedeći bajtovi još uvijek moraju govoriti SOCKS. Slanje protokola vaše aplikacije odmah ostavlja server da čeka drugi razgovor.

S SOCKS5 uspostavljanje veze uključuje pregovaranje metode, eventualnu odabranu razmjenu autentifikacije i zahtjev koji imenuje odredište. Samo uspješan odgovor otvara put za bajtove aplikacije. Ove faze definirane su u RFC 1928.

Zadržite pregovaranje u sloju veze

Aplikacija s vlastitim TCP protokolom može koristiti konektor koji razumije proxy i vraća uspostavljeni tok. Ostatak aplikacije zatim čita i piše kroz taj tok. Konektor mora uzeti u obzir djelimična čitanja, adrese promjenjive dužine, neuspjehe autentifikacije i rok za pregovaranje.

Ručno napisana implementacija koja čita jedan bafer fiksne veličine i pretpostavlja uspjeh je krhka. TCP ne čuva granice SOCKS poruka. Pročitajte potpuni odgovor opisan njegovim tipom adrese prije početka protokola aplikacije. čitač CONNECT odgovora u .NET 7+ ilustruje taj korak.

Ako održavana biblioteka već pruža ovaj sloj veze, provjerite podržane SOCKS verzije, metode autentifikacije i ciljni okvir. Forumski link star deceniju početna je točka za istragu, a ne dokaz trenutne kompatibilnosti.

Konfiguracija HTTP klijenta ima odvojen obim

Proxy postavka HTTP klijenta konfigurira taj HTTP klijent. Ne mijenja svaki sirovi socket u procesu. Socket API prihvaća mrežnu krajnju točku i ostavlja pregovaranje više razine pozivatelju.

Za šifrirani protokol aplikacije izvedite TLS rukovanje nakon uspostavljanja proxy tunela. Provjerite predviđeni identitet odredišta u toj fazi. Autentifikacija proxyja i autentifikacija odredišta ostaju odvojene čak i kada koriste isti osnovni tok.

Povezani članci