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 అని నిరూపించదు.