Asio проксиге туташкандан кийин SOCKS5 алмашуусун талап кылат
SOCKS5ти Asio сокетинин үстүндөгү протокол абалынын машинасы катары караңыз: толук окуу, текшерилген жооптор жана максаттын TLSи CONNECT ийгиликтүү болгондон кийин гана.
Asio TCP сокетин SOCKS5 угуучусуна туташтыруу бир гана кадамды аяктайт: ошол угуучуга TCP байланышын. Ал проксиден акыркы серверге туташууну талап кылбайт. Уруксат берилген коомдук максатты текшерүү үчүн SOCKS5 проксилер тизмеси ошол биринчи TCP чекитине талапкерлерди сунуштайт; туташтыргыч төмөнкү алмашууну аткарышы керек.
Андан кийин SOCKS5 туташтыргычы протокол алмашуусун аткарышы керек:
- Кардар колдогон аутентификация ыкмаларын тизмеген 5-версиядагы салам жөнөтүңүз.
- Тандалган ыкманы окуп, керек болгондо анын аутентификация алмашуусун аткарыңыз.
- CONNECTти максаттын дарегинин түрү, дареги жана тармактык байт тартибиндеги порту менен жөнөтүңүз.
- Жоопту окуп, анын версиясын жана жыйынтык кодун текшериңиз, анан өзгөрмө узундуктагы байланган даректи жана портту толук колдонуңуз.
- Түзүлгөн агымды колдонмонун протоколуна өткөрүп бериңиз.
socks5::async_proxy_connect деп аталган жардамчы ошол жардамчыны сунуштаган SOCKS ишке ашыруусуна таандык. Аны boost::asio жанында атоо аны Asioнун TCP сокет интерфейсинин бөлүгү кылбайт.
TCP окуулары жооптун бир бөлүгүн гана кайтарышы мүмкүн. Керектүү байт сандары үчүн окууларды бириктириңиз, анан калган узундукту дарек түрү талаасынан тандаңыз. Ар бир сервер жообунда туруктуу IPv4 жайгашуусу бар деп ойлобоңуз.
HTTPS үчүн SOCKS CONNECT ийгиликтүү болгондон кийин максаттын TLS кол алышуусун аткарыңыз, максаттын SNIин жана хост атын текшерүүнү сактап. Жалгыз ийгиликтүү прокси жообу сайтты аутентификация кылбайт.
Бүт орнотуу ырааттуулугу боюнча жокко чыгарууну жана мөөнөттөрдү сактаңыз. TCP байланышын түзүү убактысы бүтсө, кийинки салам, аутентификация жана CONNECT алмашуулары чектелбеген бойдон калат.