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}

Brûk context, net/http en net/url; de standert type-bewearing giet derfan út dat dat transport ynstallearre bliuwt. proxyURL wurdt parse, en observeConnect moat feilich wêze by gearstalling. Foar tastiene iepenbiere HTTPS-proeven leveret List fan HTTP-proxy's kandidaten foar dy proxy-URL.

De callback rint foardat CONNECT kontrolearre wurdt op suksesfolle 200, dus it kin ek 407 observearje. Nil set de normale kontrôle fuort en akseptearret gjin wegere tunnel; in flater lit it fersyk mislearje.

X-Proxy-Region is in foarbyld dat de oanbieder definiearret. Lês hjir status en headers en lit it eigendom fan body en socket by Transport, dat dan de TLS fan 'e bestimming ôfhannelet.

Dit observearret nije tunnelopset, net elk fersyk. In werbrûkte ferbining hat gjin nije CONNECT-antwurd, en de antwurd fan 'e webside hat aparte headers.

Relatearre artikelen