HTTP/2 inatoshea ndani ya handaki la SOCKS la Go
Nakili usafirishaji wa kawaida wa HTTP, chagua proksi ya SOCKS na ukague itifaki ya lengwa iliyojadiliwa kwa kweli.
Handaki la SOCKS hubeba muunganisho mmoja wa TCP. Go inaweza kufanya TLS na lengwa kupitia handaki hilo na kujadili HTTP/2 hapo; seva ya SOCKS yenyewe haihitaji kuzungumza HTTP/2.
Katika programu inayohifadhi usafirishaji chaguo-msingi wa kawaida wa Go, nakili usanidi wake na uchague proksi:
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,
}
Proksi na lengwa hubaki kuwa thamani tofauti. Chagua kiishio cha SOCKS5 kutoka orodha ya proksi za SOCKS5 kwa thamani ya proksi; HTTP/2 bado inajadiliwa na lengwa. Tumia client kuomba URL halisi ya huduma ya HTTPS, kisha funga mwili wa jibu kupitia mzunguko wa kawaida wa maisha wa programu.
Usafirishaji chaguo-msingi wa kawaida unasaidia HTTP/2. Kuinakili kunahifadhi usanidi huo huku kukiruhusu chaguo la proksi kubadilika. Ukaguzi wa aina unadhani programu haijabadilisha http.DefaultTransport na RoundTripper nyingine.
Kwa usafirishaji uliojengwa tofauti, pitia usanidi wake wa HTTP/2, hasa unapotoa ndoano za dial au TLS maalum. Go inaonyesha ForceAttemptHTTP2 na, katika matoleo mapya, usanidi wazi wa Protocols kwa chaguo hizo.
Lengwa bado linapaswa kutoa HTTP/2 kupitia majadiliano ya TLS. Kagua thamani ya Proto au ProtoMajor ya jibu lililofanikiwa ili kuona kilichotumika. Ombi la HTTPS linalofanikiwa kupitia SOCKS haliothibitishi lenyewe kwamba itifaki iliyojadiliwa ilikuwa HTTP/2.