騰訊視頻 微信小程序 視頻下載方案
本文所有教程及源碼、軟件僅為技術(shù)研究。不涉及計(jì)算機(jī)信息系統(tǒng)功能的刪除、修改、增加、干擾,更不會(huì)影響計(jì)算機(jī)信息系統(tǒng)的正常運(yùn)行。不得將代碼用于非法用途,如侵立刪!
環(huán)境
win10
Charles
Internet Download Manager
抓包分析

搜索關(guān)鍵詞可以很容易的找到發(fā)包的位置,解析json數(shù)據(jù),搜索mp4或m3u8之類的后綴關(guān)鍵詞找到下面的字段,看數(shù)據(jù)應(yīng)該是需要的,提取出來解析一下看詳細(xì)的數(shù)據(jù)


可以看到了請(qǐng)求頭和視頻地址,還有加密串之類的數(shù)據(jù),具體的拼接方式還不太了解,先去pc端隨便抓一個(gè)鏈接看下數(shù)據(jù)格式,然后拼接視頻地址
提取url并拼接下載地址
import requests
import json
from jsonpath import jsonpath
headers = {
? ?"xweb_xhr": "1",
? ?"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/6945",
? ?"content-type": "application/json",
? ?"accept": "*/*",
? ?"sec-fetch-site": "cross-site",
? ?"sec-fetch-mode": "cors",
? ?"sec-fetch-dest": "empty",
? ?"accept-language": "zh-CN,zh"
}
cookies = {
? ?"main_login": "wx",
? ?"openid": "oXw7q0DqxLpCmwrIvXWn6bVe3X0w",
? ?"appid": "wxa75efa648b60994b",
? ?"vuserid": "2887009071",
? ?"vusession": "h1tF_AkElbXtutQuw2JoJw.N",
? ?"vversion_name": "8.2.95",
? ?"video_bucketid": "4",
? ?"video_omgid": "2887009071"
}
params = {
? ?"video_appid": "3000002",
? ?"guid": "c9eb459f9be06ea0",
? ?"vplatform": "0"
}
data = {
? ?"page_params": {
? ? ? ?"page_type": "detail_operation",
? ? ? ?"page_id": "small_app_sv_channel_jump",
? ? ? ?"load_type": "3",
? ? ? ?"data_key": "vid=x325605uz2g",
? ? ? ?"flow_experiment_id": "10000"
? ?}
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, cookies=cookies, params=params, data=data)
# print(response.text)
# print(response)
tvk_video_info = jsonpath(response.json(), "$..item_params.tvk_video_info")
# print(tvk_video_info)
for video_info in tvk_video_info:
? ?# print(video_info)
? ?title = jsonpath(json.loads(video_info), "$..ul.ui..url")[-1]
? ?title = title.replace("http://video.dispatch.tc.qq.com/", "http://ugccsy.qq.com/").replace("svp_50069/", "")
? ?print(title)
? ?fn = jsonpath(json.loads(video_info), "$..vl.vi..fn")[0]
? ?print(fn)
? ?vkey = jsonpath(json.loads(video_info), "$..vl.vi..fvkey")[0]
? ?print(vkey)
? ?url = f'{title}{fn}?vkey={vkey}'
? ?print(url)
? ?break
效果

資源下載
本文僅供學(xué)習(xí)交流使用,如侵立刪!