youxii52 发表于 2020-11-21 00:24

记一次li视频播放地址寻找(超级详细,适合小白)

前提:
第一次发帖,如有违规,希望版主大人宽容,谢谢

本人亦是新手小白,望大神手下留情

语言艺术缺乏,接下来的文字或许无尽枯燥,乏味.

分析:
话不多说,直奔主题

1.打开视频主页,随便找个视频观察,vu参数就是我们今天的猪脚,而且还没加密,我们的目的就是要搞清楚
它是怎么来的?
https://attach.52pojie.cn//forum/202011/21/001315b24s3fq23431qneq.png?l
2.搜索vu,下断点,发现vu=t
https://attach.52pojie.cn//forum/202011/21/001321ey2nd2ynhrvpi2ab.png?l
3.往上寻找t,发现t=d对象下的一个什么东东地址,而d有定义成了player.XXXX,再往上追溯
,接下来是各种对象过去,对象过来的,哎,枯燥的JS,头痛(这里就不演示了)

https://attach.52pojie.cn//forum/202011/21/001325c22ihwiwihohedvi.png?l
4.继续往上寻找,这个是神马?阿里云播放器Aliplayer,如果要调用它,肯定是有蛛丝马迹的嘛

https://attach.52pojie.cn//forum/202011/21/001330wpanydd8syy85nyc.png?l
5.我们搜索调用Aliplayer的关键字new Aliplayer,你看,还真有
https://attach.52pojie.cn//forum/202011/21/001335zz4k4m57l7cmzo7t.png?l

6.它传入的地址,就是我们要找的,但是-source又是个神马鬼?它定义了一个newPrismXXX的函数,那我们
看看是怎么调用的?

https://attach.52pojie.cn//forum/202011/21/001340ugnbsp9nvz513pj6.png?l

7.搜索newPrismXXX,我们来到了这里,一个$(function(),页面加载就自动运行了,接下来一个ajax请求,
我们注意data,既然有个请求,我们就去看看吧
https://attach.52pojie.cn//forum/202011/21/001801zo6hu34juzhes4lp.png?l

8.果然我们来到了这里,返回的json里果然也有一个XXXX.mp4,只是很可惜,不是我们想要的,这又是什么鬼?
https://attach.52pojie.cn//forum/202011/21/001345wwc555glg5rkhr5s.png?l

9.我们继续回来这个,replace?这个,就TM一个替换
https://attach.52pojie.cn//forum/202011/21/001349r2ks0eeszlckpcnh.png?l

总结:现目前它的播放地址其实就是服务器返回,再经过一个替换得到的

python代码:
1.要注意的一点就是,headers里面必须带Cookie,Referer,不然返回的是视频下架
2.我就以视频ID=1707741为例,贴上python源码from random import random
import requests
class player:
      url = 'https://www.xxxx.com/video_1707741'
      url1 = 'https://www.xxxx.com/videoStatus.jsp?contId=1707741&mrd='+str(random())
      headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36'
      }
      headers1 = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
            'Referer': 'https: // www.xxxx.com / video_1707741'
      }
      contAndId = "cont-1707741"
      def __init__(self):
         self. req = requests.session()

      def geturl(self):
            res= self.req.get(url=self.url,headers=self.headers)
            if res.status_code==200:
                res1 = self.req.get(url=self.url1, headers=self.headers1).json()
                srcUrl=res1['videoInfo']['videos']['srcUrl']
                systemTime = srcUrl.split('/')[-1].split('-')[0]
                vdoUrl= srcUrl.replace(systemTime, self.contAndId)
                print(vdoUrl)
run = player()
run.geturl()

最后
码字不易,望能博君一笑,至此游戏结束

小图 发表于 2020-11-21 00:40

谢谢分享,我这脑瓜子看了这个脑袋疼{:1_907:}

山上石 发表于 2020-11-21 00:48

极速浏览器按F12,看代码,按大小排序就看见了。

o824 发表于 2020-11-21 00:51

嗯嗯嗯嗯 好好学习下

zsxm6865 发表于 2020-11-21 07:57

纯技术贴,感谢分享!

旺旺小小酥 发表于 2020-11-21 08:26

学习了,感谢分享

dork 发表于 2020-11-21 08:31

{:300_952:}码字不易

忆白学渣 发表于 2020-11-21 09:21

感谢分享

lypojie 发表于 2020-11-21 21:12

不错,一看就会了,哈哈

yzqhj 发表于 2020-11-21 22:10

进来学习了,感谢楼主分享
页: [1]
查看完整版本: 记一次li视频播放地址寻找(超级详细,适合小白)