admin管理员组

文章数量:1130349

接上节:Fiddler的使用[抓包] https://blog.csdn/GreatXiang888/article/details/103509817
代码:点这里

分析Request和返回值

从上节第9小点,得知 Request Headers:

GET /api/getHttpVideoInfo.do?pid=3554ca638eed43a7bcbaf259101cb276&tz=-8&from=000news&idl=32&idlr=32&modifyed=false&url=http://tvtv/2019/11/23/VIDEzEc0GomMhqbJubVXXSKy191123.shtml&tsp=1576137212&vn=1540&vc=C8167DFA99A01887A7BD7B8C54EF6F4C&uid=785BC95C310710E1FCA8DDA7F5A48902 HTTP/1.1

其中,pid=3554ca638eed43a7bcbaf259101cb276
同时,它的Host为vdn.appstv
所以浏览器通过get方式访问http://vdn.appstv/api/getHttpVideoInfo.do?pid=3554ca638eed43a7bcbaf259101cb276
之后拿到的数据就是第10小点。

{“ack”:“yes”,“status”:“001”,“tag”:“北京 世界5G大会 项目”,“title”:"[新闻直播间]北京 世界5G大会闭幕 80个项目正式签约",“play_channel”:“CCTV 新闻频道”,“produce”:"",“editer_name”:“zhoujieyi”,“produce_id”:“wxsb01”,“column”:“新闻直播间精切169”,“f_pgmtime”:“2019-11-23 10:31:29”,“cdn_info”:{“cdn_vip”:“vodtv.lxdns”,“cdn_code”:“VOD-MP4-CDN-CNC”,“cdn_name”:“3rd网宿”},“video”:{“totalLength”:“95.00”,“lowChapters”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264200000nero_aac16.mp4”}],“chapters”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264418000nero_aac32.mp4”}],“chapters2”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264818000nero_aac32.mp4”}],“chapters3”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2641200000nero_aac16.mp4”}],“chapters4”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2642000000nero_aac16.mp4”}],“validChapterNum”:5,“url”:""},“hls_cdn_info”:{“cdn_vip”:“newcntv.qcloudcdn”,“cdn_code”:“VOD-HLS-CDN-QQNEW”,“cdn_name”:“3rd腾讯云-新”},“hls_url”:“http://newcntv.qcloudcdn/asp/hls/main/0303000a/3/default/3554ca638eed43a7bcbaf259101cb276/main.m3u8?maxbr=2048”,“asp_error_code”:“0”,“manifest”:{“audio_mp3”: “http://newcntv.qcloudcdn/asp/audio/3/5/5/4/3554ca638eed43a7bcbaf259101cb276/mp3/main.m3u8”},“client_sid”:“3pmUncxlLXx2UtnIePF7mFRfnM+CSn1x3+dz8YEtk7A=”,“public”:“1”,“is_invalid_copyright”:“0”,“is_protected”:“0”,“is_fn_hot”:“true”,“is_p2p_use”:false,“default_stream”:“chapters3”,“lc”:{“isp_code”:“5”,“city_code”:"",“provice_code”:“BJ”,“country_code”:“CN”,“ip”:“115.27.194.97”},“is_ipad_support”:“true”,“version”:“0.2”,“embed”:"",“is_fn_multi_stream”:false}

标黄色的就是我们想要的链接。

获取pid

1,先把python包安装好,能导入正常即可。

import requests, re, json, os
from urllib.parse import urlencode
from urllib.request import urlretrieve
import pprint
import re

2,分析pid位置
http://tvtv/2019/11/23/VIDEzEc0GomMhqbJubVXXSKy191123.shtml页面中,按下Ctrl+U,查看源代码。
按下Ctrl+F,粘贴pid值,找到对应第5个。

3,写代码
用正则表达式将其提取出来。

def getPid(url):
    #url为该页面的网址
    return_text = requests.get(url).text
    searchObj = re.findall(r'<!--repaste.video.code.begin-->(.+?)<!--repaste.video.code.end-->', return_text)
    return searchObj[0]

获取下载视频链接

1,分析
从 分析Request和返回值 可以看到,如果res为返回值,则res['video']['chapters4'][0]['url']为对应视频链接:http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2642000000nero_aac16.mp4
2,写代码

def getVideInfo(pid):
    #pid为该页面视频对应的pid
    #pid 从页面中的源代码找到,在<!--repaste.video.code.begin-->和<!--repaste.video.code.end-->之间
    url = "http://vdn.appstv/api/getHttpVideoInfo.do?pid=" + pid
    res = requests.get(url).text
    res = json.loads(res)
    title = res['title']
    video_url = res['video']['chapters4'][0]['url']
    return title,video_url

保存到本地

直接写代码

def saveVideo(url):
    pid = getPid(url)
    title,video_url = getVideInfo(pid)
    urlretrieve(video_url, title+".mp4")
    print("完成保存!")

效果


文件夹中会添加一个视频文件。
可以打开:
xxx

视频讲解

(录得不好,前几次没经验)
链接:https://pan.baidu/s/1BvV8mgQCGrHgQvUx7rL-mg 提取码:w9od

