gpt4 book ai didi

authentication - 代理 golang https

转载 作者:IT王子 更新时间:2023-10-29 02:12:50 33 4
gpt4 key购买 nike

我正在努力让一个人进入https://www.google.com使用带身份验证的代理,我已经传递了 header 参数

Proxy-Authorization

但是代理服务器返回

Proxy Authentication Required

代码:

package main

import (
"crypto/tls"
"encoding/base64"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"os"
)

func main() {
req, _ := http.NewRequest("GET", "https://www.google.com.br", nil)
req.Header.Set("Host", "www.google.com.br")

proxyURL := url.URL{
Host: "IP-HERE:PORT-HEERE"}

transport := &http.Transport{
Proxy: http.ProxyURL(&proxyURL),
TLSClientConfig: &tls.Config{},
}
client := &http.Client{Transport: transport}
req.RequestURI = ""

auth := fmt.Sprintf("USER:PASSWORD")
basic := "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))
req.Header.Add("Proxy-Authorization", basic)

resp, err := client.Do(req)
if err != nil {
fmt.Printf("erro: %s", err)
}
fmt.Printf("code: %s", resp.StatusCode)
htmlData, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
os.Exit(1)
}

fmt.Println(os.Stdout, string(htmlData))
}

我必须传递另一个参数吗?

当我执行一个 get in http://www.google.com.br , 没有 https.. 代理身份验证成功。为什么?

最佳答案

我找到了解决方案。 Golang 不在方法 CONNECT 中传递 header 参数,因此参数 Proxy-Authorization 不会发送到代理服务器。

为解决此问题,将字段 ProxyConnectHeader 添加到结构 Transport 中。但此更改直到发布,此更改仅在 master 中。

为了使用 master 的 golang 测试这个新领域,我在 github 上做了一个项目并开始工作。

link to golang path

link to project in github that test this new field

关于authentication - 代理 golang https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40676825/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com