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 હતો.