接上节:Fiddler的使用[抓包] https://blog.csdn/GreatXiang888/article/details/103509817
代码:点这里

分析Request和返回值

从上节第9小点,得知 Request Headers:

GET /api/getHttpVideoInfo.do?pid=3554ca638eed43a7bcbaf259101cb276&tz=-8&from=000news&idl=32&idlr=32&modifyed=false&url=http://tvtv/2019/11/23/VIDEzEc0GomMhqbJubVXXSKy191123.shtml&tsp=1576137212&vn=1540&vc=C8167DFA99A01887A7BD7B8C54EF6F4C&uid=785BC95C310710E1FCA8DDA7F5A48902 HTTP/1.1

其中,pid=3554ca638eed43a7bcbaf259101cb276
同时,它的Host为vdn.appstv
所以浏览器通过get方式访问http://vdn.appstv/api/getHttpVideoInfo.do?pid=3554ca638eed43a7bcbaf259101cb276
之后拿到的数据就是第10小点。

{“ack”:“yes”,“status”:“001”,“tag”:“北京 世界5G大会 项目”,“title”:"[新闻直播间]北京 世界5G大会闭幕 80个项目正式签约",“play_channel”:“CCTV 新闻频道”,“produce”:"",“editer_name”:“zhoujieyi”,“produce_id”:“wxsb01”,“column”:“新闻直播间精切169”,“f_pgmtime”:“2019-11-23 10:31:29”,“cdn_info”:{“cdn_vip”:“vodtv.lxdns”,“cdn_code”:“VOD-MP4-CDN-CNC”,“cdn_name”:“3rd网宿”},“video”:{“totalLength”:“95.00”,“lowChapters”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264200000nero_aac16.mp4”}],“chapters”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264418000nero_aac32.mp4”}],“chapters2”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264818000nero_aac32.mp4”}],“chapters3”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2641200000nero_aac16.mp4”}],“chapters4”:[{“duration”:“95”,“image”:“http://p5.imgtvpic/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2642000000nero_aac16.mp4”}],“validChapterNum”:5,“url”:""},“hls_cdn_info”:{“cdn_vip”:“newcntv.qcloudcdn”,“cdn_code”:“VOD-HLS-CDN-QQNEW”,“cdn_name”:“3rd腾讯云-新”},“hls_url”:“http://newcntv.qcloudcdn/asp/hls/main/0303000a/3/default/3554ca638eed43a7bcbaf259101cb276/main.m3u8?maxbr=2048”,“asp_error_code”:“0”,“manifest”:{“audio_mp3”: “http://newcntv.qcloudcdn/asp/audio/3/5/5/4/3554ca638eed43a7bcbaf259101cb276/mp3/main.m3u8”},“client_sid”:“3pmUncxlLXx2UtnIePF7mFRfnM+CSn1x3+dz8YEtk7A=”,“public”:“1”,“is_invalid_copyright”:“0”,“is_protected”:“0”,“is_fn_hot”:“true”,“is_p2p_use”:false,“default_stream”:“chapters3”,“lc”:{“isp_code”:“5”,“city_code”:"",“provice_code”:“BJ”,“country_code”:“CN”,“ip”:“115.27.194.97”},“is_ipad_support”:“true”,“version”:“0.2”,“embed”:"",“is_fn_multi_stream”:false}

标黄色的就是我们想要的链接。

获取pid

1,先把python包安装好,能导入正常即可。

import requests, re, json, os
from urllib.parse import urlencode
from urllib.request import urlretrieve
import pprint
import re

2,分析pid位置
http://tvtv/2019/11/23/VIDEzEc0GomMhqbJubVXXSKy191123.shtml页面中,按下Ctrl+U,查看源代码。
按下Ctrl+F,粘贴pid值,找到对应第5个。

3,写代码
用正则表达式将其提取出来。

def getPid(url):
    #url为该页面的网址
    return_text = requests.get(url).text
    searchObj = re.findall(r'<!--repaste.video.code.begin-->(.+?)<!--repaste.video.code.end-->', return_text)
    return searchObj[0]

获取下载视频链接

1,分析
从 分析Request和返回值 可以看到,如果res为返回值,则res['video']['chapters4'][0]['url']为对应视频链接:http://vodtv.lxdns/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2642000000nero_aac16.mp4
2,写代码

def getVideInfo(pid):
    #pid为该页面视频对应的pid
    #pid 从页面中的源代码找到,在<!--repaste.video.code.begin-->和<!--repaste.video.code.end-->之间
    url = "http://vdn.appstv/api/getHttpVideoInfo.do?pid=" + pid
    res = requests.get(url).text
    res = json.loads(res)
    title = res['title']
    video_url = res['video']['chapters4'][0]['url']
    return title,video_url

保存到本地

直接写代码

def saveVideo(url):
    pid = getPid(url)
    title,video_url = getVideInfo(pid)
    urlretrieve(video_url, title+".mp4")
    print("完成保存!")

效果


文件夹中会添加一个视频文件。
可以打开:
xxx

视频讲解

(录得不好,前几次没经验)
链接:https://pan.baidu/s/1BvV8mgQCGrHgQvUx7rL-mg 提取码:w9od

本文标签: 视频xxxpython