Adi HTTP proksisi vasitəsilə ssl::stream<tcp::socket> üçün, ondan təyinat TLS-i tələb etməzdən əvvəl xam daşıyıcısından istifadə edin:

auto& transport = tlsStream.next_layer();
  1. Həmin daşıyıcını proksi hostuna və portuna qoşun. Proksi etimad məlumatı qurulmadan icazə verilmiş ictimai HTTPS təyinatı üçün HTTP proksi siyahısı namizəd son nöqtələr təklif edir; namizədin tələb olunan tunelə icazə verdiyini yoxlayın.
  2. Təyinatın authority adını göstərən CONNECT göndərin, məsələn api.example:443, və xam daşıyıcıda tam cavab başlıqlarını təhlil edin. Uğurlu 2xx tuneli açır; imtina HTTP proksi cavabı olaraq qalır.
  3. Təyinat host adını, tələb olunan SNI-ni, etimad köklərini və həmkar yoxlamasını konfiqurasiya edin, sonra tlsStream üzərində müştəri əl sıxmasına başlayın.
  4. TLS uğurlu olduqdan sonra tətbiq üçün SSL axını oxuma və yazmalarından istifadə edin. Həmin nöqtədə növbəti qatı birbaşa oxumaq TLS emalını keçir.

HTTP təhlilçisinin hər hansı artığını növbəti mərhələyə keçirin. Asio-da buferlənmiş əl sıxması üçün artıq yükləmələr var; təhlilçiyə aid quyruğu atmaq soketdən artıq oxunmuş baytları itirə bilər.

Bu sadə tipdə next_layer və lowest_layer hər ikisi TCP-yə çatır. Daha çox sarğıc onları fərqləndirə bilər, ona görə proksinin həqiqi naqil protokolunu daşıyan interfeysi seçin. HTTPS proksisi başqa TLS mərhələsi əlavə edir və bu düz mətn CONNECT ardıcıllığından kənardır.

Əlaqəli məqalələr