OnProxyConnectResponse میں Go کی CONNECT حالت کا مشاہدہ کریں
درخواستوں سے پہلے transport پر hook نصب کریں؛ nil واپس کرنا اس کی معمول کی ٹنل-حالت جانچ برقرار رکھتا ہے۔
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
transport.OnProxyConnectResponse = func(
_ context.Context,
_ *url.URL,
_ *http.Request,
response *http.Response,
) error {
observeConnect(response.StatusCode, response.Header.Get("X-Proxy-Region"))
return nil
}
client := &http.Client{Transport: transport}context، net/http اور net/url استعمال کریں؛ معیاری قسم کا دعویٰ فرض کرتا ہے کہ وہ transport نصب رہتا ہے۔ proxyURL پارس ہوتا ہے، اور observeConnect ہم وقتی کے لیے محفوظ ہونا چاہیے۔ اجازت یافتہ عوامی HTTPS جانچ کے لیے HTTP پراکسی فہرست اس proxy URL کے لیے امیدوار فراہم کرتی ہے۔
کال بیک CONNECT کو کامیاب 200 کے لیے جانچنے سے پہلے چلتا ہے، اس لیے یہ 407 بھی دیکھ سکتا ہے۔ nil معمول کی جانچ جاری رکھتا ہے اور مسترد شدہ ٹنل قبول نہیں کرتا؛ خرابی درخواست کو ناکام کر دیتی ہے۔
X-Proxy-Region فراہم کنندہ کی طرف سے متعین مثال ہے۔ یہاں حالت اور ہیڈر پڑھیں اور باڈی و ساکٹ کی ملکیت Transport کو چھوڑ دیں، جو پھر منزل TLS سنبھالتا ہے۔
یہ نئی ٹنل کے قیام کا مشاہدہ کرتا ہے، ہر درخواست کا نہیں۔ دوبارہ استعمال شدہ کنکشن میں نئی CONNECT پاسخ نہیں ہوتی، اور ویب سائٹ کے پاسخ کے ہیڈر الگ ہوتے ہیں۔