[教程] Porter-简单实现单端口多用户/端口复用/端口转发

因个人需求,通过搜索引擎学习法,用go简单实现了一下,已编译成可执行文件。下面是一些使用场景举例,如果你也有类似的需求,可以试试用这个项目实现。项目地址

运行参数

-config
指定配置文件名(default:config.json);也可以指定远程地址(example: http://rss.example.com/config ),当指定远程地址的时候,每分钟请求一次更新配置参数
-l
指定监听的端口(default:8080)

配置文件参数

param - http请求头的Host内容,客户端填写的混淆参数
address - 目标服务的地址和端口(可以本地地址也可以远程地址)
host - 转发后请求头的Host内容(留空则不处理Host)

使用场景举例

1. 单端口多用户

{
  "forward":[
    {
      "param":"user1.example.com",
      "address":"xxx.com:6077",
      "host":""
    },
    {
      "param":"user2.example.com",
      "address":"xxx.com:6077",
      "host":""
    }
  ]
}

运行程序后,只有混淆参数为user1.example.comuser2.example.com的连接会转发到xxx.com:6077

2. 端口复用

{
  "forward":[
    {
      "param":"proxy1.example.com",
      "address":"a.com:6077",
      "host":""
    },
    {
      "param":"proxy2.example.com",
      "address":"b.com:6077",
      "host":""
    }
}

运行程序后,混淆参数为proxy1.example.com的连接转发到a.com:6077,混淆参数为proxy2.example.com的连接转发到b.com:6077