taketiyo.log

Web Engineering 🛠 & Body Building 💪

【Golang】http.ClientにてProxyを設定する

Programming

  / / /

net/httpパッケージのhttp.Clientを利用する際にプロキシを経由するように設定する方法を解説します。
 

目次

 

環境変数に設定する方法

net/httpパッケージのhttp.Clientは、環境変数HTTP_PROXYが設定されている場合、その値をプロキシとして利用します。

例)

export HTTP_PROXY="http://user:pass@proxy.example.com:9999"

 
Golang側で動的に環境変数をセットする場合は下記の通りです。

os.Setenv("HTTP_PROXY", "http://user:pass@proxy.example.com:9999")

 

http.Clientの初期化時に設定する方法

環境変数経由でなく、http.Clientのインスタンスに設定する事も可能です。

例)

proxyUrl, err := url.Parse("http://user:pass@proxy.example.com:9999")
if err == nil {
    client = &http.Client{
        Transport: &http.Transport{
            Proxy: http.ProxyURL(proxyUrl),
        },
    }
}

 

net/httpパッケージ自体に適用する方法

この方法を利用すると、そのプロジェクト全体でnet/httphttp.Clientを用いた通信処理が全てプロキシ経由となります。

proxyUrl, err := url.Parse("http://user:pass@proxy.example.com:9999")
http.DefaultTransport = &http.Transport{
    Proxy: http.ProxyURL(proxyUrl)
}