博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抓包工具之MitmProxy
阅读量:4965 次
发布时间:2019-06-12

本文共 1763 字,大约阅读时间需要 5 分钟。

抓包工具之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.rpmsudo yum install -y python35u python35u-pipCentOS7用户:sudo yum install -y https://centos7.iuscommunity.org/ius-release.rpmsudo 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上的官方脚本。

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

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

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

参考链接

镜像地址

pay

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

你可能感兴趣的文章
JRebel安装部署,激活
查看>>
OPENSSL使用方法
查看>>
下载GO的开源开发工具LITEIDE
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>
DELPHI开发LINUX包
查看>>
CENTOS7安装OPENSSL
查看>>
LITEIDE配置
查看>>
DELPHI开发LINUX的动态库
查看>>
TThread.Queue和TThread.Synchronize的区别
查看>>
CENTOS7安装NGINX
查看>>
更新.net core 3.0,dotnet ef命令无法使用的解决办法
查看>>
React躬行记(13)——React Router
查看>>