Golang tcp-tls over socks5 代理客户端

标签 go ssl tcp proxy

我通过创建拨号器

dialer := &net.Dialer{}
和一个 TLS 拨号器
tlsDialer := &tls.Dialer{
    NetDialer: dialer,
    Config:    &tls.Config{InsecureSkipVerify: true},
}
然后我使用创建一个 socks5 代理拨号器
proxyDialer, err := proxy.SOCKS5("tcp", "127.0.0.1:1080", nil, proxy.Direct)
如何通过 socks5 代理连接远程服务器?
换句话说,如何按照net.Dialer->tls.Dialer->proxy.Dialer的顺序嵌套三个拨号器最后使用 proxyDialer.Dial("tcp", "remote:port")连接服务器?
我的环境:
  • 操作系统:Windows 10 x64
  • Golang:1.16(无 CGO)

  • 任何帮助将不胜感激 :)
    第一次在 SOF 提问,如果我错过了某事,请告诉我 :)

    最佳答案

    感谢 @Steffen Ullrich
    拨号器用于建立连接 - 但只需建立一个连接。使用 proxyDialer 创建连接,然后在 proxyDialer 提供的连接上使用 tls.Client 将其“升级”为 tls.Conn。
    只需将代理连接“升级”到 tls

    proxyDialer, err := proxy.SOCKS5("tcp", "proxyserver:1080", nil, proxy.Direct)
    conn, err = proxyDialer.Dial("tcp", "server:port")
    conn = tls.Client(conn, &tls.Config{InsecureSkipVerify: true})
    

    关于Golang tcp-tls over socks5 代理客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71182538/

    相关文章:

    go - 如何在 golang 中处理(解码或删除无效的 Unicode 代码点)带有表情符号的字符串?

    multithreading - 在 TCP 客户端服务器中循环读取和写入数据时的并发问题

    mysql - Golang Net.IP 到 IPv6(来自 MySQL)作为 Decimal(39,0) 转换?

    go - 基于结构字段返回 slice 最小值的函数?

    go - 如何为特定的goroutine设置断点?

    python - django:使用 NGINX 的 SECURE_SSL_REDIRECT 应用程序崩溃

    api - 我是否需要在前端和后端都使用 SSL

    ios - SRTP 问题 : PJSIP Error initializing media channel: Not Acceptable Here [status=170488]

    java - 线程化 TCP 服务器 - 试图维护用户存储库的数据一致性

    java - 数百个 CLOSE_WAIT 连接正在耗尽我的线程池