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; стандардна тврдња типа претпоставља да тај транспорт остаје инсталиран. proxyURL се парсира, а observeConnect мора бити безбедан за паралелан рад. За дозвољене јавне HTTPS пробе, Листа HTTP прокси сервера даје кандидате за тај proxy URL.

Повратни позив се извршава пре провере CONNECT-а на успешан 200, па може приметити и 407. Nil наставља уобичајену проверу и не прихвата одбијени тунел; грешка обара захтев.

X-Proxy-Region је пример који дефинише провајдер. Читајте статус и заглавља овде, а власништво над телом и socket-ом оставите Transport-у, који затим обрађује TLS одредишта.

Ово прати успостављање новог тунела, не сваки захтев. Поново коришћена веза нема нови CONNECT одговор, а одговор веб странице има засебна заглавља.

Повезани чланци