HTTP/2 Go'нун SOCKS туннелинин ичине батат
Стандарттык HTTP транспортун клондоп, SOCKS проксисин тандап, чындап келишилген максат протоколун текшериңиз.
SOCKS туннели TCP байланышын алып жүрөт. Go ошол туннел аркылуу максат менен TLS жасай алат жана ал жерде HTTP/2 келише алат; SOCKS серверинин өзү HTTP/2 сүйлөшү шарт эмес.
Go'нун стандарттык демейки транспортун сактаган программада анын конфигурациясын клондоп, проксини тандаңыз:
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,
}
Прокси жана максат ар башка маанилер бойдон калат. Прокси мааниси үчүн SOCKS5 прокси тизмесинен SOCKS5 акыркы чекитин тандаңыз; HTTP/2 дагы эле максат менен келишилет. Чыныгы HTTPS кызматынын URL'in суроо үчүн client колдонуңуз, андан кийин жооптун денесин колдонмонун кадимки жашоо циклинен жабыңыз.
Стандарттык демейки транспорт HTTP/2 колдойт. Аны клондоо ошол конфигурацияны сактап, прокси тандоосун өзгөртүүгө мүмкүндүк берет. Тип текшерүү программа http.DefaultTransport'ту башка RoundTripper менен алмаштырбаган деп болжолдойт.
Өзүнчө курулган транспорт үчүн анын HTTP/2 конфигурациясын карап чыгыңыз, өзгөчө ыңгайлаштырылган dial же TLS илмектерин бергенде. Go ForceAttemptHTTP2'ни жана жаңы чыгарылыштарда бул тандоолор үчүн ачык Protocols конфигурациясын сунуштайт.
Максат дагы эле TLS келишими аркылуу HTTP/2 сунуштоого тийиш. Эмне колдонулганын көрүү үчүн ийгиликтүү жооптун Proto же ProtoMajor маанисин текшериңиз. SOCKS аркылуу ийгиликтүү HTTPS суроо өзү менен эле келишилген протокол HTTP/2 болгонун далилдебейт.