- Intercept HTTP & HTTPS requests and responses and modify them on the fly
- SSL/TLS certificates for interception are generated on the fly
- Certificates logic compatible with [mitmproxy](https://mitmproxy.org/), saved at `~/.mitmproxy`. If you used mitmproxy before and installed certificates, then you can use this go-mitmproxy directly
- Addon mechanism, you can add your functions easily, refer to [addon/addon.go](./addon/addon.go)
- Performance advantages
- Golang's inherent performance advantages
- Forwarding and parsing HTTPS traffic in process memory without inter-process communication such as tcp port or unix socket
- Use LRU cache when generating certificates of different domain names to avoid double counting
- Support `Wireshark` to analyze traffic through the environment variable `SSLKEYLOGFILE`
- Support streaming when uploading/downloading large files
- Web interface
## 安装
## Install
```
GO111MODULE=on go get -u github.com/lqqyt2423/go-mitmproxy/cmd/go-mitmproxy
```
## 命令行使用
## Usage
### 启动
### Startup
```
go-mitmproxy
```
启动后,HTTP 代理地址默认为 9080 端口,Web 界面默认在 9081 端口。
After startup, the HTTP proxy address defaults to port 9080, and the web interface defaults to port 9081.
After the first startup, the SSL/TLS certificate will be automatically generated at `~/.mitmproxy/mitmproxy-ca-cert.pem`. You can refer to this link to install: [About Certificates](https://docs.mitmproxy.org/stable/concepts-certificates/).
### 自定义参数
### Help
```
go-mitmproxy --help
Usage of go-mitmproxy:
-addr string
proxy listen addr (default ":9080")
@ -46,15 +46,19 @@ Usage of go-mitmproxy:
dump filename
-dump_level int
dump level: 0 - header, 1 - header + body
-version
show version
-web_addr string
web interface listen addr (default ":9081")
```
## 作为包引入
## Usage as package
Refer to [cmd/go-mitmproxy/main.go](./cmd/go-mitmproxy/main.go), you can add your own addon by call `AddAddon` method.