在使用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") 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("www.baidu") 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") 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 怎么设置代理的详细内容,更多请关注易企推科技其它相关文章!
本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/1150883.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!