作为开发者,测试方都需要经常对HTTP请求做分析,现在burpsuit,fiddler也为主流.可是一些场合并不需要如此全面的工具去支撑,快捷便于拓展可能又成为人们的另一个追求点.

0x01 介绍

An interactive console program that allows traffic flows to be intercepted, inspected, modified and replayed.

简单说该工具正如其名MITM(man-in-the-middle)再加个proxy –中间人代理软件,可以用来拦截,修改,保存HTTP/HTTPS请求。当然主要以命令行形式呈现,虽然现在已经有mitmweb辅助出现,不过官网称其暂时为beta阶段,一部分功能暂未完善。

官网地址:https://mitmproxy.org

0x02 安装

大部分了解一些mitmproxy的伙伴都知道目前这是一个基于python3的程序,目前大部分程序都在向python3转移,可是暂时多数操作系统都是以python2做支撑,作为一个懒人当然是专门有找到了mitmproxy的py2版本号。不过还是建议大家还是去熟悉下py3(不要向我一样懒)

这里的操作系统为macOS

不说废话首先我们先掏出 pip

pip install mitmproxy==0.18.2

这是python2的小伙伴使用的命令(mitmproxy==0.18.2)

py3可直接install mitmproxy

之后终端输入mitmproxy则可正常使用

Ping_Mu_Kuai_Zhao_-2017-06-29-_Xia_Wu_4

0x03 简单配置

安装之后的操作

1.启动mitmproxy

默认

mitmproxy

或指定代理端口

mitmproxy -p 8888

注:默认(即不指定端口)即为指定默认端口8080

(不绕口吧2333)
2.设置浏览器代理

浏览器偏好设置-高级-代理

http和https都选中 内容如图
2
应用之后,随手就是打开一个网页,回终端看,大概就是这样。
3
当然没完,先别着急关

3.安装证书

为了保证https能成功抓取,我们需要先安装证书

打开网页 http://mitm.it
4
你是哪个选哪个..下载,打开

找见你的钥匙串访问-mitmproxy-信任–始终信任 (手机端类似)
5

ok

0x04 基本操作

mitmproxy可以说是一个控制台,允许交互式检查和修改 HTTP 流量。

? 快捷键用于查看帮助信息

q 用于返回/退出

c 清空列表
6

接下来我们开始捕获流量,并介绍相关界面

Flow list
流量请求按顺序依次显示 可直接通过上下键来选中目标 >>
7

1:GET请求,返回302重定向响应
2:GET请求,返回大小为16.75kb的text/html 数据
3:一个重放的请求
4:橙色的文字表示拦截的流量,使用者可以编辑并接收它,(使用 a )继续
5:从服务器到客户端中截获的响应
6:事件日志可以通过 e 来切换和关闭
7:流量统计
8:mitmproxy的状态的各种信息,这里我们设置了拦截内容为符合.*的模式
9:显示正在监听的端口号
Flow view
鼠标单击或enter键打开目标view 可以通过此来检查,操作单个请求
8

1:此数据包基本信息摘要
2:通过选择Request/Response两个标签来转换查看部分,可通过鼠标单击或使用 tab 快捷键
3:Headers
4:Body
5:View Mode indicator 当前为hex浏览模式,可使用快捷键 m 来根据提示切换模式
Grid Editor
数据请求的编辑器,用表格对应列表的形式便于编辑操作
9

进行数据编辑根据下方提示选择编辑内容并enter保存或esc看提示 q返回上一级

r 回放编辑好的请求

/ 搜索请求中需要的内容

拦截请求案例
i 设置拦截请求模式

~q 设置筛选模式为拦截所有的请求

10

更多筛选模式可通过在其页面下快捷键?调出帮助查看

11

常用:

~q 拦截所有的请求
~c 404 拦截特定的响应码404
~m POST 拦截所有POST请求
id=1 拦截url中存在id=1的请求

橙色表示被拦截的请求

12

e 修改,方式同上一条内容

a 接受修改或未修改并将请求发出

退出拦截模式时转到请求列表,快捷键i并删去筛选模式内容即可

更多关于mitmproxy的具体用法请浏览 http://docs.mitmproxy.org 官方文档查看

来源:rui0