[英]Is it possible to use proxy/socks with http2 client in Go?
我发现,http2 包中传输的实现不支持 http2 客户端的代理/袜子。 有没有简单的方法让它工作?
是的,我似乎想起了不久前关于 http2 客户端不使用 HTTP/SOCKS5 代理的事情。 无论如何,时间已经过去了,下面的工作正常(如果这就是你所追求的)。 请注意,如果在传输中使用自定义 DialTLS,则仍不支持代理连接。
package main
import (
"log"
"net/http"
"net/url"
)
func main() {
var addressString = "https://www.facebook.com/"
var proxyString = "socks5://127.0.0.1:9150"
req, _ := http.NewRequest("GET", addressString, nil)
tr := &http.Transport{
Proxy: func(req *http.Request) (*url.URL, error) {
proxyURI, err := url.Parse(proxyString)
return proxyURI, err
},
}
// The http client is equipped to handle http/2 connections
hc := &http.Client{Transport: tr}
resp, _ := hc.Do(req)
log.Print(resp)
}
如果您希望通过套接字进行通信,则应该可以使用以下方法:
socket := "<socket-path>"
// server
sock, err := net.Listen("unix", socket)
go http.Serve(s, nil)
//client
httpc := http.Client{
Transport: &http.Transport{
DialContext: func(_ context.Context, _, _ string) (net.Conn, error) {
return net.Dial("unix", socket)
},
},
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.