go - 我如何验证用户 :pass proxy in golang

标签 go proxy request proxy-authentication

我正在尝试在 golang 的请求中使用用户:传递代理,当我运行它时,我得到了“需要代理身份验证”
这是我的代码:

var ip string = "123.45.67.890:54400:user:pass"

func main() {

    proxy := "http://" + ip
    proxyURL, err := url.Parse(proxy)
    if err != nil {
        log.Fatal(err)
    }

    urlStr := site
    url, err := url.Parse(urlStr)
    if err != nil {
        log.Fatal(err)
    }

    transport := &http.Transport{
        Proxy: http.ProxyURL(proxyURL),
    }

    jar, _ := cookiejar.New(nil)

    client := &http.Client{
        Jar:       jar,
        Transport: transport,
    }

    req, _ := http.NewRequest("GET", url.String(), nil)
    if err != nil {
        log.Fatal(err)
    }

    auth := "johndoe2x:johndoe2x"
    basicAuth := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))
    req.Header.Add("Proxy-Authorization", basicAuth)
    req.Header.Add("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9")
    req.Header.Add("accept-language", "en-US,en;q=0.9")
    req.Header.Add("upgrade-insecure-requests", "1")
    req.Header.Add("user-agent", userAgent)

    res, err := client.Do(req)
    if err != nil {
        log.Fatal(err)
    }

    log.Println("statusCode:", res.StatusCode)
    
    data, err := ioutil.ReadAll(res.Body)
    if err != nil {
        log.Fatal(err)
    }
    log.Println(string(data))

}
同样,当我运行它时,我得到 Time_here Get "https://site_here/": Proxy Authentication Required我已经坚持了几个小时,我不确定如何在 Go 中执行此操作,我可以在 JS 中使用 var 为用户执行此操作并通过,但这在 Golang 中给我带来了一些麻烦
提前致谢!

最佳答案

您正在将代理身份验证 header 添加到将发送到目标服务器的请求中。您要做的就是将此 header 添加到 transport .
替换 req.Header.Add("Proxy-Authorization", basicAuth)

transport.ProxyConnectHeader = http.Header{}
transport.ProxyConnectHeader.Add("Proxy-Authorization", basicAuth)

关于go - 我如何验证用户 :pass proxy in golang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64037902/

相关文章:

node.js - 使用请求模块在 Node.js 中发送 URL 编码的参数

java - 如何识别来自PDA/桌面/服务器的Web请求?

go - 无法让 golang pprof 工作

go - 在 Raspberry Pi 上使用 GPIO 使用哪个包?

proxy - 我选择 CentOS 7 的哪个环境,以便我可以正确安装和演示 squid 代理的使用?

c# - 将 C# 服务引用与代理一起使用

go - Go中 slice 的通用类型

go - 无法制作 juju charm-store 服务器?

android - 如何剥离 3-rd 方网站以便在移动设备上更好地显示?

c# - 从当前请求中获取应用程序 url