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 थियो भनी प्रमाणित गर्दैन।

सम्बन्धित लेखहरू