前段時間,受疫情影響,法律人們雖然足不出戶,但也沒有停下學(xué)習(xí)和分享的腳步。星瀚聯(lián)合WeLegal推出了「來自技術(shù)派的法律實務(wù)指南」系列公益直播(如需獲取回放可以添加“星瀚小星”為好友)。同時,包括律協(xié)在內(nèi)的不少平臺也紛紛在線上提供法律課程。筆者在學(xué)習(xí)的過程中,也在思考我們有什么方法可以將這些直播視頻記錄下來(在主辦方并未禁止的情況下),供個人反復(fù)學(xué)習(xí)參考使用呢?一種自然的想法是電腦錄屏,比如使用win10自帶的Xbox錄屏工具,或者OBS等第三方軟件。不過錄屏文件一般體積較大(1080P分辨率下錄制一小時大約800MB),此外在直播期間也不能對電腦進(jìn)行其他操作,著實不便。所以我們需要采用一種能在后臺進(jìn)行的方法——找到直播url地址,并將流媒體文件下載到本地。
基礎(chǔ):獲取直播url
由于目前大多數(shù)的直播課程是在微信視頻號/小程序的環(huán)境下,我們在微信中點(diǎn)擊課程鏈接后并不能在瀏覽器中打開,無法直觀地看到url地址,所以這里要請出抓包工具。所謂抓包,就是將網(wǎng)絡(luò)傳輸發(fā)送與接收的數(shù)據(jù)包進(jìn)行截獲、重發(fā)、編輯、轉(zhuǎn)存等操作。在之前的《python X律師工作效率⑥:手速不快也能預(yù)約會見》文章中,我們就是通過Fiddler抓包工具,獲取了和“律師會見”小程序之間的HTTPS通信,現(xiàn)在要取得直播課程地址,也是同樣的道理。
Step1:安裝Fiddler軟件→安裝https證書→開啟監(jiān)聽。
Step2:在微信中點(diǎn)擊直播鏈接。
Step3:以在微信視頻號中直播的課程為例,我們會在Fiddler中找到開頭為
https://voipfinderrdsliveplay.wxqcloud.qq.com/trtc的url,這就是直播地址。另外也會發(fā)現(xiàn)一些開頭為
https://finder.video.qq.com/251的url,那些是視頻號中顯示的其他視頻地址,同理也可以用于下載。
P.S.如果遇到抓包小程序、視頻號沒有結(jié)果的,是因為PC微信升級,小程序進(jìn)程從WechatApp.exe變成了WechatAppex.exe。這時要刪除
C:\Users\admin\AppData\Roaming\Tencent\WeChat\XPlugin\PluginsWMPFRuntime下所有的文件夾,重新抓包即可。
進(jìn)階:下載流媒體文件
復(fù)制url后,其實就可以直接粘貼在瀏覽器中,會彈出一個flv文件的下載頁面:
但是用瀏覽器的話會遇到一個問題,就是flv文件不斷在下載,直到直播停止后才會結(jié)束。中間手動停止或者誤操作而取消的話,視頻文件只能去臨時文件夾尋找。原因在就于直播是以流媒體的形式傳輸?shù)模瑪?shù)據(jù)包經(jīng)過分段后實時上傳和下載,并不是一個完整的、靜態(tài)的視頻文件。
我們改用python來下載flv文件,這樣可以隨時停止錄制,也可以隨時打開stream.flv文件查看錄制效果。
高級:mitmdump+pywinatuo自動化
目前上海每周末都會開展常態(tài)化的核酸檢測大篩,如果直播課程開始時,我們正在樓下排隊核酸,沒法抓包地址并執(zhí)行下載程序怎么辦?所以我們還要設(shè)定定時任務(wù),提前做好準(zhǔn)備,讓python自動執(zhí)行上述流程。
Step1:利用pywinauto(用于自動化Microsoft Windows GUI的python模塊)來模擬打開視頻號的過程。比如我們想觀看法盟平臺上的直播課程,可以用命令行直接打開“視頻號”程序,隨后定位到搜索欄,并輸入“WeLegal公司法務(wù)聯(lián)盟”,然后回車即可。
Step2:利用mitmdump監(jiān)聽數(shù)據(jù)包,抓取直播url。mitmdump是mitmprxoy的命令行接口,可以實時監(jiān)控請求,這樣我們就不用手動截獲和分析HTTPS請求和響應(yīng),只要寫好python腳本,即可分析處理并存儲我們需要的直播url。
Step3:使用apscheduler模塊啟動定時python任務(wù),或者創(chuàng)建一個windows計劃任務(wù)均可。
這樣我們就可以徹底解放雙手,自動化地錄制課程,深入學(xué)習(xí)了。星瀚的大部分線上分享都會提供回放,大家可以節(jié)省不少時間;不過同樣的,讀者們也可以在上述方法的基礎(chǔ)上舉一反三,運(yùn)用到工作中其他所需的場景中。
文:邵洋
本文為星瀚原創(chuàng),如需轉(zhuǎn)載請先聯(lián)系。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 sumchina520@foxmail.com 舉報,一經(jīng)查實,本站將立刻刪除。