Python下載手機小視頻的操作方法
今天為大家介紹使用 mitmproxy 這個抓包工具如何監(jiān)控手機上網(wǎng),并且通過抓包,把我們想要的數(shù)據(jù)下載下來。
啟動 mitmproxy
首先我們通過執(zhí)行命令 mitmweb 啟動mitmproxy,讓它處理監(jiān)聽狀態(tài),服務(wù)會監(jiān)聽本機 8080 端口,啟動后如下:
$ mitmweb Web server listening at http://127.0.0.1:8081/ Proxy server listening at http://*:8080

手機網(wǎng)絡(luò)配置
1.保證手機和電腦在同一局域網(wǎng)內(nèi),并查看電腦的局域網(wǎng) IP 地址是多少以備用,查看方式可以用命令查看,如 Windows 系統(tǒng)用
ipconfig 命令,Mac 或 Linux 則用命令 ifconfig,看到如下圖所示,找到本機在局域網(wǎng)的 IP 地址。

不同操作系統(tǒng),可能展示結(jié)果不同,在這里我們可以看到紅框里我本機的 IP 地址為 192.168.0.108。
2.配置手機代理地址,比如以下用 iphone 手機進行配置,打開設(shè)置 -> 無線局域網(wǎng) -> 點現(xiàn)在連接的網(wǎng)絡(luò) -> 點最下面點 HTTP 代
理配置,選擇手動后,配置代理地址為我們電腦的 IP地址和 mitmproxy 的監(jiān)聽端口,配置如下圖所示:

3.現(xiàn)在我們就可以讓手機通過電腦上網(wǎng)了,不過目前手機 App 都是通過 HTTPS 加密請求,所以我們需要在手機上安裝個
mitmproxy 的 HTTPS 證書。接下來我們打開手機瀏覽器,輸入網(wǎng)址:mitm.it,打開如下圖所示頁面,選擇對應(yīng)手機的操作系統(tǒng),
下載證書并安裝。

下載頁
在這里我點 Apple 的圖標(biāo)下載證書,下載后等待安裝:


單擊上面的安裝,可能會出現(xiàn)信任的提示,只要選擇信任證書就可以了,下面是安裝好的界面如下圖:

好了,配置完成下面我們點開個手機 APP 看到電腦 mitmweb 的頁面上,已經(jīng)出現(xiàn)請求內(nèi)容了。

編寫下載腳本
好了,現(xiàn)在經(jīng)過分析攔截的請求,我們開始用 Python 編寫代碼,通過解析視頻的 url 將視頻下載到本地。在這里我們先來打印下
數(shù)據(jù),新建文件 xiaoshipin.py,然后編寫如下代碼,實現(xiàn)將已編碼的 json 字符串解碼為 python 對象:
#xiaoshipin.py import json def response(flow): url='https://api.amemv.com/aweme/v1/aweme/post/' #篩選出以上面url為開頭的url if flow.request.url.startswith(url): text=flow.response.text #將已編碼的json字符串解碼為python對象 data=json.loads(text) print(data)
編輯完后保存,然后執(zhí)行命令:mitmweb -s xiaoshipin.py,帶上這段腳本來運行我們的代理服務(wù),刷新幾個視頻,會看到如下圖所示內(nèi)容:

其中就包含了我們需要的下載地址信息,接下來我們只需提取視頻的 url ,并且緩存視頻到本地就 OK 了。

下面我們就來修改上面的 xiaoshipin.py 的代碼,完善下視頻下載的功能。
#xiaoshipin.py
#引入包
import json,os
import requests
#只攔截并處理返回請求
def response(flow):
#請求的 url
url='https://api.amemv.com/aweme/v1/aweme/post/'
#篩選出以上面url為開頭的url
if flow.request.url.startswith(url):
text=flow.response.text
#將已編碼的json字符串解碼為python對象
data=json.loads(text)
#剛分析看到每一個視頻的所有信息
#都在aweme_list中
video_url=data['aweme_list']
#設(shè)置下載路徑
path='/Users/xx/shipin'
#如果文件夾不存在,則新建
if not os.path.exists(path):
os.mkdir(path)
# 循環(huán)所有視頻 url
for each in video_url:
#視頻描述
desc=each['desc']
url=each['video']['play_addr']['url_list'][0]
# 設(shè)置視頻名稱
filename=path+'/'+desc+'.mp4'
# 用 request 請求視頻流
req=requests.get(url=url,verify=False)
# 保存視頻文件
with open(filename,'ab') as f:
f.write(req.content)
f.flush()
print(filename,'下載完畢')上面我已經(jīng)把相關(guān)代碼注釋好了,現(xiàn)在我們保存編輯好的代碼,然后再次執(zhí)行命令:mitmweb -s xiaoshipin.py,啟動監(jiān)聽服務(wù)。
然后打開手機再次下視頻,就會看到視頻是不是已經(jīng)都存到本地了。
到此這篇關(guān)于Python 下載手機小視頻的文章就介紹到這了,更多相關(guān)Python 下載手機小視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Python 2.7即將停止支持時,我們?yōu)槟銕砹艘环輕ython 3.x遷移指南
這篇文章主要介紹了在Python 2.7即將停止支持時我們?yōu)槟銣?zhǔn)備了一份python 3.x遷移指南的相關(guān)資料,需要的朋友可以參考下2018-01-01
深入了解python的tkinter實現(xiàn)簡單登錄
這篇文章主要為大家介紹了python的tkinter實現(xiàn)簡單登錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12
tensor.squeeze函數(shù)和tensor.unsqueeze函數(shù)的使用詳解
本文主要介紹了tensor.squeeze函數(shù)和tensor.unsqueeze函數(shù)的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
基于Python實現(xiàn)音樂播放器的實現(xiàn)示例代碼
這篇文章主要介紹了如何利用Python編寫簡易的音樂播放器,文中的示例代碼講解詳細,具有一的參考價值,需要的小伙伴可以參考一下2022-04-04
Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作分析
這篇文章主要介紹了Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作,結(jié)合實例形式分析了Django框架文件上傳的原理、步驟、實現(xiàn)方法以及圖片上傳時自定義上傳路徑、上傳文件名的相關(guān)操作技巧,需要的朋友可以參考下2019-05-05
Python讀取excel文件中的數(shù)據(jù),繪制折線圖及散點圖
這篇文章主要介紹了Python讀取excel文件中的數(shù)據(jù),繪制折線圖及散點圖,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09

