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-ін сұрау үшін client пайдаланыңыз, содан кейін жауап денесін қолданбаның әдеттегі өмірлік циклі арқылы жабыңыз.

Стандартты әдепкі тасымалдағыш HTTP/2 қолдайды. Оны клондау сол конфигурацияны сақтай отырып, прокси таңдауын өзгертуге мүмкіндік береді. Типті тексеру бағдарлама http.DefaultTransport-ты басқа RoundTripper-мен ауыстырмаған деп болжайды.

Бөлек құрылған тасымалдағыш үшін оның HTTP/2 конфигурациясын қарап шығыңыз, әсіресе теңшелген dial немесе TLS ілмектерін бергенде. Go ForceAttemptHTTP2-ні және жаңа шығарылымдарда осы таңдаулар үшін айқын Protocols конфигурациясын ұсынады.

Мақсат әлі де TLS келісімі арқылы HTTP/2 ұсынуы керек. Не пайдаланылғанын көру үшін сәтті жауаптың Proto немесе ProtoMajor мәнін тексеріңіз. SOCKS арқылы сәтті HTTPS сұранысы келісілген протоколдың HTTP/2 болғанын өзінен-өзі дәлелдемейді.

Қатысты мақалалар