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}

Yi amfani da context, net/http da net/url; tabbatar da nau'in da ya saba yana ɗauka cewa wannan transport ɗin ya kasance a shigar. Ana nazarin proxyURL, kuma observeConnect dole ne ya kasance mai aminci ga aiki tare. Don halaltattun gwaje-gwajen HTTPS na jama'a, Jerin proxy na HTTP yana ba da 'yan takara ga wannan proxy URL.

Callback ɗin yana gudana kafin a duba CONNECT don nasarar 200, don haka yana iya lura da 407 ma. Nil yana ci gaba da binciken yau da kullum kuma baya karɓar tunnel da aka ƙi; kuskure yana sa buƙatar ta kasa.

X-Proxy-Region misali ne da mai bayarwa ya ayyana. Karanta matsayi da kai a nan kuma bar mallakar jiki da socket ga Transport, wanda zai yi TLS na manufa.

Wannan yana lura da sabon tsarin tunnel, ba kowace buƙata ba. Haɗin da aka sake amfani da shi ba shi da sabon amsar CONNECT, kuma amsar gidan yanar gizon tana da kai daban.

Labarai masu alaƙa