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}

Sebenzisa context, net/http ne-net/url; isimemezelo sohlobo olujwayelekile sicabanga ukuthi leyo transport ihlala ifakiwe. proxyURL iyahlaziywa, futhi observeConnect kufanele iphephe mayelana nokusebenza ngesikhathi esisodwa. Ezivivinyweni zomphakathi ze-HTTPS ezivunyelwe, Uhlu lwama-proxy e-HTTP ihlinzeka ngabangeneleli be-proxy URL leyo.

I-callback isebenza ngaphambi kokuhlola i-CONNECT ukuthi ingu-200 ophumelelayo, ngakho ingabona futhi u-407. I-nil iqhubeka nokuhlola okuvamile futhi ayamukeli i-tunnel enqatshiwe; iphutha lenza isicelo sehluleke.

X-Proxy-Region isibonelo esichazwe umhlinzeki. Funda isimo nama-headers lapha bese ushiya ubunikazi be-body ne-socket ku-Transport, esebe isibhekana ne-TLS yendawo ekuyiwa kuyo.

Lokhu kubheka ukusungulwa kwe-tunnel entsha, hhayi isicelo ngasinye. Ukuxhumana okusetshenziswe kabusha akunayo i-CONNECT response entsha, futhi i-response yewebhusayithi inama-headers ahlukene.

Izihloko ezihlobene