HTTP/2 Go-nun SOCKS tuneli içərisində işləyir
Standart HTTP nəqliyyatını klonlayın, SOCKS proksisini seçin və həqiqətən razılaşdırılmış təyinat protokolunu yoxlayın.
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.