0%

mitmproxy—— 开源、免费的 HTTP 抓包分析工具

mitmproxy 是一款支持 HTTP (S) 的中间人代理工具。mitmproxy 提供了一个控制台接口用于动态拦截和编辑 HTTP 数据包。不同于 Fiddler2burpsuite 等类似功能工具,mitmproxy 可在终端下运行。mitmproxy 使用 Python 开发,是辅助 web 开发 & 测试,移动端调试,渗透测试的工具。
mitmdumpmitmproxy 的命令行版本,功能与其相同。

安装 mitmproxy

  1. 先要在 Mac 中安装 pip(Python 包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具。) , 打开 Termal 终端,输入如下命令:

    $ sudo easy_install pip
    Searching for pip
    Reading https://pypi.python.org/simple/pip/
    ...
  2. 安装 mitmproxy

    $ sudo pip install mitmproxy --ignore-installed six

使用

使用方法目前自己也完全参考以上文章,因为目前也处于学习使用阶段,所以写一大堆和别人类似的东西或者不如别人详细完善的东西出来完全是浪费时间,Blog 这个东西只是辅助手段,并不能放在首要目标上。

以下 vim 命令可通过获得

This view:

A 接收所有被拦截的流
a 只接收该被拦截的流
b 保存 request/response 体
C 导出流到剪切板
d 删除流
D 重复流
e 切换事件日志
E 导出流到文件
f 过滤视图
F 切换 follow 流列表
L 加载保存的流
m 切换流标记
M 切换标记的流视图
n 创建一个新的 request
r 重复 request
S 服务器重复 request
U 取消标记所有被标记的流
V 还原更改的请求
w 保存流
W 把流 stream 入文件
X 杀死和删除流,即使它正被拦截
z 清楚流或事件日志
tab 选项卡在事件日志和流列表之间切换
enter 查看流
l 运行脚本

Movement

j,k 下移,上移
h,l 左移,右移(在某些文本中)
g,G 移至开头,结尾
space 翻页
page up/down 翻页
ctrl+b /ctrl+f 翻页
方向键 上下左右移动

Global keys

i 设置拦截模式
o 选项
q 后退,返回
Q 退出而不需要确认提示
R 从文件中重复运行 requests/responses

Filter expressions:(过滤表达式)

~a 匹配 response:CSS,JavaScript,Flash,image
~b regex Body
~bq regex request 请求体
~bs regex response 响应体
~c int HTTP response code
~d regex Domain 域
~dst regex 匹配目标地址
~e 匹配错误
~h regex Header
~hq regex Request header
~hs regex Response header
~http 匹配 http 流
~m regex Method
~marked 匹配标记的流
~q 匹配 request 而不需要 response
~s 匹配 response
~src regex 匹配源地址
~t regex Content-type header
~tcp 匹配 TCP 流
~tq regex Request Content-type header
~ts regex Response Content-type header
~u regex URL
!
&
l
(…) 集合
  • 正则表达式是 Python 风格的。
  • 正则表达式可以被指定为带引号的字符串。
  • Header 匹配 (h,hq,~hs) 是针对 “name:value” 形式的字符串。
  • 没有运算符的表达式与 URL 的正则表达式匹配
  • 默认的二进制运算符是 &

Examples:

google.com URL 包含 “google.com”
~q ~b test Request 请求体中包含 “test”
!(~q & ~t “text/html”) 除了 Request 请求中带有 “text/html” 的内容类型

参考文章

  • 推荐给开发人员的 6 个实用命令行工具(阅读难度:★)
  • 使用 mitmproxy 进行移动端的 HTTP 抓包(阅读难度:★★)
  • mitmproxy 实践教程之调试 Android 上 HTTP 流量(阅读难度:★★)
  • 和 Charles 同样强大的 iOS 免费抓包工具 mitmproxy(阅读难度:★★★)
  • mitmproxy 套件使用攻略(阅读难度:★★★★)

欢迎关注我的其它发布渠道