一、Fiddler的安裝與設置
Fiddler官網:https://www.telerik.com/download/fiddler
電子郵件隨便填一下就可以了,按照安裝提示一直點確定即可安裝。
打開Fiddler,在Tools---Options處進行設置,如圖:
ps:這里的端口8888,是待會與手機/模擬器進行連接要使用到的(手機也可以,這里用模擬器示范)
在電腦下載一個手機模擬器,這里我用的是夜神模擬器
下載地址:https://www.yeshen.com/,下載后安裝即可
打開模擬器,進入設置-----WLAN,會發現已經連上了一個網絡,鼠標長按,選擇修改網絡
選擇高級選項,代理改為手動,然后輸入你電腦的ip和8888端口號保存即可
在模擬器中打開瀏覽器,輸入:http://你的電腦ip地址:8888,如圖所示,下載證書並打開安裝
證書名隨便取一個名字就好了,若沒有安裝證書,將無法抓取HTPPS請求
二、抓取抖音數據包
打開Fiddler軟件,Rules------Customize Rules進入Fiddler ScriptEditor頁面
定位到OnBeforeResponse函數下面,編寫抓取數據的規則
1處是Fiddler中捕捉到的抖音數據包的路徑,抖音官方可能時不時會更改路徑,具體以實際分析為准
2處是保存地址,更改為你們自己的保存地址。代碼放在下面,方便復制。
if (oSession.uriContains("https://api3-core-c-hl.amemv.com/aweme/v1/aweme/post/")){ var strBody=oSession.GetResponseBodyAsString(); var sps = oSession.PathAndQuery.slice(-58,); //FiddlerObject.alert(sps) var filename = "H:/software/fid" + "/" + 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(); }
打開模擬器中的抖音,搜索刀某刀進入個人頁面,滑動抖音,使屏幕整個瀏覽完全部作品
這個時候Fiddler加載出了js對象,被我們前面編寫的抓取規則捕捉到,保存在本地
分析得到的json文件,找出視頻url的位置,接下來用python代碼下載視頻就輕松多了
下載成功結果如圖,刀某刀的個人主頁視頻就保存下來了,而且還是無水印視頻
下面附上python代碼,保存路徑記得改為自己電腦的
import os,json,requests # 請求頭 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'} videos_list = os.listdir('H:/software/fid/') #獲取文件夾內所有json包名 count = 1 #計數,用來作為視頻名字 for videos in videos_list: #循環json列表,對每個json包進行操作 a = open('H:/software/fid/{}'.format(videos),encoding='utf-8') #打開json包 content = json.load(a)['aweme_list'] #取出json包中所有視頻 for video in content: #循環視頻列表,選取每個視頻 video_url = video['video']['play_addr']['url_list'][1] #獲取視頻url,每個視頻有4個url,我選的第2個 videoMp4 = requests.get(video_url,headers=headers).content #獲取視頻二進制代碼 with open('H:/software/video/{}.mp4'.format(count),'wb') as f: #以二進制方式寫入路徑,記住要先創建路徑 f.write(videoMp4) #寫入 print('視頻{}下載完成'.format(count)) #下載提示 count += 1 #計數+1
至此,Python結合Fiddler爬取抖音視頻就完成了
如有疑問,歡迎在下面評論,或者私信我