Go'nun CONNECT durumunu OnProxyConnectResponse içinde izleyin
Kancayı isteklerden önce transport'a kurun; nil döndürmek normal tünel durumu denetimini korur.
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 ve net/url kullanın; standart tür iddiası bu transport'un kurulu kaldığını varsayar. proxyURL ayrıştırılır ve observeConnect eşzamanlılık açısından güvenli olmalıdır. İzin verilen genel HTTPS denemeleri için HTTP proxy listesi o proxy URL'si için adaylar sağlar.
Geri çağırma, CONNECT'in başarılı 200 olup olmadığı denetlenmeden önce çalışır, bu yüzden 407'yi de gözlemleyebilir. Nil normal denetimi sürdürür ve reddedilen bir tüneli kabul etmez; bir hata isteği başarısız kılar.
X-Proxy-Region sağlayıcı tarafından tanımlanan bir örnektir. Durumu ve başlıkları burada okuyun, gövde ve socket sahipliğini Transport'a bırakın; Transport daha sonra hedef TLS'ini yönetir.
Bu, her isteği değil yeni tünel kurulumunu gözlemler. Yeniden kullanılan bir bağlantının yeni CONNECT yanıtı yoktur ve web sitesi yanıtının başlıkları ayrıdır.