mac python3 利用mitmproxy抓取安卓手机流量包

最近试了一下利用mitmproxy来抓取安卓手机流量,用于分析。前面使用过Charles,但是是图形化界面的,不方便把数据存下来,mitmproxy支持python编程,容易把数据存放起来,所以这里分享一下使用方法。

安装

  • 首先下载网易mumu模拟器,用于android手机模拟,这是因为真机有诸多的限制,所以用模拟器方便一点,下载链接为: http://mumu.163.com/
  • 然后需要安装mitmproxy,安装也很简单:
pip install mitmproxy

配置

  • 打开mumu模拟器
  • 配置mitmproxy

设置代理,其中ip为电脑本机的ip,在命令行中输入:ifconfig就可以得到,我的为:

(base) ➜  ~ ifconfig             
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
	inet 127.0.0.1 netmask 0xff000000 
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
	nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
	ether f4:5c:89:ab:a4:3d 
	inet 192.168.0.105 netmask 0xffffff00 broadcast 192.168.0.255
	media: autoselect
	status: active

安装证书:打开模拟器的浏览器,输入地址:mitm.it

选择对应平台并安装证书,安装完成后就可以抓 https 的包了

创建python demo.py

import json
from mitmproxy import ctx
import pymysql


HOST=''
USER_NAME=''
PASSWORD=''
SPIDER_CAR_DB=''


conn = pymysql.connect(host=HOST, 
                        user=USER_NAME,
                        password=PASSWORD,
                        database=SPIDER_CAR_DB,charset="utf8")
def response(flow):
        url='url'
        cursor = conn.cursor()
        # text = flow.response.text
        # data = json.loads(text)
        # ctx.log.info(str(data))
        if flow.request.url.startswith(url):
                text = flow.response.text
                data = json.loads(text)
                print(data)
                ctx.log.info(str(data))
                sql = 'INSERT INTO yourdb(`information`) VALUES("%s");' %(str({'detail':data['detail']}))
                # INSERT INTO maihaoche(`information`) VALUES('{"sex": 1, "age": 18, "nick_name": "小萌"}');
                ctx.log.info(sql)
                try:
                        cursor.execute(sql)
                        conn.commit()
                except Exception as e:
                        conn.rollback()
                        ctx.log.info(str(e))
                        ctx.log.info("connection error")
response()

修改上述相应的配置为你的配置就行了。然后运行:

mitmweb -s demo.py

最后一步就是点机模拟器的APP,上面会打开一个网页,网页上面就会发现有相应的请求,然后再看你自己的数据库,应该会保存数据,如果有错误,则会报错。

参考文献

[1].一步一步教你 HTTPS 抓包. https://juejin.im/post/584b711d8e450a006c586ca6

[2].使用Charles抓包安卓模拟器(MuMu). https://www.jianshu.com/p/1d0360e50a01

猜你喜欢

转载自blog.csdn.net/w5688414/article/details/105015863