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

如何在 Go 中通过隧道路由 http Get?

如何在 Go 中通过隧道路由 http Get?

Go
猛跑小猪 2021-11-22 15:43:19
我有一个到我的服务器的 ssh 隧道(通过端口:9998)。我希望我的 http GET/POST 请求通过 Go 中的这个端口进行路由。在 java 中,我会指定 DsocksProxyHost 和 DsocksProxyPort。我正在 Go 中寻找类似的选项。提前感谢您的帮助。
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

使用上述评论中提供的信息,这里是一个关于如何通过 SOCKS 代理隧道传输 HTTP 请求的工作示例:


package main


import (

    "fmt"

    "io/ioutil"

    "net"

    "net/http"

    "time"


    "golang.org/x/net/proxy"

)


func main() {

    url := "https://example.com"

    socksAddress := "localhost:9998"


    socks, err := proxy.SOCKS5("tcp", socksAddress, nil, &net.Dialer{

        Timeout:   30 * time.Second,

        KeepAlive: 30 * time.Second,

    })

    if err != nil {

        panic(err)

    }


    client := &http.Client{

        Transport: &http.Transport{

            Dial:                socks.Dial,

            TLSHandshakeTimeout: 10 * time.Second,

        },

    }


    res, err := client.Get(url)

    if err != nil {

        panic(err)

    }

    content, err := ioutil.ReadAll(res.Body)

    res.Body.Close()

    if err != nil {

        panic(err)

    }

    fmt.Printf("%s", string(content))

}


查看完整回答
反对 回复 2021-11-22
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

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