抓包工具之MitmProxy

抓包工具之MitmProxy

前言

​ 作为一名app后端程序员,经常需要对app抓包。说起抓包工具,一般用的是Charles或Fiddler,这两个非常著名的工具。但有些情况下这两个工具并不能满足需求。

​ 场景一:产品或者运营反馈问题时一般都是截图给开发,然后开发去复现、抓包、解决问题。很多时候开发希望产品或者运营能够直接给出抓包链接便于分析,但是很显然叫产品或运营去配置这些工具显然很麻烦,实际情况是写了文档照着配依然可能会出错。

​ 场景二:如果要对抓包的返回结果做进一步的批量处理,此时用Charles或者Fiddler就显得不太方便了。例如之前很火的冲顶大会,在抓包到请求后能看到答题的题目,此时需要编写程序去百度搜索答案,给出结果。

​ MitmProxy是一个能够在服务器上24小时运行的Linux端抓包工具,支持Python对抓包结果进行处理,可以对特定的网址过滤,支持HTTPS抓包,MitmProxy的抓包结果还能转换为Charles能打开的文件,便于进一步分析。

安装

MitmProxy安装需要python环境,至少是3.5版本的python.一般CentOS自带的python版本都是2.7,快速安装python3环境只需要如下几行命令即可:

CentOS6用户:
sudo yum install -y https://centos6.iuscommunity.org/ius-release.rpm
sudo yum install -y python35u python35u-pip

CentOS7用户:
sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpm
sudo yum install -y python35u python35u-pip

之后就是安装MitmProxy,MitmProxy安装时最好指定版本,不同的版本虽然基本功能是一样的,但是一些脚本的使用还是有不同,推荐安装稳定版本。

pip3.5 install mitmproxy==3.0.3

使用

  • 启动mitmproxy
    mitmproxy 默认代理端口是8080,可以使用 -p 命令指定一个端口并启动
    shell $ mitmproxy -p 8090

  • 配置浏览器和手机

  1. 和手机连接到同一个wifi环境下
  2. 修改浏览器代理服务器地址为运行mitmproxy的那台机器(本机)ip地址,端口设定为你启动 mitmproxy时设定的端口,如果没有指定就使用8080。
  3. 手机做同样操作,修改wifi链接代理为 【手动】,然后指定ip地址和端口

​ 以手机配置为例:
iphone.png?sign=77kdWqxhRcScb7W1cILjepgbNIJhPTEyNTE3NzUyODUmaz1BS0lEblIwUjV2NFhPOVo1aFRRbGRoa3ZmVkw2ZjdkSDJaMk8mZT0xNTM3Mjc4NTE1JnQ9MTUzNDY4NjUxNSZyPTE5MTYxMTgyMzUmZj0vaXBob25lLnBuZyZiPXdpa2k=

  • 安装CA证书(https抓包用)
    在手机或pc机上打开浏览器访问 mitm.it 这个地址,选择你当前平台的图标,点击安装证书。

    proxy.png?sign=kw2d3RuZYg6w8oEPWJhl0OjF2kthPTEyNTE3NzUyODUmaz1BS0lEblIwUjV2NFhPOVo1aFRRbGRoa3ZmVkw2ZjdkSDJaMk8mZT0xNTM3Mjc4NTE1JnQ9MTUzNDY4NjUxNSZyPTEzMTIxMDM3NjkmZj0vcHJveHkucG5nJmI9d2lraQ==

    discription.png?sign=h3oNjHZw6apdWDCn8J4Ri70KFdlhPTEyNTE3NzUyODUmaz1BS0lEblIwUjV2NFhPOVo1aFRRbGRoa3ZmVkw2ZjdkSDJaMk8mZT0xNTM3Mjc4NTE1JnQ9MTUzNDY4NjUxNSZyPTE2NzE2MzU1NDMmZj0vZGlzY3JpcHRpb24ucG5nJmI9d2lraQ==

    操作

按键说明
q退出(相当于返回键,可一级一级返回)
d删除当前(黄色箭头)指向的链接
D恢复刚才删除的请求
G跳到最新一个请求
g跳到第一个请求
C清空控制台(C是大写)
i可输入需要拦截的文件或者域名(逗号需要用\来做转译,栗子:feezu.cn)
a放行请求
A放行所有请求
?查看界面帮助信息
^ v上下箭头移动光标
enter查看光标所在列的内容
tab分别查看 Request 和 Response 的详细信息
/搜索body里的内容
esc退出编辑
e进入编辑模式

抓包截图:

0i1hPTEyNTE3NzUyODUmaz1BS0lEblIwUjV2NFhPOVo1aFRRbGRoa3ZmVkw2ZjdkSDJaMk8mZT0xNTM3Mjc4NTE1JnQ9MTUzNDY4NjUxNSZyPTMyMjk0NDkmZj0vcmVzdWx0MS5wbmcmYj13aWtp

JTMYMojHRXSfU4exXaJhPTEyNTE3NzUyODUmaz1BS0lEblIwUjV2NFhPOVo1aFRRbGRoa3ZmVkw2ZjdkSDJaMk8mZT0xNTM3Mjc4NTE1JnQ9MTUzNDY4NjUxNSZyPTExMjQwODAxNDMmZj0vcmVzdWx0Mi5wbmcmYj13aWtp

其他

Mitmproxy支持编写Python脚本对结果进行处理,具体的脚本可以参考github上的官方脚本。

https://github.com/mitmproxy/mitmproxy/tree/master/examples

har_dump.py这个脚本为例,他的作用是将mitmproxy的抓包结果导出到har文件,以便于Charles能分析,运行以下命令即可一边抓包,一边导出文件:

mitmdump -s examples/complex/har_dump.py -w dump.mitm --set hardump=dump.har

更多的用法请参考官方脚本,值得一提的是官方脚本与MitmProxy版本强相关,如果不成功,不妨换个版本试试。

参考链接

https://mitmproxy.org

https://docs.mitmproxy.org/archive/v3

https://github.com/mitmproxy/mitmproxy/tree/master/examples

https://www.jianshu.com/p/0cc558a8d6a2

https://stackoverflow.com/questions/8087184/installing-python-3-on-rhel

镜像地址

http://www.zhangwei.wiki/#/posts/7

pay

转载于:https://www.cnblogs.com/coderzhw/p/11094322.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值