【发布时间】:2018-09-20 15:55:49
【问题描述】:
我要做什么:
构建一个包(稍后使用),它提供了一种通过给定的 socks5 代理对任何页面执行 get-request 的方法。
我的问题:
当我尝试使用 SSL (https) 请求页面时,我收到以下错误:
执行请求时出错 Get https://www.xxxxxxx.com: socks connect 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 的问题,我已经做了更多测试:
-
https://www.google.com
- EOF 错误
-
https://stackoverflow.com
- EOF 错误
-
https://www.youtube.com/
- EOF 错误
【问题讨论】:
-
它适用于 google,因为您为 google 设置的 URL 使用的是
http而不是https。我已经用你的代码尝试了https://www.google.com,它也不起作用...... -
@math2001 这也是我在我的问题中所说的。而这里的核心问题是为什么和如何处理https。
-
这意味着 SOCKS 服务器断开连接,没有给你发送任何东西。检查其日志以找出原因。
-
@MichaelHampton
whatismyip.com不是我的网站,所以我无法查看他们的日志。此外,该网站不是唯一一个引发错误的网站。事实上,在任何使用 SSL 的地方都会发生这种情况。 -
我说的是检查 SOCKS 服务器的日志,而不是你试图通过它访问的目标网站。
标签: ssl go proxy httprequest socks