I-HTTP/2 ingena ngaphakathi komhubhe we-SOCKS we-Go
Kopisha ukuthutha kwe-HTTP okujwayelekile, khetha i-SOCKS proxy bese uhlola iphrothokholi yendawo okuyiwa kuyo okwaxoxiswana ngayo.
Umhubhe we-SOCKS uthwala ukuxhumana kwe-TCP. I-Go ingenza i-TLS nendawo okuyiwa kuyo ngokusebenzisa lowo mhubhe futhi ixoxisane nge-HTTP/2 lapho; iseva ye-SOCKS uqobo ayidingi ukukhuluma i-HTTP/2.
Ohlelweni olugcina ukuthutha okuzenzakalelayo okujwayelekile kwe-Go, kopisha ukulungiselelwa kwayo bese ukhetha i-proxy:
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,
}
I-proxy nendawo okuyiwa kuyo kuhlala kungamanani ahlukene. Khetha iphoyinti lokugcina le-SOCKS5 kusuka kuhlu lwe-SOCKS5 proxy ngenani le-proxy; i-HTTP/2 isaxoxiswana ngayo nendawo okuyiwa kuyo. Sebenzisa i-client ukucela i-URL yangempela yesevisi ye-HTTPS, bese uvale umzimba wempendulo ngomjikelezo wempilo ojwayelekile wohlelo.
Ukuthutha okuzenzakalelayo okujwayelekile kusekela i-HTTP/2. Ukukukopisha kwayo kugcina lokho kulungiselelwa kuyilapho kuvumela ukuthi ukukhetha kwe-proxy kushintshe. Ukuhlola kohlobo kucabanga ukuthi uhlelo alukashintshi i-http.DefaultTransport nge-RoundTripper enye.
Kokuthutha okwakhiwe ngokwehlukile, buyekeza ukulungiselelwa kwayo kwe-HTTP/2, ikakhulukazi lapho unikeza ama-dial noma ama-TLS hook enziwe ngokwezifiso. I-Go iveza i-ForceAttemptHTTP2 futhi, ezinguqulweni ezintsha, ukulungiselelwa kwe-Protocols okucacile kulokho kukhetha.
Indawo okuyiwa kuyo kusafanele inikeze i-HTTP/2 ngokuxoxisana kwe-TLS. Hlola inani le-Proto noma le-ProtoMajor lempendulo ephumelelayo ukuze ubone ukuthi kusetshenziswe ini. Isicelo se-HTTPS esiphumelela nge-SOCKS asikufakazeli ngokwaso ukuthi iphrothokholi okwaxoxiswana ngayo kwakuyi-HTTP/2.