Http通过socks5获取请求| EOF错误
Http get request through socks5 | EOF error
我想做什么:
构建一个包(稍后使用),它提供了一种通过给定的 socks5 代理对任何页面执行 get-request 的方法。
我的问题:
每当我尝试使用 SSL (https) 请求页面时,我都会收到以下错误:
Error executing request 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://whosebug.com
- EOF 错误
- https://www.youtube.com/
- EOF 错误
您的程序与 socks5 代理之间的连接未通过 SSL/TLS
所以你应该换行
httpTransport.DialTLS = dialer.Dial
至
httpTransport.Dial = dialer.Dial
我检查了https://www.whatismyip.com and https://www.google.com。
网址下载正常。
为了测试我在我的服务器上设置了 3proxy 服务,用固定线路测试你的代码并检查 3proxy 日志。
所有发出的请求都在代理服务器日志中。
如果您需要更多帮助 - 请告诉我,我会提供帮助
注意事项:
- Socks5 代理需要支持 SSL 连接。
- 由于代理(在代码中使用)不支持 SSL 连接,问题中的代码不适用于此答案。
我想做什么:
构建一个包(稍后使用),它提供了一种通过给定的 socks5 代理对任何页面执行 get-request 的方法。
我的问题:
每当我尝试使用 SSL (https) 请求页面时,我都会收到以下错误:
Error executing request 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://whosebug.com
- EOF 错误
- https://www.youtube.com/
- EOF 错误
您的程序与 socks5 代理之间的连接未通过 SSL/TLS
所以你应该换行
httpTransport.DialTLS = dialer.Dial
至
httpTransport.Dial = dialer.Dial
我检查了https://www.whatismyip.com and https://www.google.com。
网址下载正常。
为了测试我在我的服务器上设置了 3proxy 服务,用固定线路测试你的代码并检查 3proxy 日志。
所有发出的请求都在代理服务器日志中。
如果您需要更多帮助 - 请告诉我,我会提供帮助
注意事项:
- Socks5 代理需要支持 SSL 连接。
- 由于代理(在代码中使用)不支持 SSL 连接,问题中的代码不适用于此答案。