-
HTTP协议的解析(包括请求和响应) - 请求过滤以及响应过滤 (防火墙作用)
- 可配置的代理鉴权
- 整合
iptables实现透明代理 (参数开关) - 日志记录
- 测试 (且集成到
GitHub Actions中) -
HTTPS Tunnel
项目根目录运行即可, 注意 config.yml 亦在根目录下
# 运行
cargo run
# 构建
cargo build # debug 版本
cargo build --release server:
# 有关于代理鉴权
auth:
enable: false # 支持鉴权,否则下面的字段不会使用
username: rust
password: proxy
# 需要被过滤的内容
deny:
request: # 针对请求过滤,可以有多个规则,每个规则都匹配才会过滤掉
-
name: request_deny_1
rule:
line: # 请求行中的数据
methods: [POST, PUT] # 请求方法,满足其一即可
path: # 请求路径,满足其一即可,支持正则匹配
- /login
headers: # 请求头部,全部满足才会
-
key: "Content-Type"
value: "application/json"
response: # 响应中的数据过滤,暂只对请求头部信息进行过滤,全匹配才能被过滤掉
-
name: response_deny_1
rule:
headers:
-
key: "Content-Type"
value: "application/json"
-
key: "Access-Control-Allow-Credentials"
value: "true"
转换成 json 格式如下
{
"server": {
"auth": {
"enable": false,
"username": "rust",
"password": "proxy"
}
},
"deny": {
"request": [
{
"name": "request_deny_1",
"rule": {
"line": {
"methods": ["POST", "PUT"],
"path": ["/login"]
},
"headers": [
{
"key": "Content-Type",
"value": "application/json"
}
]
}
}
],
"response": [
{
"name": "response_deny_1",
"rule": {
"headers": [
{
"key": "Content-Type",
"value": "application/json"
},
{
"key": "Access-Control-Allow-Credentials",
"value": "true"
}
]
}
}
]
}
}