Bad proxy 2.0

2023-04-27

Python写的bad proxy不错,用golang写个2.0,主要期望如下:

  1. 代码重构,传输层解耦出来
  2. 支持websocket
  3. 反向代理fallback
  4. 路由匹配

目前前三点其实已经实现了,反向代理直接用golang标准库在另一个端口监听,出现需要fallback的情况则额外开一个tcp连接,把当前连接原样转发过去,效果非常好但是感觉有点画蛇添足了,毕竟主要使用websocket,而nginx代理websocket是不会转发普通http连接的,所以在nginx里面把非websocket连接重定向到首页了

防主动探测感觉还是有点不太行,可能需要针对一下真正的websocket连接做出一点特殊的反应,找个时间测试一下

路由匹配看了v2ray的代码,有ac自动机,和Rabin-Karp两种方案,AC自动机比较简单但是要预编译,RK算法还没研究,先用AC自动机吧,毕竟总不可能和1.0一样直接读文本文件,总要预处理数据的

2023/04/28 Fri

Bad Proxy2.0的开发暂时告一段落,剩下几个问题如下,以后有档期再处理

  1. BTP协议安全性审查
  2. 代理整体的安全性审查
  3. 真实情景测试
  4. AC自动机的全面测试,现在还有问题,虽然cn地址基本都能识别,但是肯定存在重大问题(而且应该是重大错误,因为有的规则里面会识别错,而且目前address reverse之后也不能用),需要全面测试,不过这个不影响核心能力,没有前三项紧迫
  5. socks5协议的出入实现,这个还是挺有用的,主要用来做代理之间和不同应用间的转接,比如v2ray和warp
  6. GUI client (pyqt?)

上面这6项就当作3.0的目标吧,不过最好在回国之前把安全审查做了,确保回去之后不会因为测试被屏蔽端口,不然还挺麻烦的

使用了一段时间感觉还不错的,接下来适配一个vmess协议