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 болгонун далилдебейт.

Тектеш макалалар