servefile net make golang body http proxy request go

net - Configuración del proxy para el cliente HTTP



golang reverse proxy (4)

Estoy tratando de configurar el cliente HTTP para que use un proxy, sin embargo, no puedo entender cómo hacerlo. La documentación tiene múltiples referencias a "proxy" pero ninguna de las funciones parece permitir definir el proxy. Lo que necesito es algo como esto:

client := &http.Client{} client.SetProxy("someip:someport") // pseudo code resp, err := client.Get("http://example.com") // do request through proxy

¿Alguna idea de cómo hacer esto en Go?


De forma alternativa, también puede usar GoRequest que tiene una función que le permite configurar el proxy fácilmente para cualquier solicitud individual.

request := gorequest.New() resp, body, errs:= request.Proxy("http://proxy:999").Get("http://example.com").End() resp2, body2, errs2 := request.Proxy("http://proxy2:999").Get("http://example2.com").End()

O puede establecer para el todo a la vez.

request := gorequest.New().Proxy("http://proxy:999") resp, body, errs:= request.Get("http://example.com").End() resp2, body2, errs2 := request.Get("http://example2.com").End()


Go usará el proxy definido en la variable de entorno HTTP_PROXY si está configurado. De lo contrario, no usará ningún proxy.

Podrías hacerlo así:

os.Setenv("HTTP_PROXY", "http://someip:someport") resp, err := http.Get("http://example.com") if err != nil { panic(err) }


Puede que también intentes esto:

url_i := url.URL{} url_proxy, _ := url_i.Parse(proxy_addr) transport := http.Transport{} transport.Proxy = http.ProxyURL(url_proxy)// set proxy transport.TLSClientConfig = &tls.Config{InsecureSkipVerify: true} //set ssl client := &http.Client{} client.Transport = transport resp, err := client.Get("http://example.com") // do request through proxy


lukad es correcto, puede establecer la variable de entorno HTTP_PROXY , si lo hace, Go lo usará de manera predeterminada.

Intento:

export HTTP_PROXY="http://proxyIp:proxyPort"

Ir:

os.Setenv("HTTP_PROXY", "http://proxyIp:proxyPort")

También podría construir su propio http.Client que DEBE usar un proxy independientemente de la configuración del entorno:

proxyUrl, err := url.Parse("http://proxyIp:proxyPort") myClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}}

Esto es útil si no puede depender de la configuración del entorno o si no desea modificarlo.

También puede modificar el transporte predeterminado utilizado por el paquete " net/http ". Esto afectaría a su programa completo (incluido el cliente HTTP predeterminado).

proxyUrl, err := url.Parse("http://proxyIp:proxyPort") http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyUrl)}