Opazujte status CONNECT v Go v OnProxyConnectResponse
Namestite kavelj na transport pred zahtevami; vračanje nil ohrani običajno preverjanje statusa tunela.
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
transport.OnProxyConnectResponse = func(
_ context.Context,
_ *url.URL,
_ *http.Request,
response *http.Response,
) error {
observeConnect(response.StatusCode, response.Header.Get("X-Proxy-Region"))
return nil
}
client := &http.Client{Transport: transport}Uporabite context, net/http in net/url; standardna tipska trditev predpostavlja, da ta transport ostane nameščen. proxyURL se razčleni, observeConnect pa mora biti varen glede sočasnosti. Za dovoljene javne preskuse HTTPS Seznam proxy strežnikov HTTP zagotavlja kandidate za ta proxy URL.
Povratni klic se izvede pred preverjanjem CONNECT za uspešen 200, zato lahko opazuje tudi 407. Nil nadaljuje običajno preverjanje in ne sprejme zavrnjenega tunela; napaka povzroči neuspeh zahteve.
X-Proxy-Region je primer, ki ga določi ponudnik. Tukaj preberite status in glave, lastništvo nad telesom in vtičnico pa prepustite Transportu, ki nato obdela TLS cilja.
To opazuje vzpostavitev novega tunela, ne vsake zahteve. Ponovno uporabljena povezava nima novega odgovora CONNECT, odgovor spletnega mesta pa ima ločene glave.