【Fidder网络抓包+Python爬虫】下载微信小程序视频
首先聲明本篇博客以學習為目的,侵權即刪。
文章目錄
- 1. Fidder抓包
- 1.1 在電腦上打開微信小程序視頻播放頁以及Fidder軟件
- 1.2 點擊視頻播放按鈕,并查看Fidder抓到的數據包
- 2. Python爬蟲
- 2.1 視頻下載
- 2.2 視頻合并
- 2.3 完整代碼
- 3. 寫在最后
1. Fidder抓包
???????關于fidder軟件的安裝和配置,這里我就不多贅述了,大家上網都很容易搜到。
1.1 在電腦上打開微信小程序視頻播放頁以及Fidder軟件
1.2 點擊視頻播放按鈕,并查看Fidder抓到的數據包
???????這個時候Fidder軟件界面會抓到很多數據流,如果有視頻數據的話直接點保存即可,但是一般來說顯示為普通響應,但是記得看來源(Process欄為Wechat),別瞅錯了!
???????然后雙擊該相應,就可以看到右側的出現的一系列數據,但一般看Raw項就好,可以看到其視頻存儲網址(雙擊網站就可以下載這一小段視頻),以及Host等一系列請求頭數據。我們可以看到其網址最后下載為.ts文件,且該視頻標號為00009(多看幾個響應就可以發現其中的規律),這種文件格式比較討厭,會把一個完整的視頻拆分成諸多5-10s長的文件,所以后期需要用到python爬蟲,以及視頻合并。
m3u8是蘋果公司推出一種視頻播放標準,是一種文件檢索格式,將視頻切割成一小段一小段的ts格式的視頻文件,然后存在服務器中(現在為了減少I/o訪問次數,一般存在服務器的內存中),通過m3u8解析出來路徑,然后去請求,是現在比較流行的一種加載方式。目前,很多新聞視頻網站都是采用這種模式去加載視頻。
M3U8文件是指UTF-8編碼格式的M3U文件。M3U文件是記錄了一個索引純文本文件,打開它時播放軟件并不是播放它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。原視頻數據分割為很多個TS流,每個TS流的地址記錄在m3u8文件列表中。
???????通過網絡抓包工具,我們可以獲取視頻網站的請求頭數據,以及視頻存儲網址:
| 請求頭 | headers={‘User-Agent’: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat’, ‘Host’:‘videodest-cdn.xiaodaka.net’} |
| 各視頻存儲網址 | ‘http://videodest-cdn.xiaodaka.net/video/ochvq0PokL-KKdXSKI4IV1pXAdL41571990548700-’+視頻編號+".ts" |
2. Python爬蟲
2.1 視頻下載
???????首先使用爬蟲測試該視頻共被分為多少節,以及各個頁面的相應情況(200表示成功響應,423表示響應失敗),隨后保存諸多片段視頻。
import requests headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat', 'Host':'videodest-cdn.xiaodaka.net'} for i in range(1000000):if (i+1)<10:k='0'+str(i+1)else:k=str(i+1)link='http://videodest-cdn.xiaodaka.net/video/ochvq0PokL-KKdXSKI4IV1pXAdL41571990548700-000'+k+'.ts'path="C:\\Users\\123\\Desktop\\vedio\\"+k+'.ts'r=requests.get(link,headers=headers,timeout=20)if r.status_code!=200:# 200表示網站成功響應breakprint(link)print(str(i+1),"頁面響應碼:",r.status_code)###########################################保存視頻with open(path,"wb") as f:f.write(r.content)f.close()2.2 視頻合并
import os def MergeTs(download_path,hebing_path):all_ts = os.listdir(download_path)with open(hebing_path, 'wb+') as f:for i in range(len(all_ts)):ts_video_path = os.path.join(download_path, all_ts[i])f.write(open(ts_video_path, 'rb').read())print("合并完成!!")2.3 完整代碼
import os import requests def MergeTs(download_path,hebing_path):# 視頻合并all_ts = os.listdir(download_path)with open(hebing_path, 'wb+') as f:for i in range(len(all_ts)):ts_video_path = os.path.join(download_path, all_ts[i])f.write(open(ts_video_path, 'rb').read())print("合并完成!!") ############################################# headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat', 'Host':'videodest-cdn.xiaodaka.net'} for i in range(1000000):if (i+1)<10:k='0'+str(i+1)else:k=str(i+1)link='http://videodest-cdn.xiaodaka.net/video/ochvq0PokL-KKdXSKI4IV1pXAdL41571990548700-000'+k+'.ts'path="C:\\Users\\123\\Desktop\\vedio\\"+k+'.ts'r=requests.get(link,headers=headers,timeout=20)if r.status_code!=200:# 200表示網站成功響應breakprint(link)print(str(i+1),"頁面響應碼:",r.status_code)###########################################保存視頻with open(path,"wb") as f:f.write(r.content)f.close() MergeTs("C:\\Users\\123\\Desktop\\vedio", "C:\\Users\\123\\Desktop\\first.mp4")3. 寫在最后
如果視頻不是很長的話建議錄屏,畢竟錄屏多簡單…
反之則可以嘗試本文方法下載視頻。
創作不易,點個贊吧(*^_^*)
總結
以上是生活随笔為你收集整理的【Fidder网络抓包+Python爬虫】下载微信小程序视频的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你当前的windows版本即将停止支持。
- 下一篇: Python实战之数字、日期和时间的高级