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}

Notið context, net/http og net/url; staðlaða tegundayfirlýsingin gerir ráð fyrir að þetta transport haldist uppsett. proxyURL er þáttað og observeConnect verður að vera öruggt með tilliti til samhliða keyrslu. Fyrir leyfðar opinberar HTTPS-prófanir veitir Listi yfir HTTP-proxy frambjóðendur fyrir það proxy URL.

Callbackið keyrir áður en CONNECT er athugað fyrir vel heppnuðu 200, svo það getur líka séð 407. Nil heldur venjulegu athuguninni áfram og samþykkir ekki hafnaða göngu; villa lætur beiðnina mistakast.

X-Proxy-Region er dæmi sem þjónustuveitandinn skilgreinir. Lesið stöðu og haus hér og látið eignarhald á body og socket vera hjá Transport, sem sér þá um TLS áfangastaðarins.

Þetta fylgist með uppsetningu nýrrar göngu, ekki hverri beiðni. Endurnýtt tenging hefur enga nýja CONNECT-svörun og svar vefsins hefur aðskilda hausa.

Tengdir greinar