绕过代理

时间:2018-05-03 10:33:13

标签: go proxy

如何绕过(忽略代理并使用否)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。那么如何忽略我的代理?

1 个答案:

答案 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变量,有时候不会。