OnProxyConnectResponse ичинде Go CONNECT статусун байкоо
Хукту сурамдардан мурун transportко орнотуңуз; nil кайтаруу анын кадимки туннель статусун текшерүүсүн сактайт.
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 жообу жок, ал эми веб-сайттын жообунун аталыштары өзүнчө.