我要做什么:
构建一个程序包(稍后使用),该程序包提供一种通过给定的socks5代理对任何页面执行get-request的方法。
我的问题:
每当我尝试使用SSL(https)请求页面时,都会出现以下错误:
执行请求Get https://www.xxxxxxx.com时出错:袜子连接TCP 83.234.8.214:4145-> www.xxxxxxx.com:443:EOF
但是,请求http://www.google.com
的工作正常。因此SSL连接一定存在问题。无法想象为什么这种方法不起作用,因为我对SSL连接不是很熟练。 End of file
对我来说毫无意义。
我当前的代码:
func main() {
// public socks5 - worked when I created this question
proxy_addr := "83.234.8.214:4145"
// With this address I get the error
web_addr := "https://www.whatismyip.com"
// Requesting google works fine
//web_addr := "http://www.google.com"
dialer, err := proxy.SOCKS5("tcp", proxy_addr, nil, proxy.Direct)
handleError(err, "error creating dialer")
httpTransport := &http.Transport{}
httpClient := &http.Client{Transport: httpTransport}
httpTransport.DialTLS = dialer.Dial
req, err := http.NewRequest("GET", web_addr, nil)
handleError(err, "error creating request")
httpClient.Timeout = 5 * time.Second
resp, err := httpClient.Do(req)
handleError(err, "error executing request")
defer resp.Body.Close()
b, err := ioutil.ReadAll(resp.Body)
handleError(err, "error reading body")
fmt.Println(string(b))
}
func handleError(err error, msg string) {
if err != nil {
log.Fatal(err)
}
}
那我在这里处理ssl连接时缺少什么呢?
非常感谢您。
编辑1:
万一有人认为这是whatismyip.com
的问题,我还做了一些测试:
答案 0 :(得分:2)
程序与socks5代理之间的连接不通过SSL / TLS
所以您应该更改行
httpTransport.DialTLS = dialer.Dial
到
httpTransport.Dial = dialer.Dial
我检查了https://www.whatismyip.com和https://www.google.com。
网址下载正常。
为了进行测试,我在服务器上设置了3proxy服务,使用固定线路测试您的代码并检查3proxy日志。
所有提出的请求都在代理服务器日志中。
如果您需要更多帮助-请告诉我,我会帮助
注意事项: