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.

Saistītie raksti