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 تىزىملىكى شۇ proxy URL ئۈچۈن نامزاتلارنى تەمىنلەيدۇ.

Callback CONNECT نىڭ مۇۋەپپەقىيەتلىك 200 ئىكەنلىكىنى تەكشۈرۈشتىن بۇرۇن ئىجرا بولىدۇ، شۇڭا 407 نىمۇ كۆزىتەلەيدۇ. Nil نورمال تەكشۈرۈشنى داۋاملاشتۇرىدۇ ۋە رەت قىلىنغان تونېلنى قوبۇل قىلمايدۇ؛ خاتالىق ئىلتىماسنى مەغلۇپ قىلىدۇ.

X-Proxy-Region تەمىنلىگۈچى بەلگىلىگەن مىسال. بۇ يەردە ھالەت ۋە headers نى ئوقۇڭ، body ۋە socket ئىگىلىك ھوقۇقىنى Transport قا قالدۇرۇڭ، ئۇ ئاندىن نىشان TLS نى بىر تەرەپ قىلىدۇ.

بۇ يېڭى تونېل قۇرۇلۇشىنى كۆزىتىدۇ، ھەر بىر ئىلتىماسنى ئەمەس. قايتا ئىشلىتىلگەن ئۇلىنىشتا يېڭى CONNECT ئىنكاسى بولمايدۇ، تور بېكەت ئىنكاسىنىڭ headers لىرى ئايرىم.

مۇناسىۋەتلىك ماقالىلەر