我有一个到我服务器的ssh隧道(通过端口:9998)。我希望我的http GET / POST请求通过Go中的此端口进行路由。在java中,我将指定DsocksProxyHost和DsocksProxyPort。我在Go中寻找类似的选项。感谢您的帮助。
答案 0 :(得分:2)
使用上述评论中提供的信息,这是一个关于如何通过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))
}