首頁 > 軟體

Python下載手機小視訊的操作方法

2022-04-18 22:02:27

今天為大家介紹使用 mitmproxy 這個抓包工具如何監控手機上網,並且通過抓包,把我們想要的資料下載下來。

啟動 mitmproxy

首先我們通過執行命令 mitmweb 啟動mitmproxy,讓它處理監聽狀態,服務會監聽本機 8080 埠,啟動後如下:

$ mitmweb
Web server listening at http://127.0.0.1:8081/
Proxy server listening at http://*:8080

手機網路設定

1.保證手機和電腦在同一區域網內,並檢視電腦的區域網 IP 地址是多少以備用,檢視方式可以用命令檢視,如 Windows 系統用

ipconfig 命令,Mac 或 Linux 則用命令 ifconfig,看到如下圖所示,找到本機在區域網的 IP 地址。

不同作業系統,可能展示結果不同,在這裡我們可以看到紅框裡我本機的 IP 地址為 192.168.0.108。

2.設定手機代理地址,比如以下用 iphone 手機進行設定,開啟設定 -> 無線區域網 -> 點現在連線的網路 -> 點最下面點 HTTP 代

理設定,選擇手動後,設定代理地址為我們電腦的 IP地址和 mitmproxy 的監聽埠,設定如下圖所示:

3.現在我們就可以讓手機通過電腦上網了,不過目前手機 App 都是通過 HTTPS 加密請求,所以我們需要在手機上安裝個

mitmproxy 的 HTTPS 證書。接下來我們開啟手機瀏覽器,輸入網址:mitm.it,開啟如下圖所示頁面,選擇對應手機的作業系統,

下載證書並安裝。

下載頁

在這裡我點 Apple 的圖示下載證書,下載後等待安裝:

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

好了,設定完成下面我們點開個手機 APP 看到電腦 mitmweb 的頁面上,已經出現請求內容了。

編寫下載指令碼

好了,現在經過分析攔截的請求,我們開始用 Python 編寫程式碼,通過解析視訊的 url 將視訊下載到本地。在這裡我們先來列印下

資料,新建檔案 xiaoshipin.py,然後編寫如下程式碼,實現將已編碼的 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)

編輯完後儲存,然後執行命令:mitmweb -s xiaoshipin.py,帶上這段指令碼來執行我們的代理服務,重新整理幾個視訊,會看到如下圖所示內容:

其中就包含了我們需要的下載地址資訊,接下來我們只需提取視訊的 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']        
#設定下載路徑        
path='/Users/xx/shipin'        
#如果資料夾不存在,則新建        
if not os.path.exists(path):            
os.mkdir(path)
        # 迴圈所有視訊 url        
        for each in video_url:            
 #視訊描述            
 desc=each['desc']            
 url=each['video']['play_addr']['url_list'][0]           
  # 設定視訊名稱            
  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,'下載完畢')

上面我已經把相關程式碼註釋好了,現在我們儲存編輯好的程式碼,然後再次執行命令:mitmweb -s xiaoshipin.py,啟動監聽服務。

然後開啟手機再次下視訊,就會看到視訊是不是已經都存到本地了。

到此這篇關於Python 下載手機小視訊的文章就介紹到這了,更多相關Python 下載手機小視訊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com