es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando proxies con net/http en GO

Estoy tratando de usar proxies con el paquete net/http. Mi proxy es un proxy rotativo con un nombre de usuario, contraseña, dirección de proxy y un puerto.
Intenté configurarlo como una variable de entorno usando os.setEnv() así como agregándolo en mis variables de entorno de Windows 10, pero resulta que tal vez Windows no admite proxies autenticados por usuario y contraseña.
También intenté el método de transporte http pero no pude hacer que funcionara.

go
func SetProxy() *http.Client {
cfg := GetConfig()
if cfg.UseProxy {
proxyUrl, err := url.Parse(“http://” + cfg.Proxy)
if err != nil {
panic(err)
}
myClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl)}}
return myClient
}
return &http.Client{}
}

¡Por favor, si alguien pudiera señalarme un tutorial o alguna documentación para usar proxies específicamente con autenticación de usuario y contraseña!

Nota: Usé este formato en todas partes: nombredeusuario:contraseña@direcciondeproxy:puerto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puede utilizar la opción “ProxyAuth” en la estructura “http.Transport” para establecer las credenciales de autenticación del proxy. El siguiente ejemplo muestra cómo establecer un proxy con nombre de usuario y contraseña:

    func SetProxy() *http.Client {
        cfg := GetConfig()
        if cfg.UseProxy {
            proxyUrl, err := url.Parse("http://" + cfg.Proxy)
            if err != nil {
                panic(err)
            }
            myClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(proxyUrl), ProxyAuth: &ProxyAuth{User: cfg.Username, Password: cfg.Password}}}
            return myClient
        }
        return &http.Client{}
    }
    

    Puede encontrar más información sobre la opción “ProxyAuth” en la documentación de Go.

Comments are closed.