代理
#
Tips#
HTTP 代理- CONNECT 会用于建立 TCP 通道
- 通常是用于 https
- 非 https 的时候会直接发起 GET 这样的请求
- Path 不会参与代理协议
#
库#
Golang- httputil.ReverseProxy
- google/huproxy
- Server/Client 结构
- 与 HTTP 并存
- 支持 Path
- 利用 Connection-Upgrade 升级为其他协议
- google/inverting-proxy
- Reverse proxy that inverts the direction of traffic
- google/martian
- library for building custom HTTP/S proxies
- antoniomika/sish
- HTTP(S)/WS(S)/TCP Tunnels to localhost using only SSH.
- ginuerzh/gost - GO Simple Tunnel
- 多端口
- 支持代理 HTTP/HTTPS/HTTP2/SOCKS4(A)/SOCKS5
- UDP over TCP
- TCP/UDP 透明代理/转发
- 支持 Shadowsocks(TCP/UDP)
- 支持 SNI 代理
- TUN/TAP
- 权限控制
- 负载均衡
- 路由控制
- DNS解析和代理
- xtaci/smux - Stream Multiplexing Library
- jamescun/switcher - ssh http same port
- inetaf/tcpproxy
- TCP over HTTP
- 支持静态规则 - Host 头、SNI
- akutz/memconn
- MemConn: an in-memory network stack for Go
- 可用于测试或虚拟内部代理网络
#
其他语言- yrutschle/sslh - Applicative Protocol Multiplexer
- C
- HTTP, TLS/SSL (including SNI and ALPN), SSH, OpenVPN, tinc, XMPP, SOCKS5
#
github.com/rancher/remotedialer- 使用 websocket 建立通道
- tcp over websocket
- 内部会管理多个客户端
- 通过通道进行
Dial
- 相当于通过远程进行调用