在我的上篇文章中,主要记录如何安装mitmproxy和抓取https流量。参考链接:
python使用mitmproxy和mitmdump抓包在电脑上抓包-CSDN博客
本篇主要使用python配合mitmdump来抓包和处理返回包,更加灵活,这也是mitmproxy(mitmdump)的最强大之处(其抓包、分析包不如fiddler、charles直观方便)。
概要就是:
管理员运行cmd,然后运行mitmdump -s xxx.py -p 8889(8889是端口,被监控的浏览器的代理127.0.0.1:8889或者被监控的手机的代理198.x.x.x:8889,要设置为8889端口才行),xxx.py为自己编写的抓包文件,参数-s就是指定一个脚本来处理截获的数据。
如果xxx.py中要将符合条件的内容抓取到一个txt中,最好写绝对路径,如D:/cap.txt。
下面是一个最简单的xxx.py代码,用于抓取手机某宝直播间的弹幕的用户昵称和发言内容。(如何在手机设置mitm在下篇记录python使用mitmproxy和mitmdump抓包在手机上抓包(三)-CSDN博客,这里主要是为了演示一个xxx.py的写法)
# -*- coding: utf-8 -*-
from mitmproxy import ctx
import json
#解析数据,获取内容
def deal_json(str):
dm_json=json.loads(str)
for x in dm_json['data']['comments']:
y=str(x['publisherNick']+'-'+x['content'])+'\n'
ctx.log.error(y)
fh = open('D:/cap.txt', 'a')
fh.write(y)
fh.close()
#获取含有指定字符串的请求包的响应内容
def response(flow):
if 'https://acs.m.taobao.com/gw/mtop.taobao.iliad.comment.query.latest/1.0/?data=' in flow.request.url:
text = flow.response.get_text()
deal_json(text)
在手机上设置好代理以后,电脑上cmd里运行mitmdump -s xxx.py -p 8889,某宝直播的弹幕数据就会被电脑上的mitm中间人捕获(配合手机自动化更强大参考文章python使用uiautomator2操作雷电模拟器_小小爬虾的博客-CSDN博客),并通过 xxx.py将指定内容存入D:/cap.txt文件中。
运行结果如图: