mitmproxy
安装,pip3 install mitmproxy
安装SwitchyOmega
谷歌浏览器插件,配置proxy场景为127.0.0.1:8080

这里的代理端口为mitmproxy启动时端口参数,不指定的话mitmproxy会以8080为默认
switchomega选择配置好的代理模式
启动mitmproxy,命令行输入mitmproxy
访问mitm.it安装证书并信任
如果想抓手机包的话
-
设置和pc同一wifi,手机手动设置代理,ip设置和pc一样,端口默认为8080
-
手机访问mitm.it安装证书并信任
启动命令 mitmproxy
启动web界面 mitmweb
-p 为设置端口,不指定的话默认为8080
命令行界面基本操作
按键 | 说明 |
---|---|
q | 退出(相当于返回键,可一级一级返回) |
d | 删除当前(黄色箭头)指向的链接 |
D | 恢复刚才删除的请求 |
G | 跳到最新一个请求 |
g | 跳到第一个请求 |
C | 清空控制台(C是大写) |
i | 可输入需要拦截的文件或者域名(逗号需要用\来做转译,栗子:feezu.cn) |
a | 放行请求 |
A | 放行所有请求 |
? | 查看界面帮助信息 |
^ v | 上下箭头移动光标 |
enter | 查看光标所在列的内容 |
tab | 分别查看 Request 和 Response 的详细信息 |
/ | 搜索body里的内容 |
esc | 退出编辑 |
e | 进入编辑模式 |
mitmproxy 支持python脚本
-s test.py 为运行指定脚本
简单的修改包脚本 新建test.py
import json
from mitmproxy import ctx, http
class Mytools:
def response(self, flow: http.HTTPFlow):
targetUrl = 'https://test/orders' //指定要改的request url
if flow.request.pretty_url == targetUrl:
with open('/test.json', 'r') as f:
res = json.load(f)
# 设置返回数据
flow.response.set_text(json.dumps(res)) //设置该url下的返回为test.json的内容
addons = [
Mytools()
]
执行 mitmproxy -s test.py
刷新页面,可看到返回已被修改
更多的pythonApi可学习官方文档