在使用golang進行網路請求時,有時需要透過代理程式來存取目標網站。下面我們介紹如何在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)) }
其中http. 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)) }
其中InsecureSkipVerify
參數用於跳過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
可以指定socks5代理程式位址,httpClient.Get()
可以發起網路請求。
設定代理程式也是網路程式設計中很重要的一部分,學習後可以更好的應對實際情況。
以上是golang 怎麼設定代理的詳細內容。更多資訊請關注PHP中文網其他相關文章!