In SOCKS-tunnel draacht in TCP-ferbining. Go kin TLS mei de bestimming fia dy tunnel dwaan en dêr HTTP/2 ûnderhannelje; de SOCKS-tsjinner hoecht sels gjin HTTP/2 te sprekken.

Yn in programma dat Go syn standert standerttransport behâldt, klonearje de konfiguraasje en selektearje de proxy:

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

De proxy en de bestimming bliuwe ferskillende wearden. Selektearje in SOCKS5-einpunt út 'e SOCKS5-proxylist foar de proxywearde; HTTP/2 wurdt noch altyd mei de bestimming ûnderhannele. Brûk client om de echte HTTPS-tsjinst-URL oan te freegjen, slút dan it antwurdlichem fia de normale libbenssyklus fan 'e applikaasje.

It standert standerttransport stipet HTTP/2. It klonearjen behâldt dy konfiguraasje wylst de proxykar feroarje kin. De typebewearing giet derfan út dat it programma http.DefaultTransport net ferfongen hat troch in oare RoundTripper.

Foar in apart boud transport, besjoch de HTTP/2-konfiguraasje, benammen by it leverjen fan oanpaste dial- of TLS-hooks. Go eksposearret ForceAttemptHTTP2 en, yn nijere ferzjes, eksplisite Protocols-konfiguraasje foar dy karren.

De bestimming moat noch hieltyd HTTP/2 biede fia TLS-ûnderhanneling. Undersykje de Proto- of ProtoMajor-wearde fan it slagge antwurd om te sjen wat brûkt is. In HTTPS-fersyk dat fia SOCKS slagget, bewiist op himsels net dat it ûnderhannele protokol HTTP/2 wie.

Relatearre artikelen