Vëzhgo statusin CONNECT të Go në OnProxyConnectResponse
Instalo grepin në transport përpara kërkesave; kthimi i nil ruan kontrollin normal të statusit të tunelit.
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}Përdor context, net/http dhe net/url; pohimi standard i tipit supozon se ai transport mbetet i instaluar. proxyURL analizohet, dhe observeConnect duhet të jetë i sigurt ndaj konkurrencës. Për provat publike HTTPS të lejuara, Lista e proxy-ve HTTP ofron kandidatë për atë URL proxy.
Callback ekzekutohet përpara kontrollit të CONNECT për një 200 të suksesshëm, kështu që mund të vëzhgojë edhe 407. Nil vazhdon kontrollin normal dhe nuk pranon një tunel të refuzuar; një gabim dështon kërkesën.
X-Proxy-Region është një shembull i përcaktuar nga ofruesi. Lexo statusin dhe header-at këtu dhe lëre pronësinë e trupit dhe socket-it te Transport, i cili më pas trajton TLS-në e destinacionit.
Kjo vëzhgon vendosjen e një tuneli të ri, jo çdo kërkesë. Një lidhje e ripërdorur nuk ka përgjigje të re CONNECT, dhe përgjigja e faqes ka header-a të veçantë.