首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让Socks代理运行Golang应用程序

无法让Socks代理运行Golang应用程序
EN

Stack Overflow用户
提问于 2021-08-30 12:01:58
回答 1查看 490关注 0票数 0

我正在本地笔记本上运行一个golang应用程序,它与kubernetes集群中的Service连接。为了允许我的笔记本电脑和Kubernetes集群上的Service之间的通信,我设置了Socks5代理,并能够通过CURL命令连接所有服务。

但我无法在Golang应用程序中设置相同的代理。我已经尝试过各种选择了

  1. 设置env vars -尝试将这3设置为操作系统级、应用程序级,但没有工作

代码语言:javascript
复制
- http\_proxy
- https\_proxy
- all\_proxy

  1. 我正在UbuntuDesktop20.x上运行,所以我也尝试在OS网络级别设置Socks代理。所有其他应用程序都使用代理,但golang并没有使用它。

  1. 我也尝试过设置http.transport级别,但是没有帮助。

代码语言:javascript
复制
func InsecureTLSTransport() *http.Transport {

    // START - Only for Proxy - Dev Mode.
    var dialer, err = proxy.SOCKS5("socks5", "<IP:port>", nil, proxy.Direct)

    if err != nil {
        fmt.Fprintln(os.Stderr, "can't connect to the proxy:", err)
    }
    return &http.Transport{
        TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
        Dial: dialer.Dial,
    }
}

我希望socks5代理在运行时被我的golang应用程序使用。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-31 11:24:03

您应该在网络参数中使用tcp而不是socks5

代码语言:javascript
复制
package main

import (
    "fmt"

    "golang.org/x/net/proxy"
)

func main() {
    d, err := proxy.SOCKS5("tcp", "<IP:port>", nil, proxy.Direct) // <-- here
    if err != nil {
        fmt.Println(err)
        return
    }
    c, err := d.Dial("tcp", "https://google.com")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer c.Close()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68983804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档