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 अझै गन्तव्यसँग वार्ता गरिन्छ। वास्तविक HTTPS सेवा URL अनुरोध गर्न client प्रयोग गर्नुहोस्, त्यसपछि अनुप्रयोगको सामान्य जीवनचक्रबाट प्रतिक्रिया बडी बन्द गर्नुहोस्।
मानक पूर्वनिर्धारित ट्रान्सपोर्टले HTTP/2 समर्थन गर्छ। यसलाई क्लोन गर्दा त्यो कन्फिगरेसन कायम रहन्छ र प्रोक्सीको छनोट परिवर्तन गर्न सकिन्छ। प्रकार जाँचले कार्यक्रमले http.DefaultTransport लाई अर्को RoundTripper ले प्रतिस्थापन नगरेको मान्छ।
अलगै बनाइएको ट्रान्सपोर्टका लागि, यसको HTTP/2 कन्फिगरेसन समीक्षा गर्नुहोस्, विशेष गरी अनुकूलन dial वा TLS हुक दिँदा। Go ले ForceAttemptHTTP2 र नयाँ रिलिजहरूमा ती छनोटहरूका लागि स्पष्ट Protocols कन्फिगरेसन उपलब्ध गराउँछ।
गन्तव्यले अझै TLS वार्तामार्फत HTTP/2 प्रस्ताव गर्नुपर्छ। के प्रयोग भयो हेर्न सफल प्रतिक्रियाको Proto वा ProtoMajor मान जाँच्नुहोस्। SOCKS मार्फत सफल HTTPS अनुरोधले आफैंमा वार्ता भएको प्रोटोकल HTTP/2 थियो भनी प्रमाणित गर्दैन।