使用mitmproxy进行抓包

1,725 阅读1分钟

mitmproxy

安装,pip3 install mitmproxy

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

这里的代理端口为mitmproxy启动时端口参数,不指定的话mitmproxy会以8080为默认

switchomega选择配置好的代理模式

启动mitmproxy,命令行输入mitmproxy

访问mitm.it安装证书并信任

如果想抓手机包的话

  1. 设置和pc同一wifi,手机手动设置代理,ip设置和pc一样,端口默认为8080

  2. 手机访问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可学习官方文档