Mae twnnel SOCKS yn cario cysylltiad TCP. Gall Go wneud TLS gyda'r gyrchfan drwy'r twnnel hwnnw a thrafod HTTP/2 yno; nid oes angen i'r gweinydd SOCKS siarad HTTP/2 ei hun.

Mewn rhaglen sy'n cadw trafnidiaeth ddiofyn safonol Go, cloniwch ei chyfluniad a dewiswch y 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,
}

Mae'r proxy a'r gyrchfan yn parhau'n werthoedd gwahanol. Dewiswch bwynt terfyn SOCKS5 o'r rhestr proxies SOCKS5 ar gyfer gwerth y proxy; mae HTTP/2 yn dal i gael ei drafod gyda'r gyrchfan. Defnyddiwch client i ofyn am URL gwirioneddol y gwasanaeth HTTPS, yna caewch gorff yr ymateb drwy gylch bywyd arferol y rhaglen.

Mae'r drafnidiaeth ddiofyn safonol yn cefnogi HTTP/2. Mae ei chloni yn cadw'r cyfluniad hwnnw tra'n caniatáu i'r dewis proxy newid. Mae'r haeriad math yn tybio nad yw'r rhaglen wedi disodli http.DefaultTransport â RoundTripper arall.

Ar gyfer trafnidiaeth a adeiledir ar wahân, adolygwch ei chyfluniad HTTP/2, yn enwedig wrth ddarparu bachau dial neu TLS addasol. Mae Go yn datgelu ForceAttemptHTTP2 ac, mewn rhyddhau mwy diweddar, cyfluniad Protocols penodol ar gyfer y dewisiadau hynny.

Rhaid i'r gyrchfan gynnig HTTP/2 drwy drafodaeth TLS o hyd. Archwiliwch werth Proto neu ProtoMajor yr ymateb llwyddiannus i weld beth a ddefnyddiwyd. Nid yw cais HTTPS sy'n llwyddo drwy SOCKS ynddo'i hun yn profi mai HTTP/2 oedd y protocol a drafodwyd.

Erthyglau cysylltiedig