打算爬某网站视频内容练手(短视频),检查 html 源码发现没有任何 mp4 或 m3u8 等格式的文件 url,刷新并开始播放后,看 F12 里的 Network 也只发现加载了几个 .ts 格式文件( index0.ts/index1.ts/index2.ts ),一脸懵逼中……请问这种情况该如何下手?
PS,播放器使用的 DPlayer,git 地址: https://github.com/MoePlayer/DPlayer
1
dosmlp 2020-01-06 19:51:58 +08:00 1
也可能是通过 ws 传的数据
|
2
Curtion 2020-01-06 19:54:53 +08:00
HLS 协议
|
4
Tink 2020-01-06 21:50:04 +08:00 via iPhone
都有 ts 文件了扒下来拼接啊
|
5
loopinfor 2020-01-06 21:59:58 +08:00 via Android
.ts 就是分割出来的视频片段
|
6
ctro15547 2020-01-06 22:15:02 +08:00
抓包 。也可以把所有的 ts 文件 download 下来 用 ffmpeg 拼一下
|
7
cz5424 2020-01-07 00:25:17 +08:00 via iPhone
某些 M3u8 文件实际上也只是记录 ts 的地址,记事本打开可以看到
|
8
also24 2020-01-07 00:40:50 +08:00
所以网站地址呢?没有网站地址凭空猜测么?
|
9
mumbler 2020-01-07 01:20:53 +08:00 via Android
视频地址被加密了,通过一系列 JS 计算才能拿到真实视频地址,这个过程叫视频解析,普通爬虫只能爬公开数据,这种加密数据需要先解析再下载,HlS 下载完还需要拼接
|
10
locoz 2020-01-07 01:50:52 +08:00 via Android
@mumbler #9 🤔千万不要把“公开数据”这个词乱用啊…容易引起混淆的…只要没有权限要求、表面上是个普通用户打开了不需要做啥身份校验操作就能看的就可以叫“公开数据”了。
|
11
locoz 2020-01-07 01:58:26 +08:00 via Android
你可以换个思路:先抓个包看看,一般来说,页面加载完毕且视频还在加载的时候,仍然有在进行通信的就大概率会跟这个视频有关系了。
因为正常来说不可能还有除了视频以外的其他大型资源需要加载了,而如果有大量用户操作日志之类的东西混淆视听的话又很容易分辨,可以直接过滤掉。 在简单筛选一下之后就可以找出来了。找到之后如果请求中有加密参数的话就翻 js 吧… |
12
l4ever 2020-01-07 08:34:25 +08:00
1.看看有没有 m3u8. 现在流行 ts 文件加密, 都是用 AES-128-CFB 的. m3u8 里面有 Key 偏移值. 看看里面到底配置了加密没有. 通常 key 是另外一个 http 请求去获取的.仔细分析一下.
2.根据 m3u8 提供的 ts 文件地址下载 ts 文件. 3.如果加密了, 还要解密 ts 4.合并 ts |
13
imaning 2020-01-07 08:43:39 +08:00
@l4ever key 是对视频内容加密用的,不是加密 url 的。他既然能请求到 ts 地址,肯定就有 m3u8 地址,只是可能他没注意到而已。关键是要找到 m3u8 地址才行。
|
15
annielong 2020-01-07 09:35:49 +08:00
有 index0.ts 肯定有 m3u8,一般没仔细看,最多是没有明确 m3u8,但是有 api 获取了 m3u8 的内容,检查所有 post
|
16
pandait 2020-01-07 12:56:26 +08:00
用 ts 还原就好了啊。
|
17
chenliangngng 2020-01-07 13:10:31 +08:00 via Android
马克,现在各视频站技术水平比以前高好多,应该就是这两年才改的,为什么呢?/摊手
|