SOCKS-tunnel kannab TCP-ühendust. Go saab selle tunneli kaudu sihtkohaga TLS-i teha ja seal HTTP/2 läbi rääkida; SOCKS-server ise ei pea HTTP/2 rääkima.

Programmis, mis säilitab Go standardse vaikimisi transporti, kloonige selle konfiguratsioon ja valige puhverserver:

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,
}

Puhverserver ja sihtkoht jäävad erinevateks väärtusteks. Valige puhverserveri väärtuseks SOCKS5 lõpp-punkt SOCKS5 puhverserverite loendist; HTTP/2 räägitakse endiselt läbi sihtkohaga. Kasutage clienti, et taotleda tegelikku HTTPS-teenuse URL-i, seejärel sulgege vastuse keha rakenduse tavapärase elutsükli kaudu.

Standardne vaikimisi transport toetab HTTP/2. Selle kloonimine säilitab konfiguratsiooni, lubades samal ajal puhverserveri valikut muuta. Tüübiväide eeldab, et programm ei ole asendanud http.DefaultTransporti teise RoundTripperiga.

Eraldi ehitatud transporthul kontrollige selle HTTP/2 konfiguratsiooni, eriti kui pakute kohandatud dial- või TLS-konksusid. Go eksponeerib ForceAttemptHTTP2 ja uuemates versioonides nende valikute jaoks selgesõnalise Protocols-konfiguratsiooni.

Sihtkoht peab endiselt pakkuma HTTP/2 TLS-i läbirääkimise kaudu. Kontrollige õnnestunud vastuse Proto või ProtoMajor väärtust, et näha, mida kasutati. SOCKS-i kaudu õnnestunud HTTPS-päring ei tõenda iseenesest, et läbiräägitud protokoll oli HTTP/2.

Seotud artiklid