عام 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 سلسلے سے باہر ہے۔

متعلقہ مضامین