为了账号安全,请及时绑定邮箱和手机立即绑定

通过代理发出请求时的“EOF”

通过代理发出请求时的“EOF”

Go
森林海 2023-05-15 10:22:10
我正在使用 ssh 创建到 EC2 实例的代理连接:ssh -v -D 8123 ubuntu@some.ip.address我写了一个非常简单的 Go 程序来发出 http 请求:package mainimport (    "io/ioutil"    "net/http"    "os"    "log"    "fmt")func main(){    resp, err := http.Get("http://example.com")    if err != nil {        log.Println(err)        os.Exit(1)    }    fmt.Println(string(ioutil.ReadAll(resp.Body)))}当我正常运行我的程序时,它按预期工作。但是,当我使用 HTTP_PROXY env var(godoc,example)指定一个 http 代理(或者如果我制作一个使用该代理进行传输的自定义 http 客户端),我得到以下信息:HTTP_PROXY=localhost:8123 ./main 2018/11/29 23:33:27 Get http://example.com: EOF以及我在其中建立代理的 SSH 会话的调试给了我:debug1: Connection to port 8123 forwarding to socks port 0 requested.debug1: channel 3: new [dynamic-tcpip]debug1: channel 3: free: dynamic-tcpip, nchannels 4当我将我的 macbook 的 wifi 适配器配置为用作localhost:8123SOCKS 代理时,它似乎可以工作。我的面向公众的 IP 地址发生变化,并且流量似乎在流动(事实上,我现在正在使用它)。知道为什么我的 Go 程序有问题吗?
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

socks -D创建一个 SOCKS 代理。在您的测试中,您设置了一个 HTTP 代理。SOCKS 代理和 HTTP 代理使用不同的协议,这意味着您的客户端发出的请求不符合代理的预期,因此失败。

查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信