Skip to content

抓包工具 mitmproxy


简介

mitmproxy 是一款开源、免费的代理工具,支持 mac、windows、linux。相比于其他代理工具,可以通过 python 和 mitmproxy 工具本身的插件机制实现通过脚本对 mitmproxy 的完全控制。强大的可拓展性和可定制型,可以让测试工程师以 mitmproxy 工具为基础,进行二次开发,打造更适合自己业务的 mock 工具。

官方网站:https://mitmproxy.org/


安装

  • 安装包安装
  • python 安装:安装好 python 环境(最低要求 python3.6)
    • pip install pipx
    • pipx install mitmproxy


安装结果验证

输入命令验证是否安装成功:
mitmdump --version

# 如果有如下的返回信息,证明环境已经安装成功:
Mitmproxy: 5.2
Python:    3.8.7
OpenSSL:   OpenSSL 1.1.1g  21 Apr 2020
Platform:  macOS-10.15-x86_64-i386-64bit

证书配置

mitmproxy 的证书配置过程与 charles 类似。


pc 端配置网络代理

  • ip 配置:127.0.0.1
  • 端口配置:8080(mitmproxy 默认监听端口)

Windows 配置

macOS 配置


下载证书

  • 启动 mitmprxy 工具。
  • 在浏览器输入地址 mitm.it,显示效果如果和图中类似,证明前面的步骤都成功了。
  • 选择对应系统下载证书。


MacOS 证书安装信任

打开证书(Mac 系统为钥匙串访问)->点击证书->双击名称含有 mitmproxy 的选项->点击信任->选择始终信任。


Windows 证书安装信任

mitmporxy


手机端证书(安卓系统 7.0 以下)

  • 在手机配置代理,ip 配置为电脑的 ip 地址,端口配置为 mitmproxy 监听端口,默认 8080。
  • 启动 mitmprxy。
  • 在手机浏览器输入地址 mitm.it。
  • 选择 Android,下载并安装,即可成功抓取手机端的 https 的数据包。


mumu 模拟器(7.0 +)证书安装

  • 电脑下载 Android 证书:mitmproxy-ca-cert.cer
  • 执行命令:openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer
  • 将证书改名为:c8750f0d.0

adb kill-server

# Windows 系统执行
# adb connect 127.0.0.1:7555
adb devices

adb push c8750f0d.0 /system/etc/security/cacerts

adb shell "chmod 664 /system/etc/security/cacerts/c8750f0d.0"

三大核心工具

mitmproxy 有三大核心工具,分别为 mitmproxy、mitmweb、mitmdump。mitmdump 是 mitmproxy 相比于其他代理工具最独一无二的部分,所以会以 mitmdump 的介绍为主。


mitmproxy

是一款交互式的命令行工具,通过命令mitmproxy启动,需要注意的是 mitmproxy 不支持 windows 系统。下图为 mitmproxy 启动后的效果图:


mitmweb

在 mitmweb 的图形界面中使用 mitmproxy 的主要功能,通过命令mitmweb启动。它和 Chrome 开发者工具中的 network 比较类似。下图为 mitmweb 启动后的效果图:


mitmdump

用 mitmdump 编写强大的插件和脚本。 mitmproxy 脚本 API 提供了对 mitmproxy 的完全控制,可以自动修改消息、重定向流量、可视化消息或实现自定义命令。后面会通过实战具体介绍 mitmdump 的使用。


总结

  • 工具安装
  • 证书配置
  • 工具界面