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}

Օգտագործեք context, net/http և net/url; ստանդարտ տիպի պնդումը ենթադրում է, որ այդ transport-ը մնում է տեղադրված։ proxyURL վերլուծվում է, և observeConnect պետք է լինի զուգահեռության համար անվտանգ։ Թույլատրված հանրային HTTPS փորձարկումների համար HTTP պրոքսի ցանկ-ը տրամադրում է թեկնածուներ այդ proxy URL-ի համար։

Callback-ը գործարկվում է նախքան CONNECT-ի ստուգումը հաջող 200-ի համար, ուստի այն կարող է դիտարկել նաև 407։ Nil-ը շարունակում է սովորական ստուգումը և չի ընդունում մերժված թունել; սխալը ձախողում է հարցումը։

X-Proxy-Region մատակարարի կողմից սահմանված օրինակ է։ Կարդացեք կարգավիճակը և վերնագրերը այստեղ, իսկ մարմնի և socket-ի սեփականությունը թողեք Transport-ին, որն այնուհետև զբաղվում է նպատակակետի TLS-ով։

Սա դիտարկում է նոր թունելի ստեղծումը, ոչ թե յուրաքանչյուր հարցում։ Վերօգտագործված կապը նոր CONNECT պատասխան չունի, իսկ կայքի պատասխանն ունի առանձին վերնագրեր։

Առնչվող հոդվածներ