Asio-ի TCP սոքեթը SOCKS5 լսողին միացնելը կատարում է մեկ քայլ՝ TCP կապը այդ լսողի հետ։ Այն պրոքսիից չի պահանջում միանալ վերջնական սերվերին։ Թույլատրված հանրային թիրախի փորձարկման համար SOCKS5 պրոքսիների ցանկը թեկնածուներ է առաջարկում այդ առաջին TCP վերջնակետի համար. միացնողը դեռ պետք է կատարի ստորև նկարագրված փոխանակումը։

Այնուհետև SOCKS5 միացնողը պետք է կատարի արձանագրության փոխանակումը.

  1. Ուղարկել 5-րդ տարբերակի ողջույն՝ թվարկելով այն նույնականացման մեթոդները, որոնք աջակցում է հաճախորդը։
  2. Կարդալ ընտրված մեթոդը և անհրաժեշտության դեպքում կատարել դրա նույնականացման փոխանակումը։
  3. Ուղարկել CONNECT՝ նպատակակետի հասցեի տեսակով, հասցեով և ցանցային բայթային կարգով նավահանգստով։
  4. Կարդալ պատասխանը, ստուգել դրա տարբերակը և արդյունքի կոդը, ապա սպառել ամբողջ փոփոխական երկարության կապված հասցեն և նավահանգիստը։
  5. Հանձնել հաստատված հոսքը հավելվածի արձանագրությանը։

socks5::async_proxy_connect անունով օժանդակը պատկանում է այն SOCKS իրականացմանը, որը տրամադրում է այդ օժանդակը։ boost::asio-ի կողքին այն անվանելը այն Asio-ի TCP սոքեթի միջերեսի մաս չի դարձնում։

TCP ընթերցումները կարող են վերադարձնել պատասխանի միայն մի մասը։ Կառուցեք ընթերցումներ անհրաժեշտ բայթերի քանակների համար, ապա մնացած երկարությունը ընտրեք հասցեի տեսակի դաշտից։ Չենթադրեք, որ սերվերի յուրաքանչյուր պատասխան ունի ֆիքսված IPv4 դասավորություն։

HTTPS-ի համար կատարեք նպատակակետի TLS ձեռքսեղմումը SOCKS CONNECT-ի հաջողությունից հետո՝ պահպանելով նպատակակետի SNI-ն և հոսթի անվան ստուգումը։ Միայն հաջող պրոքսի պատասխանը չի նույնականացնում կայքը։

Պահպանեք չեղարկումը և ժամկետները ողջ կարգաբերման հաջորդականության ընթացքում։ Եթե TCP կապի հաստատման ժամանակը լրանա, հետագա ողջույնի, նույնականացման և CONNECT փոխանակումները կմնան անսահմանափակ։

Առնչվող հոդվածներ