Skip to content

mitmproxy implemented with golang. 用 Golang 实现的中间人攻击(Man-in-the-middle),解析、监测、篡改 HTTP/HTTPS 流量。

License

Notifications You must be signed in to change notification settings

zzsen/go-mitmproxy

 
 

Repository files navigation

实现功能

  1. request阶段前, 根据路由正则regex进行请求转发
  2. response阶段, 根据contentType对 response 的 body 进行改写

    头部的 contentType 满足配置中的regex或头部的 contentType 和配置中的contentType一致

相关脚本

  1. 直接启动 go run main.go
  2. 打包成 exe 后启动 go build

    如需制定打包路径和生成的 exe 名称, 则加上[-o 文件名], 默认是当前路径下的go-mitmproxy.exe

启动参数

参数 说明 默认值 依赖
--version 输出 go-mitmproxy 的版本 false -
--addr 监听地址和端口 :9998 -
--web_addr 可视化网页地址 :9999 -
--proxy_config_path 代理转发策略配置路径 ./proxy.json -
--cert_path 证书地址 .mitmproxy -
--stream_large_bodies (规划中, 暂未支持)当请求或响应体大于此字节时,转为 stream 模式, 默认 5mb 5,242,880 -
--logPath 日志路径 ./log/mitmproxy.log -

证书安装

服务启动后, 会在cert_path参数指定的路径下生成证书, 双击证书mitmproxy-ca-cert.cer进行安装, 安装在受信任的根证书颁发机构

安装后, windows 下可以在 cmd 窗口中输入certmgr, 打开证书管理, 查看受信任的根证书颁发机构下, 是否存在颁发者颁发给都是mitmproxy的证书

代理转发策略配置

代理转发策略配置路径由启动参数中的--config_path决定, 默认是当前路径下的proxy.json, 配置以 json 的格式存放的ProxyStrategy数组, 数组的数据结构如下:

type ProxyStrategy struct {
	Type             string `json:"type"`
	ContentType      string `json:"contentType"`
	Regex            string `json:"regex"`
	Host             string `json:"host"`
	Path             string `json:"path"`
	Method           string `json:"method"`
	Scheme           string `json:"scheme"`
	OriginInfo2Query bool   `json:"originInfo2Query"`
}
参数 数据类型 默认值 说明
type string - 转发协议作用域, 可选: "request", "response"
contentType string - 转发内容类型, 根据 response 的 header 的 content-type 进行转发 (和 regex 二选一为必填)
regex string - 转发地址正则 (和 contentType 二选一为必填)
host string - 转发地址 host, 为空则直接请求原目标地址
scheme string - 转发协议, 为空则使用原请求协议
path string - 转发地址路径, 为空则使用原请求路径
method string - 请求方式, 为空则使用原请求方式
originInfo2Query bool false 原请求信息拼接到 query 内, 格式: fmt.Sprintf("method=%s&scheme=%s&host=%s&path=%s&query=%s",【原 Method】, 【原 Scheme】, 【原 Host】, 【原 Path】, 【原 RawQuery】)

更多

fork from lqqyt2423/go-mitmproxy
原 readme: README.md
原 readme(英文版): README_EN.md

About

mitmproxy implemented with golang. 用 Golang 实现的中间人攻击(Man-in-the-middle),解析、监测、篡改 HTTP/HTTPS 流量。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 61.8%
  • TypeScript 31.3%
  • HTML 5.3%
  • CSS 1.4%
  • Makefile 0.2%