第一次发博客,有什么不足欢迎各位大佬指正。
文章目录
- 一. 准备工作:
- 1.抓包工具:
- 二. 整体思路:
- (一)使用fiddler抓包工具
- 2.配置fiddler自动保存json:
- (二)使用mitmproxy 的mitmdump抓包
- 三.得到json文件:
- 四.解析、保存数据
一. 准备工作:
1.抓包工具:
(1) fiddler抓包工具(v5.0.20202.18177)(安装地址:https://www.telerik.com/download/fiddler)| mitmproxy(安装、配置方法见下文)
抖音,xposed框架(官方地址)(安装xposed框架+justtrustme模块(官方地址) 用于禁止ssl证书验证,需要在root下操作)
相关APK我放在了这里。
(2)夜神模拟器(7.0.0.6)
2.解析工具:
(1)Python3.6 JetBrains PyCharm 2018.2.2 x64
3.存储工具
(1)csv文件存储
二. 整体思路:
(一)使用fiddler抓包工具
1.设置fiddler代理 配置夜神模拟器
打开fiddler 点击Tools进入Options,按照图中勾选后点击Actions
配置远程链接:
选择允许监控远程链接,端口可以随意设置,只要别重复就行,默认8888
重启fiddler,使配置结果生效。
2.配置fiddler自动保存json:
点击右边Inspectors 点击OnBeforeResponse 按箭头指示操作即可。
加入我们的脚本,用于保存响应体中的json文件。
static function OnBeforeResponse(oSession: Session) {
if (m_Hide304s && oSession.responseCode == 304){
oSession["ui-hide"]="true";
}
//1.保存用户信息脚本
if (oSession.uriContains("https://aweme-eagle.snssdk.com/aweme/v1/user")){
var strBody=oSession.GetResponseBodyAsString();
var sps = oSession.PathAndQuery.slice(-58,);
//FiddlerObject.alert(sps)
//根据自己情况修改路径
var filename = "路径" + "/" + sps + ".json";
var curDate = new Date();
var sw : System.IO.StreamWriter;
if (System.IO.File.Exists(filename)){
sw = System.IO.File.AppendText(filename);
sw.Write(strBody);
}
else{
sw = System.IO.File.CreateText(filename);
sw.Write(strBody);
}
sw.Close();
sw.Dispose();
}
}
(二)使用mitmproxy 的mitmdump抓包
1.mitmproxy中mitmdump可与python互联 安装方法详见。
将mitmproxy与模拟器链接好之后,编写python 脚本
import os
import mitmproxy.http
from mitmproxy import ctx
def response(flow:mitmproxy.http.HTTPFlow):
#选择本地文件路径
path='E:/dy_project/dy_data_mitmdump'
try:
os.mkdir(path)
except:
pass
aim_url='https://aweme-eagle.snssdk.com/aweme/v1/user'
#捕捉所有目标url开头的url
if flow.request.url.startswith(aim_url):
#将响应体赋值到json_data中
json_data=flow.response.content
#定义文件名:‘dy_user_data_’+时间戳
filename='dy_u_data'+flow.request.url.split('&ts=')[-1].split('&as=')[0]
with open(path+'/'+filename+'.json','wb')as f:
#以二进制的格式将json文件保存到本地
f.write(json_data)
ctx.log.info(f'**********{filename}.json下载了**********')
此脚本会为我们保存响应体中的json到本地(我这里制定了格式:dy_u_data+时间戳,保证文件的唯一性)。
启动模拟器 开启脚本:
mitmdump -q -s save_data_to_json.py
可以将启动脚本写为.bat文件,方便启动。
cd E:\dy_project
e:
mitmdump -q -s save_data_to_json.py
#说明
-q 屏蔽 mitmdump 默认的控制台日志,只显示自己脚本中的
-s 入口脚本文件
–set body-size-limit=10k 只处理小于 10k 的请求
“~m post” 只处理 post 方法的请求
控制台输出
ps:可以通过 夜神模拟器—操作录制 实现视频的自动滑动。
2.使用python处理响应体
三.得到json文件:
)
json在手,解析不愁。
四.解析、保存数据
import os
import json
#解析json主函数
def parse(self,_json):
file=open(_json,'r',encoding='utf8')
for line in file.readlines():
json_data=json.loads(line)
user=json_data.get('user')
user_name=user.get('nickname')#用户名
user_uid=user.get('uid')#个人id
user_id=user.get('unique_id')#唯一id
user_gender=user.get('gender')#性别
user_country=user.get('country')#国家
user_city=user.get('city')#城市
user_province=user.get('province')#省
user_school_name=user.get('school_name')#学校名
user_birthday=user.get('birthday')#生日
user_verify=user.get('custom_verify')#认证
user_aweme_count=user.get('aweme_count')#作品数
user_favorite=user.get('favoriting_count')#ta喜欢数
user_signature=user.get('signature')#个人签名
user_focus=user.get('following_count')#关注数
user_appreciate=user.get('total_favorited')#点赞数
user_fans=user.get('mplatform_followers_count')#粉丝数
当然,您也可以选择边抓包边解析边存储,只需要将启动mitmdump时带上自己的脚本即可。
解析出的结果可自行选择保存方式,我保存到了csv文件中。