感觉发这样的帖子增加不了多少分啊。今天还是无聊,先发这吧。为什么不发软件破解,缘故原由是自己没研究这一块,为啥呢?毕竟自己也偶尔做点软件开发,感觉费了很大力气,别人缺很简单就破解了,免费版随后就更新,真的很无聊。自己的努力得不到任何回报,也就不想继续这样努力开发步伐了吧。
这次还是剖析视频,用到的工具是python,浏览器。因为最近以为动物天下很有意思,所以找了一个央视的官网,免费的。网址:
https://tv.cctv.com/cctv1/?spm=C52056131267.PAgOvvq0dRfD.0.0
可以看电视,我比力喜欢看看大自然的东西,所以就选择了《动物天下》,可以回看。
今天禀析的网址是:https://tv.cctv.com/lm/dwsj/?spm=C52056131267.PAgOvvq0dRfD.0.0
直接打开网址,F12获得视频网址:
恩,不错。有许多视频。这样一个一个找太费劲,看看网页是怎么获取数据的:
这个数据有些可疑,试一下:
>>> 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打开开发者工具,直接搜索:
还是没有详细信息,预料之中。继续通过浏览器获取到的数据分析:
看到有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,视频获取完成。(如何归并,参见我前面的分析。)
写作不易,免费评分来点呗?
来源:http://www.12558.net
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |