- 作为普通HTTP(S)代理服务器使用
- 抓包调试, web页面查看流量
- 流量持久化到
leveldb
中, 可用于后期分析 - 拦截请求自定义逻辑
- 解压压缩包
- 启动: ./mars server
- 访问代理: http://localhost:8888
- 查看流量web页: http://localhost:9999, 客户端可扫描二维码下载根证书
docker run --name mars -p 8888:8888 -p 9999:9999 -d ouqg/mars:1.0.0
配置: /app/conf/app.toml
Go版本1.11+ 启用go module
export GO111MODULE=on
启动: make run
配置支持通过环境变量覆盖, 如MARS_APP_PROXYPORT=8080
[app]
host = "0.0.0.0"
# 代理监听端口
proxyPort = 8888
# 查看流量web页监听端口
inspectorPort = 9999
[mitmProxy]
# 是否开启中间人代理,不开启则盲转发
enabled = true
# 是否解密HTTPS, 客户端系统需安装根证书
decryptHTTPS = false
# 证书缓存大小
certCacheSize = 1000
# 数据缓存大小
leveldbCacheSize = 1000
$ ./mars version Version: v1.0.0 Go Version: go1.11 Git Commit: 2151a6d Built: 2018-11-18 20:04:17 OS/ARCH: darwin/amd64
$ ./mars server -h run proxy server Usage: mars server [flags] Flags: -c, --configFile string config file path (default "conf/app.toml") -e, --env string dev | prod (default "prod") -h, --help help for server
经过mars
的流量可在web页查看
请求包含特定header, 则转发给mars
, 由mars
访问实际的后端
原配置
proxy_pass http://172.16.10.103:8080;
使用mars
后的配置
set $targetHost $host;
if ($http_x_mars_debug = "1") {
set $targetHost "172.16.10.103:8080";
}
proxy_set_header X-Mars-Host $host;
proxy_set_header Host $targetHost;
if ($http_x_mars_debug = "1") {
proxy_pass http://127.0.0.1:8888;
break;
}
原配置
[web]
type = http
local_ip = 127.0.0.1
local_port = 80
subdomain = test
使用mars
后的配置
[web] type = http local_ip = 127.0.0.1 local_port = 8888 subdomain = test host_header_rewrite = 127.0.0.1:80
make
编译make run
编译并运行make package
生成当前平台的压缩包make package-all
生成Windows、Linux、Mac的压缩包
Vue + Element UI
- 安装Go1.11+, Node.js, Yarn
- 安装前端依赖
make install-vue
- 启动mars:
make run
- 启动node server:
make run-vue
- App.vue中替换websocket连接地址为
http://localhost:9999
- 打包:
make build-vue
- 安装静态文件嵌入工具
go get github.com/rakyll/statik
- 静态文件嵌入
make statik
基于websocket, 消息序列化协议: json
消息格式, 请求响应相同
{
"type": 3000,
"payload": {}
}
type取值范围
- 1000 - 1999 客户端请求
- 2000 - 2999 服务端响应
- 3000+ 服务端主动推送
var ws = new WebSocket('http://localhost:9999/ws')
from https://github.com/ouqiang/mars
https://github.com/ouqiang/mars/issues/3
No comments:
Post a Comment