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

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

安装

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

配置

  • 打开mumu模拟器
  • 配置mitmproxy

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

 
  1. (base) ➜ ~ ifconfig

  2. lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384

  3. options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>

  4. inet 127.0.0.1 netmask 0xff000000

  5. inet6 ::1 prefixlen 128

  6. inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1

  7. nd6 options=201<PERFORMNUD,DAD>

  8. gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280

  9. stf0: flags=0<> mtu 1280

  10. XHC20: flags=0<> mtu 0

  11. en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500

  12. ether f4:5c:89:ab:a4:3d

  13. inet 192.168.0.105 netmask 0xffffff00 broadcast 192.168.0.255

  14. media: autoselect

  15. status: active

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

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

创建python demo.py

 
  1. import json

  2. from mitmproxy import ctx

  3. import pymysql

  4.  
  5.  
  6. HOST=''

  7. USER_NAME=''

  8. PASSWORD=''

  9. SPIDER_CAR_DB=''

  10.  
  11.  
  12. conn = pymysql.connect(host=HOST,

  13. user=USER_NAME,

  14. password=PASSWORD,

  15. database=SPIDER_CAR_DB,charset="utf8")

  16. def response(flow):

  17. url='url'

  18. cursor = conn.cursor()

  19. # text = flow.response.text

  20. # data = json.loads(text)

  21. # ctx.log.info(str(data))

  22. if flow.request.url.startswith(url):

  23. text = flow.response.text

  24. data = json.loads(text)

  25. print(data)

  26. ctx.log.info(str(data))

  27. sql = 'INSERT INTO yourdb(`information`) VALUES("%s");' %(str({'detail':data['detail']}))

  28. # INSERT INTO maihaoche(`information`) VALUES('{"sex": 1, "age": 18, "nick_name": "小萌"}');

  29. ctx.log.info(sql)

  30. try:

  31. cursor.execute(sql)

  32. conn.commit()

  33. except Exception as e:

  34. conn.rollback()

  35. ctx.log.info(str(e))

  36. ctx.log.info("connection error")

  37. response()

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

mitmweb -s demo.py

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

参考文献

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值