HTTP/2 iekļaujas Go SOCKS tunelī
Klonējiet standarta HTTP transportu, izvēlieties SOCKS starpniekserveri un pārbaudiet faktiski saskaņoto galamērķa protokolu.
SOCKS tunelis pārnes TCP savienojumu. Go var veikt TLS ar galamērķi caur šo tuneli un tur vienoties par HTTP/2; pašam SOCKS serverim nav jārunā HTTP/2.
Programmā, kas saglabā Go standarta noklusējuma transportu, klonējiet tā konfigurāciju un izvēlieties starpniekserveri:
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,
}
Starpniekserveris un galamērķis joprojām ir atšķirīgas vērtības. Starpniekservera vērtībai izvēlieties SOCKS5 galapunktu no SOCKS5 starpniekserveru saraksta; HTTP/2 joprojām tiek saskaņots ar galamērķi. Izmantojiet client, lai pieprasītu īsto HTTPS pakalpojuma URL, pēc tam aizveriet atbildes pamattekstu ar parasto lietojumprogrammas dzīves ciklu.
Standarta noklusējuma transports atbalsta HTTP/2. Tā klonēšana saglabā šo konfigurāciju un ļauj mainīt starpniekservera izvēli. Tipa pārbaude pieņem, ka programma nav aizstājusi http.DefaultTransport ar citu RoundTripper.
Atsevišķi veidotam transportam pārskatiet tā HTTP/2 konfigurāciju, jo īpaši, ja nodrošināt pielāgotus dial vai TLS āķus. Go atklāj ForceAttemptHTTP2 un jaunākās versijās skaidru Protocols konfigurāciju šīm izvēlēm.
Galamērķim joprojām ir jāpiedāvā HTTP/2, izmantojot TLS sarunas. Pārbaudiet veiksmīgās atbildes Proto vai ProtoMajor vērtību, lai redzētu, kas tika izmantots. Veiksmīgs HTTPS pieprasījums caur SOCKS pats par sevi nepierāda, ka saskaņotais protokols bija HTTP/2.