还是视频分析,央视《动物世界》的视频

查看 180|回复 11
作者:seeyou_shj   
感觉发这样的帖子增加不了多少分啊。今天还是无聊,先发这吧。为什么不发软件破解,原因是自己没研究这一块,为啥呢?毕竟自己也偶尔做点软件开发,感觉费了很大力气,别人缺很简单就破解了,免费版随后就更新,真的很无聊。自己的努力得不到任何回报,也就不想继续这样努力开发程序了吧。
这次还是解析视频,用到的工具是python,浏览器。因为最近觉得动物世界很有意思,所以找了一个央视的官网,免费的。网址:
https://tv.cctv.com/cctv1/?spm=C52056131267.PAgOvvq0dRfD.0.0
可以看电视,我比较喜欢看看大自然的东西,所以就选择了《动物世界》,可以回看。
今天分析的网址是:https://tv.cctv.com/lm/dwsj/?spm=C52056131267.PAgOvvq0dRfD.0.0
直接打开网址,F12获得视频网址:


1.png (1.05 MB, 下载次数: 0)
下载附件
2021-3-25 10:19 上传

恩,不错。有很多视频。这样一个一个找太费劲,看看网页是怎么获取数据的:


1.png (1.09 MB, 下载次数: 0)
下载附件
2021-3-25 10:23 上传

这个数据有些可疑,试一下:
>>> url = "https://api.cntv.cn/NewVideo/getVideoListByColumn?id=TOPC1451378967257534&serviceId=tvcctv&mode=0&n=20&p=1&t=jsonp&cb=setItemByidELMTGwEXpUuBn9MYpWasvymv160224"
>>> msg = requests.get(url,headers=headers,timeout=20)
>>> msg.encoding = chardet.detect(msg.content)['encoding']
>>> m = msg.text
>>> m[:200]
'setItemByidELMTGwEXpUuBn9MYpWasvymv160224({"data":{"total":1000,"list":[{"guid":"4b1fe761763b4d1dbef89c8aa8f40922","id":"VIDEMzNCMJ6a719xvMsMRT2j210325","time":"2021-03-25 00:37:00","title":"\\u300a\\u5'
看看抓到了什么?
>>> exec("msg="+m[m.find("({"):m.rfind("})")+2])
>>> url = msg['data']['list'][0]['url'].replace("\\","")
>>> url
'https://tv.cctv.com/2021/03/25/VIDEMzNCMJ6a719xvMsMRT2j210325.shtml'
>>> msg['data']['list'][0]['title']
'《动物世界》 20210325 树洞与“房客”(下)'
似乎是视频详细信息?地址都有,没错,就是它了。浏览器打开看看,确定无疑。继续抓包:
>>> msg = requests.get(url,headers=headers,timeout=20)
>>> msg.encoding = chardet.detect(msg.content)["encoding"]
>>> m = msg.text
网页搜索,看看具体视频网址怎么查找?
>>> url = "https://tv.cctv.com/2021/03/25/VIDEMzNCMJ6a719xvMsMRT2j210325.shtml"
>>> msg = requests.get(url,headers=headers,timeout=20)
>>> msg.encoding = chardet.detect(msg.content)['encoding']
>>> m = msg.text
ok,现在数据抓到了,开始分析。还是之前的套路,浏览器F12打开开发者工具,直接搜索:


1.png (383.07 KB, 下载次数: 0)
下载附件
2021-3-25 10:03 上传

还是没有具体信息,预料之中。继续通过浏览器获取到的数据分析:


2.png (415.71 KB, 下载次数: 0)
下载附件
2021-3-25 10:06 上传

看到有main.m3u8文件,还是去搜一下看看能不能找到:
>>> m.find("main.m3u8")
-1
果然没有。突然发现上面有一行“getHttpVideoInfo.do……”字样的链接,难道是这个?试试看:
>>> url = "https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid=4b1fe761763b4d1dbef89c8aa8f40922"
>>> msg = requests.get(url,headers=headers,timeout=20)
Traceback (most recent call last):
  File "C:\Users\shenhj.lyxs\AppData\Local\Programs\Python\Python38\lib\site-packages\urllib3\connection.py", line 159, in _new_conn
………………
嗯,出错了,看来时截取的地址有问题。重新截取:
>>> url = "https://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid=4b1fe761763b4d1dbef89c8aa8f40922&client=flash&im=0"
>>> msg = requests.get(url,headers=headers,timeout=20)
没问题。好,看看抓到了什么信息?
>>> f=open("d:/temp/test.txt","w")
>>> f.write(m)
12845
>>> f.close()
打开文件,类似这样的内容:
{"ack":"yes","status":"001","tag":"动物世界 猫头鹰 山雀 啄木鸟 阿尔卑斯山","title":"《动物世界》 20210325 树洞与“房客”(下)","play_channel":"CCTV-1高清","produce":"","editer_name":"linshuxiang","produce_id":"wxsb01","column":"动物世界高清","f_pgmtime":"2021-03-25 02:18:15","cdn_info":{"cdn_vip":"vod.cntv.lxdns.com","cdn_code":"VOD-MP4-CDN-CNC","cdn_name":"3rd网宿"},"video":{"totalLength":"1789.08","chapters":[{"duration":"300.00","image":"https://p5.img.cctvpic.com/fmspic/2021/03/25/4b1fe761763b4d1dbef89c8aa8f40922-1.jpg","url":"https://vod.cntv.lxdns.com/flash/mp4video63/TMS/2021/03/25/4b1fe761763b4d1dbef89c8aa8f40922_h264418000nero_aac32-1.mp4"},{"duration":"300.00","image":"https://p5.img.cctvpic.com/fmspic/2021/03/25/4b1fe761763b4d1dbef89c8aa8f40922-1.jpg","url":"https://vod.cntv.lxdns.com/flash/mp4video63/TMS/2021/03/25/4b1fe761763b4d1dbef89c8aa8f40922_h264418000nero_aac32-2.mp4"},
………………
看起来是json数据。里面的内容很简单明了,url后面的内容就是一段段的视频了。浏览器打开看看,确认了。全部下载,然后用ffmpeg合并成一个完整的,ok,视频获取完成。(如何合并,参见我前面的分析。)
写作不易,免费评分来点呗?

视频, 动物世界

wth0538   

发现一个方法,以 榜样5 为例,猫爪抓到的链接是https://dh5.cntv.qcloudcdn.com/asp/h5e/hls/2000/0303000a/3/default/869cf3827eaf492eac586704943c4d93/2000.m3u8
把h5e/去掉
https://dh5.cntv.qcloudcdn.com/asp/hls/2000/0303000a/3/default/869cf3827eaf492eac586704943c4d93/2000.m3u8
用逍遥一游的m3u8下载器直接下载即可
seeyou_shj
OP
  


wth0538 发表于 2021-3-29 19:08
发现一个方法,以 榜样5 为例,猫爪抓到的链接是https://dh5.cntv.qcloudcdn.com/asp/h5e/hls/2000/0303000 ...

其实单个文件的抓取很简单,关键是程序化的批量抓取技术。仔细分析一下过程就可以实现程序化了,这才是我想要说的
红蓝黄   

感谢分享
木然狮子   

不错不错,一步步很详细
波多野结炜   

挺牛逼的~
光咣咣咣丶   

感谢分享,很牛逼
Fxhlt   

这个可以有 厉害
Email   

感谢分享
luxiafeng   

这个可以,收下了,谢谢
您需要登录后才可以回帖 登录 | 立即注册

返回顶部