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}

Benotzt context, net/http an net/url; d'Standard-Typausso geet dovun aus, datt dësen Transport installéiert bleift. proxyURL gëtt geparst, an observeConnect muss concurrentsécher sinn. Fir erlaabt ëffentlech HTTPS-Tester liwwert Lëscht vun HTTP-Proxien Kandidaten fir dës Proxy-URL.

De Callback leeft ier CONNECT op e erfëllte 200 geprüft gëtt, dofir kann en och 407 observéieren. Nil setzt déi normal Prüfung fort an akzeptéiert keen ofgeleenten Tunnel; e Feeler léisst d'Ufro feelen.

X-Proxy-Region ass e Beispill, dat vum Fournisseur definéiert gëtt. Liest hei Status an Header a loosst d'Eegentum vu Body a Socket beim Transport, deen dann den TLS vum Zil iwwerhëlt.

Dëst observéiert den Opbau vun engem neien Tunnel, net all Ufro. Eng erëmbenotzt Verbindung huet keng nei CONNECT-Antwert, an d'Antwert vun der Websäit huet separat Header.

Ähnlech Artikelen