SOCKS tuneli bir TCP bağlantısını daşıyır. Go həmin tunel vasitəsilə təyinatla TLS edə və orada HTTP/2 razılaşdıra bilər; SOCKS serverinin özü HTTP/2 danışmalı deyil.

Go-nun standart standart nəqliyyatını saxlayan proqramda onun konfiqurasiyasını klonlayın və proksini seçin:

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,
}

Proksi və təyinat fərqli dəyərlər olaraq qalır. Proksi dəyəri üçün SOCKS5 proksi siyahısından SOCKS5 son nöqtəsi seçin; HTTP/2 yenə də təyinatla razılaşdırılır. Həqiqi HTTPS xidmət URL-ini istəmək üçün client-dən istifadə edin, sonra cavab gövdəsini tətbiqin adi həyat dövrü ilə bağlayın.

Standart standart nəqliyyat HTTP/2-ni dəstəkləyir. Onu klonlamaq bu konfiqurasiyanı saxlayır və eyni zamanda proksi seçiminin dəyişməsinə imkan verir. Tip iddiası proqramın http.DefaultTransport-u başqa RoundTripper ilə əvəz etmədiyini güman edir.

Ayrıca qurulmuş nəqliyyat üçün onun HTTP/2 konfiqurasiyasını nəzərdən keçirin, xüsusən fərdi dial və ya TLS qarmaqları təqdim edərkən. Go ForceAttemptHTTP2-ni və daha yeni buraxılışlarda bu seçimlər üçün açıq Protocols konfiqurasiyasını təqdim edir.

Təyinat hələ də TLS razılaşması vasitəsilə HTTP/2 təklif etməlidir. Nəyin istifadə olunduğunu görmək üçün uğurlu cavabın Proto və ya ProtoMajor dəyərini yoxlayın. SOCKS vasitəsilə uğurlu HTTPS sorğusu özlüyündə razılaşdırılmış protokolun HTTP/2 olduğunu təsdiqləmir.

Əlaqəli məqalələr