简介
mitmproxy是一个交互式的、支持SSL/TLS的拦截代理,是一款用于HTTP /1,HTTP /2和WebSockets的抓包工具
mitmdump是mitmproxy的命令行版本。与tcpdump类似
mitmweb是mitmproxy的基于Web的界面的版本。
安装
pip install mitmproxy
启动
mitmproxy
mitmproxy -p 8888
抓包配置
- 配置设备的代理地址 使设备连接到同一个wifi环境下
- 修改系统代理服务器地址为运行mitmproxy的那台机器(本机)的ip地址,端口设定为你启动mitmproxy时设定的端口,默认使用8080
- 手机做同样操作,修改wifi代理为 【手动】,然后指定ip地址和端口
- 设置证书信任 如何设置?
使用
快捷键 | 说明 |
---|
q | 退出(相当于返回键,可一级一级返回) |
d | 删除当前(黄色箭头)指向的链接 |
D | 恢复刚才删除的请求 |
G | 跳到最新一个请求 |
g | 跳到第一个请求 |
C | 清空控制台(C是大写) |
i | 可输入需要拦截的文件或者域名(逗号需要用\来做转译) |
a | 放行请求 |
A | 放行所有请求 |
? | 查看界面帮助信息 |
enter | 查看光标所在列的内容 |
tab | 切换栏 查看 Request 和 Response 的详细信息 |
/ | 搜索body里的内容 |
esc | 退出编辑 |
e | 进入编辑模式 |
w | 保存当前的response到文件 |
r | 重新发送请求 |
h | 切换标签页 |
p | 切换请求 |
K | 显示快捷键(大写) |
C | 显示命令(大写) |
关于导出当前package为curl命令
- 命令行页面 输入 w,进入export模式
- 输入
export.clip curl @focus
导出当前package - 直接ctrl+v 复制到文本编辑器即可
关于使用scripts脚本
- 编写脚本,示例
import random
from time import sleep
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
delay = random.uniform(5, 7)
sleep(delay)
def response(flow: http.HTTPFlow) -> None:
if xxx:
flow.response.status_code = random.choice(ERROR_CODES)
flow.response.content = None
- 重新启动mitmproxy, 命令
mitmproxy --listen-port 8989 --ssl-insecure --set console_mouse=false -s myscript.py