0


学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析

文章目录

⛳️ 实战场景

本次实战目标站点为

https://www.ichunqiu.com/courses/qmxc

,随机寻找一门课程点击播放,然后通过开发者工具获取视频文件地址。

这次我们测试的的课程 ID 与地址为:

https://www.ichunqiu.com/course/298

,你可以选择其它的,重点是用工具捕捉到

m3u8

文件。

请求网址: https://www.ichunqiu.com/video/info/338.m3u8?type=2
请求方法: POST

请求表单数据如下所示:

  • rs: 6d896ff4dec07103fad79c1b010286b8
  • type: 2
  • section_id: 338
  • time: 1653371562000

其中出现了第一个加密参数

rs

,首先从其入手。

编写简单的测试代码,竟然出现了招聘启事。

import requests

headers ={"Host":"www.ichunqiu.com","Origin":"https://www.ichunqiu.com","Referer":"https://www.ichunqiu.com/course/298"}

form_data ={"rs":"6d896ff4dec07103fad79c1b010286b8","type":"2","section_id":"338","time":"1653371562000"}

res = requests.post('https://www.ichunqiu.com/video/info/338.m3u8?type=2', data=form_data, headers=headers)print(res.text)

学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
问题应该出在

ts

参数,下面就通过断点分析该值,目测上猜测应该是

md5

断点调试,得到加密关键点代码如下:
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析

u =newRusha,
c = sectionID +"icq",
d = u.digest(c).substr(0,32),

其中涉及的核心函数是

Rusha

u.digest(c)

,接下来就是漫长的扣取过程了。

⛳️ digest 实战扣取过程

为了扣取

Rusha

文件,我们找到了其定义位置,代码如下。

window.Rusha = y;

然后扣取第 1 行~399 行附近相关代码(截止 5 月 24 日可用)。

在接下来对扣取的结果进行改造和删减,例如下图。
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
接下来在删除

y

相关导出部分代码,如果你扣取失败,可以点击文末卡片,联系橡皮擦。

测试加密之后的结果,使用下述代码。

a.digest("338icq");// '6d896ff4dec07103fad79c1b010286b8431b8fbe'

学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
很明显官方截取的前 32 位,此时第一个步骤成功解决了。

但是也发现了一个问题,其实这个参数并没有动态值的加入,也就是说,它是固定的。

继续寻找被反爬原因,在请求头中又发现了

Sign

参数,但是还没等测试,再次被封了。
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
更换浏览器,再次尝试,发现就在

rs

参数之后,就是

Sign

参数。
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
这里的参数都可以直接获取到,不在进行或多说明,下面查看请求

m3u8

之后的响应内容。

其中

data

也被加密了。
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
再次跟进请求之后,发现

Ci

函数中存在解析代码,其逻辑在图片下。
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析
果然最终解析出来的是 m3u8 文件内容,有目标就变得简单多了。
学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析

r = xxtea.toString(xxtea.decrypt(n.data.data, xxtea.toBytes(i + sectionID)));

后续扣取 JS 部分的代码,参考上文一点点来就行。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 689 篇原创博客

从订购之日起,案例 5 年内保证更新

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

本文转载自: https://blog.csdn.net/hihell/article/details/124945598
版权归原作者 梦想橡皮擦 所有, 如有侵权,请联系我们删除。

“学Python爬虫,不看看m3u8文件如何加密?i春秋 m3u8 文件加密解析”的评论:

还没有评论