Search code examples
httpgohttp-proxy

Connect to server through proxy


I want to connect to a server through proxy server that I have. I am searching for something that is similar to Python's HTTPConnection.set_tunnel, is there something like this in golang?

----edit-----

I'm trying to create a connection to a server that allows self signed certificates & transfers through proxy, will this code work properly?

func CreateProxyClient(serverProxy string, sid string, portProxy int) (*Client, error) {
    http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}

    proxyUrl, _ := url.Parse(serverProxy+":"+strconv.Itoa(portProxy))
    tr := &http.Transport{
        Proxy: http.ProxyURL(proxyUrl),
    }
    var netClient = &http.Client{
        Timeout: time.Second * 10,
        Transport: tr,
    }
    return &Client{netClient, serverProxy, sid}, nil
}

Solution

  • You can set environment variable HTTP_PROXY for HTTP or HTTPS_PROXY for HTTPS so the default http transport will use it.

    Also as an alternative you can create http.Transport by yourself with Proxy field set to http.ProxyURL function call or use you custom implementation.

    Example:

    proxyURL, _ := url.Parse("http://proxy.example.com:port")
    http.DefaultTransport = &http.Transport{
        Proxy: http.ProxyURL(proxyURL),
    }
    // request using proxy
    resp, _ := http.Get("https://google.com"))