SOCKS سرنگ ایک TCP کنکشن لے کر جاتی ہے۔ Go اس سرنگ کے ذریعے منزل کے ساتھ TLS کر سکتا ہے اور وہاں HTTP/2 پر بات چیت کر سکتا ہے؛ SOCKS سرور کو خود HTTP/2 بولنے کی ضرورت نہیں۔

Go کے معیاری طے شدہ ٹرانسپورٹ کو برقرار رکھنے والے پروگرام میں، اس کی کنفیگریشن کلون کریں اور پراکسی منتخب کریں:

import (
    "net/http"
    "net/url"
    "time"
)

proxyURL := &url.URL{
    Scheme: "socks5",
    Host: "proxy.example:1080",
}
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
client := &http.Client{
    Transport: transport,
    Timeout: 30 * time.Second,
}

پراکسی اور منزل الگ الگ قدریں ہی رہتی ہیں۔ پراکسی قدر کے لیے SOCKS5 پراکسی فہرست سے SOCKS5 اینڈ پوائنٹ منتخب کریں؛ HTTP/2 پر بات چیت اب بھی منزل کے ساتھ ہوتی ہے۔ اصل HTTPS سروس URL کی درخواست کے لیے client استعمال کریں، پھر ایپلیکیشن کے معمول کے لائف سائیکل کے ذریعے جواب کا باڈی بند کریں۔

معیاری طے شدہ ٹرانسپورٹ HTTP/2 کی حمایت کرتا ہے۔ اسے کلون کرنے سے وہ کنفیگریشن برقرار رہتی ہے اور پراکسی کا انتخاب بدلا جا سکتا ہے۔ نوعیت کی جانچ فرض کرتی ہے کہ پروگرام نے http.DefaultTransport کو کسی اور RoundTripper سے نہیں بدلا۔

الگ سے بنائے گئے ٹرانسپورٹ کے لیے، اس کی HTTP/2 کنفیگریشن کا جائزہ لیں، خاص طور پر جب حسب ضرورت dial یا TLS ہکس فراہم کریں۔ Go ForceAttemptHTTP2 اور نئی ریلیزز میں ان انتخابات کے لیے واضح Protocols کنفیگریشن فراہم کرتا ہے۔

منزل کو اب بھی TLS بات چیت کے ذریعے HTTP/2 پیش کرنا ہوگا۔ یہ دیکھنے کے لیے کہ کیا استعمال ہوا، کامیاب جواب کی Proto یا ProtoMajor قدر دیکھیں۔ SOCKS کے ذریعے کامیاب HTTPS درخواست بذات خود ثابت نہیں کرتی کہ طے شدہ پروٹوکول HTTP/2 تھا۔

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