在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
mitmproxy 1、概念:通过控制台来操作的支持http/https的抓包程序。(类似于charles是图形界面形式的抓包程序) 2、安装:通过python的包管理工具安装:pip3 install mitmproxy 3、相关组件:mitmdump(可以利用其对接python脚本,实现对mitmproxy抓包出的数据用python脚本进行处理) 4、配置https证书:mitmproxy在安装启动后会生成一套证书,在手机端和电脑端安装和信任mitmproxy提供的证书,mitmproxy就可以通过转发获取https请求的解密内 4.1、配置证书步骤: a.启动mitmdump:在终端命令行里输入:mitmdump b.在/Users/dannihong/.mitmproxy目录下可以看到mitmproxy提供的许多证书,不同的证书适用于不同的开发平台(以下步骤针对的是mac系统和iphone手机配置证书的过程)
c.Mac端配置: 双击mitmproxy-ca-cert.pem,弹出‘钥匙串访问’窗口,找到刚刚双击的证书文件,双击修改其信任设置为‘始终信任’
d.Iphone端配置:将刚才的mitmproxy-ca-cert.pem隔空投送至iphone,在‘设置’->‘通用’->‘描述文件’里查看刚刚接收的证书文件,选择安装
这里要注意的是,在IOS10.3版本以后,还要设置‘证书的信任设置’:‘设置’->‘关于本机’->‘证书信任设置’
5、使用mitmproxy 5.1、首先确保手机和电脑连接在同一个局域网内。电脑端运行mitmproxy,相当于开启了一个http/htpps的代理服务。这样手机端在访问互联网数据时,访问服务器request和response的数据都会被mitmproxy获取。 a.获取电脑当前局域网的ip b.手机端配置:在连接的相同的WIFI下,配置HTTP代理:服务器ip就是刚刚获取的电脑局域网ip:192.168.124.4,端口:8080(因为mitmproxy默认在8080端口运行)。
5.2、开启mitmproxy代理: 有两种命令方式: a.终端输入‘mitmproxy’命令:终端会进入一个新的窗口,里面显示手机访问互联网的每个请求 (左下角显示的是请求数量和当前光标所在的请求位置;右下角表示当前在8080端口运行) (回车键进入当前所在的请求详情;tab键可以来回切换Request、Response、Detail内容;通过e、q、a、r键等可以对请求内容进行编辑和重新发送请求,具体用法可以网上搜索mitmproxy的用法) b.这篇主要想讲的是通过mitmdump命令结合python脚本实现对数据的自动化处理 终端输入‘mitmdump’命令,也可以开启mitmproxy代理,在当前终端窗口显示手机端请求内容。 6、mitmdump常用命令 mitmdump -w resfile:启动mitmproxy代理,并将抓取的数据保存在resfile文件里 mitmdump -s script.py:启动mitmproxy代理,并将抓取的数据通过script.py里的脚本进行处理 mitmdump -p 8081 -s scritp.py:mitmproxy默认的端口号是8080;-p 可以指定监听端口号为8081 7、python脚本的写法(两个方法里的形参flow都是HTTPFlow对象) a.通过定义request方法可以打印出请求头的信息 1 def request(flow): 2 print(flow.request.headers) request还有url、cookies、host、method、port、scheme等属性均可输出查看 b.通过定义response方法可以打印出响应的内容 1 def response(flow): 2 print(flow.response.text) response有status_code、headers、cookies等属性。这里对我们比较有用且需要处理的信息就是flow.response.text。 c.对抓包数据的处理 import json import csv 8、运行结果 写完python脚本后,在终端命令行里输入mitmdump -s script.py命令后,操作手机端访问饿了么小程序的某家商铺数据,就可以看到输出至csv文件的内容如下: |
请发表评论