Observi la CONNECT-statuson de Go en OnProxyConnectResponse
Instalu la hokon sur la transporto antaŭ petoj; redoni nil konservas ĝian normalan kontrolon de tunela statuso.
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}Uzu context, net/http kaj net/url; la norma tipaserto supozas, ke tiu transporto restas instalita. proxyURL estas analizata, kaj observeConnect devas esti sekura ĉe samtempeco. Por permesitaj publikaj HTTPS-provoj, Listo de HTTP-proksejoj provizas kandidatojn por tiu proksea URL.
La reago funkcias antaŭ ol kontroli CONNECT por sukcesa 200, do ĝi povas observi ankaŭ 407. Nil daŭrigas la normalan kontrolon kaj ne akceptas malakceptitan tunelon; eraro malsukcesigas la peton.
X-Proxy-Region estas provizanto-difinita ekzemplo. Legu statuson kaj kapliniojn ĉi tie kaj lasu la posedon de korpo kaj ingo al Transport, kiu poste traktas la TLS de la celo.
Ĉi tio observas novan tunelan starigon, ne ĉiun peton. Reuzita konekto ne havas novan CONNECT-respondon, kaj la respondo de la retejo havas apartajn kapliniojn.