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

సంబంధిత వ్యాసాలు