猿问

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

我有一个到我的服务器的 ssh 隧道(通过端口:9998)。我希望我的 http GET/POST 请求通过 Go 中的这个端口进行路由。在 java 中,我会指定 DsocksProxyHost 和 DsocksProxyPort。我正在 Go 中寻找类似的选项。提前感谢您的帮助。


猛跑小猪
浏览 123回答 1
1回答

犯罪嫌疑人X

使用上述评论中提供的信息,这里是一个关于如何通过 SOCKS 代理隧道传输 HTTP 请求的工作示例:package mainimport (    "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))}
随时随地看视频慕课网APP

相关分类

Go
我要回答