代理

Tips#

HTTP 代理#

  • CONNECT 会用于建立 TCP 通道
    • 通常是用于 https
    • 非 https 的时候会直接发起 GET 这样的请求
  • Path 不会参与代理协议
# 会发起 GET 请求
curl -x http://127.0.0.1:8080 icanhazip.com -v
# 相同
curl -x http://127.0.0.1:8080 https://icanhazip.com -v
curl -x http://127.0.0.1:8080/proxy https://icanhazip.com -v
# http2
# ==========
# HTTP Upgrade
curl -v --http2 http://localhost:8000
# GET / HTTP/2
curl -v --http2-prior-knowledge http://localhost:8000

#

Golang#

其他语言#

  • 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 - 相当于通过远程进行调用