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}

Gamitin ang context, net/http at net/url; ipinapalagay ng standard na type assertion na nananatiling naka-install ang transport na iyon. Sinusuri ang proxyURL, at dapat na concurrency-safe ang observeConnect. Para sa pinapayagang pampublikong HTTPS probe, nagbibigay ang Listahan ng HTTP proxy ng mga kandidato para sa proxy URL na iyon.

Tumakbo ang callback bago suriin ang CONNECT para sa matagumpay na 200, kaya maaari rin nitong maobserbahan ang 407. Ipinagpapatuloy ng nil ang normal na pagsusuri at hindi tinatanggap ang tinanggihang tunnel; nabibigo ng error ang kahilingan.

X-Proxy-Region ay isang halimbawang tinukoy ng provider. Basahin dito ang status at headers at ipaubaya ang pagmamay-ari ng body at socket sa Transport, na pagkatapos ay humahawak sa TLS ng destinasyon.

Inoobserbahan nito ang pag-set up ng bagong tunnel, hindi bawat kahilingan. Walang bagong CONNECT response ang muling ginamit na koneksyon, at may hiwalay na headers ang response ng website.

Kaugnay na mga artikulo