基于 mitmproxy 的 HTTP/HTTPS 响应修改插件,通过 JSON 配置文件定义规则,对匹配的 URL 进行响应拦截与篡改。附带 CA 证书生成工具,可导出 .p12 格式直接导入浏览器。
json_merge - JSON 字段合并(保留原数据,覆盖/新增字段)replace - 完全替换响应体regex_replace - 正则表达式替换响应文本inject_js - 向 HTML 页面注入 JavaScriptinject_html - 向 HTML 页面注入 HTML 片段rules.json 后无需重启代理即可生效. ├── response_modifier.py # mitmproxy 响应修改插件(核心) ├── gen_cert.py # CA 证书生成工具 ├── rules.json # 规则配置文件 ├── test_plugin.py # 单元测试 ├── test_server.py # 本地测试用 HTTP 服务器 └── docs/ ├── usage-guide.md # 使用指引 ├── development.md # 开发文档 └── testing.md # 测试文档
pip install mitmproxy
python3 gen_cert.py --output ./certs
将生成的 certs/mitmproxy-ca.p12 导入浏览器(详见 使用指引)。
编辑 rules.json,配置需要拦截的 URL 和修改方式:
{
"rules": [
{
"name": "修改 API 响应",
"url_pattern": "https?://api\\.example\\.com/data",
"enabled": true,
"modify_body": {
"type": "json_merge",
"data": { "debug": true }
},
"modify_headers": {
"X-Proxy": "mitmproxy"
}
}
]
}
mitmdump -s response_modifier.py --set config_file=rules.json -p 8080
将浏览器 HTTP/HTTPS 代理设置为 127.0.0.1:8080,访问目标网站即可看到响应被修改。
每条规则支持以下字段:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 规则名称(用于日志标识) |
url_pattern | string | 是 | URL 匹配正则表达式 |
enabled | bool | 否 | 是否启用,默认 true |
modify_status_code | int | 否 | 覆盖响应状态码 |
modify_headers | object | 否 | 修改响应头(值为 null 表示删除) |
modify_body | object | 否 | 修改响应体(见下表) |
| type | 说明 | 额外字段 |
|---|---|---|
json_merge | 合并 JSON 字段 | data: 要合并的 JSON 对象 |
replace | 完全替换响应体 | data: 新的响应内容(字符串或 JSON 对象) |
regex_replace | 正则替换文本 | pattern, replacement |
inject_js | 注入 JavaScript | code: JS 代码字符串 |
inject_html | 注入 HTML 片段 | code: HTML 字符串, position: before_body_end | after_body_start |
MIT License