如何绕过(忽略代理并使用否)Go中的代理?
我想要卷曲或http.Get到网站并检查响应代码。
我有这个:
os.Setenv("HTTPS_PROXY", "")
os.Setenv("HTTP_PROXY", "")
//Make Request and Check for Response
resp, err := http.Get("http://interneIP:80")
if err != nil {
log.Fatal(err)
}
fmt.Println("HTTP Response Code : " + strconv.Itoa(resp.StatusCode))
if resp.StatusCode != 200 {
fmt.Println("Not OK")
} else {
fmt.Println("HTTP OK")
}
但是Setenv无法解析并且使用其他方法我得到相同的错误,无法解析为url。那么如何忽略我的代理?
答案 0 :(得分:1)
你可以创建自己的http roundtripper传输,你可以看到从env vars拉入代理的roundtripper,当你想绕过时你必须将它设置为nil:
https://golang.org/pkg/net/http/#RoundTripper
以下是自定义http客户端设置的示例: https://blog.abhi.host/blog/2016/02/27/golang-creating-https-connection-via/
默认传输文档还提到您可以使用NO_PROXY env var从默认代理中排除特定的URL /域,这可能适用于您的用例,例如。
NO_PROXY =" * aventail.com,home.com,.seanet.com"
我猜想在任何情况下你都需要在创建客户端之前设置env变量,所以如果你想有时使用代理,有时候只使两个客户使用不同的env变量,有时候不会。