Қарапайым HTTP прокси арқылы ssl::stream<tcp::socket> үшін одан мақсатқа TLS жасауды сұрамас бұрын оның шикі көлігін пайдаланыңыз:

auto& transport = tlsStream.next_layer();
  1. Сол көлікті прокси хості мен портына қосыңыз. Прокси тіркелу деректері орнатылмаған рұқсат етілген жалпыға ашық HTTPS мақсаты үшін HTTP прокси тізімі үміткер шеткі нүктелерді ұсынады; үміткер сұралған туннельге рұқсат беретінін тексеріңіз.
  2. Мақсаттың authority атауын көрсетіп CONNECT жіберіңіз, мысалы api.example:443, және шикі көлікте толық жауап тақырыптарын талдаңыз. Сәтті 2xx туннельді ашады; бас тарту HTTP прокси жауабы болып қалады.
  3. Мақсаттың хост атауын, қажетті SNI-ді, сенім түбірлерін және әріптесті тексеруді конфигурациялаңыз, содан кейін tlsStream бойынша клиент қол алысуын бастаңыз.
  4. TLS сәтті болғаннан кейін қолданба үшін SSL ағынының оқуы мен жазуын пайдаланыңыз. Сол сәтте келесі қабатты тікелей оқу TLS өңдеуін айналып өтеді.

HTTP талдағышының кез келген қалдығын келесі кезеңге апарыңыз. Asio-да буферленген қол алысудың артық жүктемелері бар; талдағышқа тиесілі құйрықты тастау сокеттен әлдеқашан оқылған байттарды жоғалтуы мүмкін.

Осы қарапайым типте next_layer те, lowest_layer те TCP-ге жетеді. Көбірек қаптамалар оларды әртүрлі ете алады, сондықтан проксидің нақты сымдық протоколын тасымалдайтын интерфейсті таңдаңыз. HTTPS прокси тағы бір TLS кезеңін қосады және осы ашық мәтінді CONNECT ретінен тыс.

Қатысты мақалалар