Erlang/Elixir [ANN] make-proxy 发布 4.0.0 版本

yueyoum · 2016年10月15日 · 最后由 tony612 回复于 2016年10月15日 · 1804 次阅读

项目地址: https://github.com/yueyoum/make-proxy

已经稳定使用几年了。 以前也发过,但这次更新还是值得再次宣传一下的

架构

架构还是常见的 本地代理 + 外部服务器 的形式。

本次新版本几乎重写了整个项目, 并且使用了 成熟的 ranch 库 所以整个代码更加清晰

主要特性

支持 HTTP, SOCKS4,SOCKS5 代理,而且都是代理在同一个端口上的。

HTTPS 目前不支持,正在准备添加,但 HTTPS 就得单独一个端口了


开发 HTTP 代理的时候,居然发现 浏览器可能会把多个 site 的请求 发送到同一个连接上。

比如 流程是这样的

  1. 访问 site A,浏览器请求本地代理,打开一个连接,发送 GET A ... 这样的 HTTP 请求
  2. 访问 site B,如果此时 A 还在传输数据,连接没有关闭,那么浏览器居然会把 GET B 的请求继续发送到 A 的连接中。

socks 是没有这个问题的,但 http 却遇到这个事情,于是只能撸一个完整的 http 协议解析, 并且把 发送到本地代理的请求 缓存起来,直到有一个完成的 http 请求后,才发给代理服务器。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号