Обход http_proxy в Golang

У меня есть переменная env, установленная для http_proxy, но с другим вызовом мне нравится обходить прокси и вместо этого использовать прямое подключение к целевому серверу.

Есть ли способ сделать это в Go lang?

Спасибо.


person artofabhishek    schedule 31.05.2017    source источник
comment
Просто не используйте http.DefaultTransport: см. https://golang.org/pkg/net/http/#RoundTripper   -  person Volker    schedule 31.05.2017
comment
круто спасибо Волкер.   -  person artofabhishek    schedule 01.06.2017


Ответы (3)


Как упоминал @Volker, вы можете:

  • Используйте свой собственный RoundTripper вместо DefaultTransport
  • Измените DefaultTransport.Proxy, чтобы вернуть nil для рассматриваемого запроса.
  • Если вызов, с которым вы хотите игнорировать прокси, относится к определенному хосту, и вы всегда хотите игнорировать прокси для вызовов на этот хост, добавьте хост в список NO_PROXY переменная среды
person Adrian    schedule 31.05.2017

вот что я сделал:

var defaultTransport http.RoundTripper = &http.Transport{
    Proxy: nil,
    DialContext: (&net.Dialer{
        Timeout:   10 * time.Second,
        KeepAlive: 30 * time.Second,
        DualStack: true,
    }).DialContext,
    MaxIdleConns:          30,
    IdleConnTimeout:       90 * time.Second,
    TLSHandshakeTimeout:   15 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}

client := &http.Client{Transport: defaultTransport}
person artofabhishek    schedule 31.05.2017

У меня была эта проблема с корпоративным прокси, даже отключил URL-адрес прокси, который он использовал, это было мое решение

var defaultTtransport http.RoundTripper = &http.Transport{Proxy: nil}
client := &http.Client{Transport: defaultTtransport}
person Luis    schedule 12.11.2019