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 нь очих газартай хэлэлцэгдсэн хэвээр байна. Бодит HTTPS үйлчилгээний URL-ийг хүсэхийн тулд client ашиглаад, дараа нь хариултын биеийг програмын ердийн амьдралын мөчлөгөөр хаа.
Стандарт өгөгдмөл тээвар HTTP/2-ыг дэмждэг. Үүнийг хуулбарласнаар тохиргоо хадгалагдаж, прокси сонголтыг өөрчлөх боломжтой. Төрөл шалгалт нь програм http.DefaultTransport-ыг өөр RoundTripper-ээр солиогүй гэж үздэг.
Тусдаа бүтээсэн тээврийн хувьд түүний HTTP/2 тохиргоог, ялангуяа өөрчилсөн dial эсвэл TLS дэгээ өгөх үед хянана уу. Go нь ForceAttemptHTTP2-ыг, шинэ хувилбаруудад эдгээр сонголтод зориулсан тодорхой Protocols тохиргоог ил гаргадаг.
Очих газар нь TLS хэлэлцээрээр HTTP/2 санал болгох ёстой хэвээр. Юу ашигласныг харахын тулд амжилттай хариултын Proto эсвэл ProtoMajor утгыг шалгана уу. SOCKS-оор амжилттай болсон HTTPS хүсэлт нь хэлэлцсэн протокол HTTP/2 байсныг өөрөө батлахгүй.