Overvak Go sin CONNECT-status i OnProxyConnectResponse
Installer kroken på transporten før førespurnader; å returnere nil bevarer den normale kontrollen av tunnelstatus.
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}Bruk context, net/http og net/url; standard typepåstand går ut frå at denne transporten blir verande installert. proxyURL blir parsa, og observeConnect må vere trygg med samtidigheit. For tillatne offentlege HTTPS-prøver leverer Liste over HTTP-proxyar kandidatar for den proxy-URL-en.
Callbacken køyrer før CONNECT blir sjekka for vellukka 200, så han kan også observere 407. Nil held fram den normale sjekken og godtek ikkje ein avvist tunnel; ein feil gjer at førespurnaden mislukkast.
X-Proxy-Region er eit døme definert av leverandøren. Les status og headers her, og la eigarskapen til body og socket bli hos Transport, som deretter handterer TLS-en til destinasjonen.
Dette observerer oppsett av ein ny tunnel, ikkje kvar førespurnad. Ei gjenbrukt tilkobling har ingen ny CONNECT-respons, og responsen til nettstaden har separate headers.