golang を使用してネットワーク リクエストを行う場合、プロキシ経由でターゲット Web サイトにアクセスする必要がある場合があります。以下では、golang でプロキシを設定する方法を紹介します。
http プロキシを使用すると、http 要求にアクセスするときにプロキシを自動的に使用します。コードは次のとおりです:
func main() { proxyUrl, _ := url.Parse("http://127.0.0.1:8080") client := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(proxyUrl), }, } resp, err := client.Get("http://www.baidu.com") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) }
wherehttp.ProxyURL(proxyUrl)
はプロキシ アドレスを指定でき、client.Get()
はネットワーク リクエストを開始できます。
http リクエストと https リクエストに同時にアクセスする必要がある場合は、次のコードを使用できます:
func main() { proxyUrl, _ := url.Parse("http://127.0.0.1:8080") client := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyURL(proxyUrl), TLSClientConfig: &tls.Config{ InsecureSkipVerify: true, }, }, } resp, err := client.Get("https://www.baidu.com") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) }
whereInsecureSkipVerify
パラメータは、https 証明書の検証をスキップするために使用されます。
socks5 プロキシを使用すると、セキュリティや匿名性の向上など、多くの利点があります。コードは次のとおりです。
func main() { dialer, err := proxy.SOCKS5("tcp", "127.0.0.1:1080", nil, proxy.Direct) if err != nil { fmt.Println(err) return } httpClient := &http.Client{Transport: &http.Transport{Dial: dialer.Dial}} resp, err := httpClient.Get("http://www.google.com") if err != nil { fmt.Println(err) return } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) }
このうち、proxy.SOCKS5
は sock5 プロキシ アドレスを指定でき、httpClient.Get()
はネットワーク リクエストを開始できます。
エージェントのセットアップもネットワーク プログラミングの重要な部分であり、学習後は実際の状況にうまく対処できるようになります。
以上がGolangでプロキシを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。