HTTP/2 Go च्या SOCKS बोगद्यात बसते
मानक HTTP ट्रान्सपोर्ट क्लोन करा, SOCKS प्रॉक्सी निवडा आणि प्रत्यक्षात वाटाघाटी झालेला गंतव्य प्रोटोकॉल तपासा.
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 ची वाटाघाटी अजूनही गंतव्यासोबत होते. client वापरून खरे HTTPS सेवा URL मागवा, नंतर ॲप्लिकेशनच्या नेहमीच्या जीवनचक्रातून प्रतिसाद बॉडी बंद करा.
मानक डीफॉल्ट ट्रान्सपोर्ट HTTP/2 ला समर्थन देतो. तो क्लोन केल्याने ते कॉन्फिगरेशन टिकून राहते आणि प्रॉक्सीची निवड बदलता येते. प्रकार-तपासणी गृहीत धरते की प्रोग्रामने http.DefaultTransport ला दुसऱ्या RoundTripper ने बदललेले नाही.
स्वतंत्रपणे तयार केलेल्या ट्रान्सपोर्टसाठी, त्याचे HTTP/2 कॉन्फिगरेशन तपासा, विशेषतः सानुकूल dial किंवा TLS हुक देताना. Go ForceAttemptHTTP2 आणि नवीन आवृत्त्यांमध्ये त्या निवडींसाठी स्पष्ट Protocols कॉन्फिगरेशन उपलब्ध करून देतो.
गंतव्याला अजूनही TLS वाटाघाटीद्वारे HTTP/2 देऊ करावे लागते. काय वापरले गेले हे पाहण्यासाठी यशस्वी प्रतिसादाचे Proto किंवा ProtoMajor मूल्य तपासा. SOCKS मधून यशस्वी HTTPS विनंती स्वतःच सिद्ध करत नाही की वाटाघाटी झालेला प्रोटोकॉल HTTP/2 होता.