Tunnel-ka SOCKS waxa uu qaadaa isku-xidhka TCP. Go waxa uu TLS kula samayn karaa meesha loo socdo tunnel-kaas dhexdiisa oo uu halkaas kaga wada hadli karaa HTTP/2; server-ka SOCKS laftiisu uma baahna inuu ku hadlo HTTP/2.

Barnaamij haysta geynta caadiga ah ee Go, koobi habayntiisa oo dooro proxy-ga:

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

Proxy-ga iyo meesha loo socdo waxay sii ahaanayaan qiyam kala duwan. Dooro barta SOCKS5 ee liiska proxy-yada SOCKS5 ee qiimaha proxy-ga; HTTP/2 wali waxa laga wada hadlaa meesha loo socdo. Isticmaal client si aad u codsato URL-ka dhabta ah ee adeegga HTTPS, ka dibna xir jirka jawaabta iyada oo loo marayo wareegga nolosha caadiga ah ee barnaamijka.

Geynta caadiga ah waxa ay taageertaa HTTP/2. Koobiyadeeda waxa ay hayaan habayntaas iyada oo u oggolaanaysa doorashada proxy-ga in ay is beddesho. Hubinta nooca waxa ay u qaadataa in barnaamijku uusan http.DefaultTransport ku beddelin RoundTripper kale.

Geynta si gooni ah loo dhisay, dib u eeg habaynteeda HTTP/2, gaar ahaan marka aad bixiso jillaabyo dial ama TLS gaar ah. Go waxa uu soo bandhigaa ForceAttemptHTTP2 iyo, daabacaadaha cusub, habaynta Protocols cad ee doorashooyinkaas.

Meesha loo socdo wali waa in ay bixiso HTTP/2 iyada oo loo marayo wada-hadal TLS. Baar qiimaha Proto ama ProtoMajor ee jawaabta guulaysatay si aad u aragto waxa la isticmaalay. Codsi HTTPS oo ku guulaysta SOCKS laftiisu ma caddeeyo in borotokoolka laga wada hadlay uu ahaa HTTP/2.

Maqaallo la xiriira