diff --git a/fasthttpproxy/socks5.go b/fasthttpproxy/socks5.go new file mode 100644 index 0000000..77d965d --- /dev/null +++ b/fasthttpproxy/socks5.go @@ -0,0 +1,25 @@ +package fasthttpproxy + +import ( + "net" + + "github.com/valyala/fasthttp" + "golang.org/x/net/proxy" +) + +// FasthttpSocksDialer returns a fasthttp.DialFunc that dials using +// the provided SOCKS5 proxy. +// +// Example usage: +// c := &fasthttp.Client{ +// Dial: fasthttpproxy.FasthttpSocksDialer("localhost:9050"), +// } +func FasthttpSocksDialer(proxyAddr string) fasthttp.DialFunc { + return func(addr string) (net.Conn, error) { + dialer, err := proxy.SOCKS5("tcp", proxyAddr, nil, proxy.Direct) + if err != nil { + return nil, err + } + return dialer.Dial("tcp", addr) + } +}