Python | IqiyiParseAPI

最近在单位有少许闲暇,又加上好友让我帮忙下载爱奇艺的老电影,于是乎突发奇想,我要不要来尝试一下爱奇艺的解析接口,虽然有点难度,但是总归要尝试一下。

Step1

按照经验,F12之后搜索m3,出来的第一条结果看起来就是最符合要求的

简单点有点难以置信,M3U8的内容直接显示了出来

那么问题来了,这个链接是如何得到的,需要哪些参数呢

 

 

经过对比,发现参数值绝大多数是固定值,需要变化的值并不多。

vid  authKey  pck  tm  vf

  • 而根据以前的经验可知,bid是表示清晰度的参数,600对应的是蓝光1080PH264,200对应标清360PH264,300对应高清540PH264,300对应超清720PH264,其实还有一个隐藏参数,即620对应蓝光高码1080PH265。
  • 其中的vid应该就是视频代码,这个还是可以非常容易拿到的,直接在网页中查找就能得到。
  • tm参数也是很简明扼要,就是个平平无奇的时间戳罢了
  • 至于其中的authkey,一看就知道是一个即时计算出来的防盗链key,好在danni大佬已经分享过计算方法  https://blog.weimo.info/archives/381/
  • 但pck参数,一时没找到变化的原因,所以去翻了翻cookie,发现了秘密。其实pck就是cookie中的P0001参数,只不过中间我重新登录了一次,恰好变化了,这才让我“因祸得福”,不然不知道我要什么时候才知道这个问题。
  • 而且,我还在cookie中恰好发现了dfp也是在cookie中的,uid也是cookie中的P0003参数,不过好在这两个并无变化。
  • 现在就剩下了vf这一个参数了,其实这个参数也已经有大佬破解了,实现的过程稍显复杂,我也在拜读过程中,但博主已经用Node.js实现了,我可以直接套用代码,利用腾讯云函数直接以接口的形式实现,要是想仔细学习的可以移步博主的原文章,https://zsaim.github.io/2019/08/23/Iqiyi-cmd5x-Analysis/

至此,全部参数已经构建完毕,利用python中的requests,携带headers和cookies,进行模拟调用,即可拿到视频播放的M3U8

Step2

其实教程到这里就应该结束了的,但问题是,我们的请求参数中是带有cookie的,这玩意可是会变化的,就比如我重新登录后,很有可能带来P0001 / P0003的变化。而且根据测试和一些大佬的文章可知,P0001的变化时间在一天左右,我总不能每天都重写代码吧。

所以,我利用云对象储存,在云端创建一个txt文本,将易变化的P0001存储在云端,每次获取M3U8之前调取云端的cookie,而且我写了一个接口,可以简单地以链接访问的方式修改云端的P0001参数。而后我在爱奇艺的网页中植入js代码,每次访问爱奇艺网站都会调用链接即上传P0001参数,实现了最大的自动化。

Step3

其实教程到这里仍然没结束,我已经说了,我做的是个接口,我们从爱奇艺的接口中得到的是M3U8的内容,而我们平时用的更多的是M3U8的链接,毕竟短嘛。所以同样利用云对象储存,在本地将M3U8内容写入文本,上传至云端,以链接的形式返回即可。至于费用的问题也不用担心,腾讯云、七牛云以及又拍云每月都有一定的免费额度,个人开发者使用足矣。

· 后记

就实现此接口而言,并不是非常难,因为已经有各路大佬帮我扫清了障碍,之后要学习的就是如何获取更多版本的视频和更多参数的含义,这才是学习的真正意义。

和之前一样,我还是很厚道的,提供了白嫖的入口,api.sometools.online/iqiyipc/

以上仅供交流学习,请勿用于非法用途,侵删。

  • 相关资料

GitHub下载器开源代码

接口示意

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注