You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
go-mitmproxy/README.md

85 lines
2.3 KiB
Markdown

# go-mitmproxy
2 years ago
[English](./README.md)
4 years ago
2 years ago
Golang 版本的 [mitmproxy](https://mitmproxy.org/)。
4 years ago
2 years ago
用 Golang 实现的中间人攻击([Man-in-the-middle](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)),解析、监测、篡改 HTTP/HTTPS 流量。
4 years ago
2 years ago
## 特点
4 years ago
2 years ago
- HTTPS 证书相关逻辑参考 [mitmproxy](https://mitmproxy.org/) 且与之兼容,根证书也保存在 `~/.mitmproxy` 文件夹中,如果之前用过 `mitmproxy` 且根证书已经安装信任,则此 `go-mitmproxy` 可以直接使用
- 支持插件机制,很方便扩展自己需要的功能,可参考 [examples](./examples)
- 性能优势
- Golang 天生的性能优势
- 在进程内存中转发解析 HTTPS 流量,不需通过 tcp 端口 或 unix socket 等进程间通信
- 生成不同域名证书时使用 LRU 缓存,避免重复计算
- 通过环境变量 `SSLKEYLOGFILE` 支持 `Wireshark` 解析分析流量
- 上传/下载大文件时支持流式传输
- Web 界面
## 安装
4 years ago
```
3 years ago
go install github.com/lqqyt2423/go-mitmproxy/cmd/go-mitmproxy@latest
4 years ago
```
2 years ago
## 命令行使用
4 years ago
2 years ago
### 启动
3 years ago
```
go-mitmproxy
4 years ago
```
2 years ago
启动后HTTP 代理地址默认为 9080 端口Web 界面默认在 9081 端口。
3 years ago
2 years ago
首次启动后需按照证书以解析 HTTPS 流量,证书会在首次启动命令后自动生成,路径为 `~/.mitmproxy/mitmproxy-ca-cert.pem`。可参考此链接安装:[About Certificates](https://docs.mitmproxy.org/stable/concepts-certificates/)。
3 years ago
2 years ago
### 启动参数
3 years ago
```
Usage of go-mitmproxy:
4 years ago
-addr string
proxy listen addr (default ":9080")
2 years ago
-cert_path string
path of generate cert files
-debug int
debug mode: 1 - print debug log, 2 - show debug from
4 years ago
-dump string
dump filename
-dump_level int
dump level: 0 - header, 1 - header + body
3 years ago
-mapper_dir string
mapper files dirpath
-ssl_insecure
not verify upstream server SSL/TLS certificates.
3 years ago
-version
show version
4 years ago
-web_addr string
web interface listen addr (default ":9081")
4 years ago
```
2 years ago
## 作为包引入
3 years ago
2 years ago
参考 [cmd/go-mitmproxy/main.go](./cmd/go-mitmproxy/main.go),可通过自己实现 `AddAddon` 方法添加自己实现的插件。
4 years ago
2 years ago
更多示例可参考 [examples](./examples)
3 years ago
2 years ago
## Web 界面
3 years ago
![](./assets/web-1.png)
![](./assets/web-2.png)
![](./assets/web-3.png)
4 years ago
## TODO
2 years ago
- [ ] 支持 http2 协议
- [ ] 支持解析 websocket
4 years ago
## License
[MIT License](./LICENSE)