HTTP/2 yn ffitio y tu mewn i dwnnel SOCKS Go
Cloniwch y trafnidiaeth HTTP safonol, dewiswch y proxy SOCKS ac archwiliwch y protocol cyrchfan a drafodwyd mewn gwirionedd.
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.