HTTP/2 د Go د SOCKS تونل په داخل کې ځای پر ځای کېږي
د HTTP معیاري لېږد کاپي کړئ، SOCKS پراکسي وټاکئ او هغه منزل پروتوکول وګورئ چې واقعاً پرې خبرې شوې دي.
د 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 لا هم له منزل سره خبرې کېږي. client وکاروئ ترڅو د HTTPS خدمت ریښتینی URL وغواړئ، بیا د غوښتنلیک د عادي ژوند دورې له لارې د ځواب بدن بند کړئ.
معیاري اصلي لېږد HTTP/2 ملاتړ کوي. د هغې کاپي کول هغه ترتیبات ساتي او د پراکسي ټاکلو بدلون ته اجازه ورکوي. د ډول ازموینه فرض کوي چې پروګرام http.DefaultTransport له بل RoundTripper سره نه دی بدل کړی.
د جلا جوړ شوي لېږد لپاره، د هغې HTTP/2 ترتیبات وګورئ، په ځانګړې توګه کله چې دودیز dial یا TLS هنګونه برابروئ. Go ForceAttemptHTTP2 او په نویو خپرونو کې د هغو ټاکنو لپاره روښانه Protocols ترتیبات ښیي.
منزل باید لا هم د TLS خبرو له لارې HTTP/2 وړاندې کړي. د بریالي ځواب Proto یا ProtoMajor ارزښت وګورئ ترڅو وګورئ څه کارول شوي. د SOCKS له لارې بریالۍ HTTPS غوښتنه پخپله ثابتوي نه چې خبرې شوی پروتوکول HTTP/2 و.