第一次發博客,有什么不足歡迎各位大佬指正,
一. 準備作業:
1.抓包工具:
(1) fiddler抓包工具(v5.0.20202.18177)(安裝地址:https://www.telerik.com/download/fiddler)| mitmproxy(安裝、配置方法見下文)
抖音,xposed框架(安裝xposed框架+just trustme模塊 用于禁止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檔案,
2. static function OnBeforeResponse(oSession: Session) {
//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();
}
//2.保存視頻腳本
oSession.utilD ecodeResponse();
if (oSession.fullUrl.Contains("dy.ixigua.com/")){
oSession.SaveResponseBody("E:\\Fiddler\\" + oSession.SuggestedFilename);
}
(二)使用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檔案中,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/204972.html
標籤:其他
