我们在做数据抓取的时候遇到后缀是.m3u8文件的几率特别大,一般都是加密之后的视频流(ts文件),具体为什么要这么做,说是加快了速度,细节这里不剖析。

主要讲一下如何根据.m3u8文件来获取到我们需要的视频:

第一步:.m3u8文件的获取,这个比较简单,网页版F12查找也好,app抓包也好,我们会获取到一个后缀是.m3u8的链接,请求这个链接就能得到.m3u8文件,浏览器里可以根据链接直接下载。

大致.m3u8文件里的内容如下:

上面几行不讲,大致就是一些标准、要求之类的 ,这里我们需要注意的是一下几点,加密方式、key的获取,以及iv(偏移量)。

加密方式就是上面标注的AES-128,key值是URL请求以后获取到的,iv也已经给出了。

先抛出一个问题,就是key的获取过程中,如果直接请求链接,发现返回的key是其他形式要先处理key为bytes格式。

上图的实例中刚好是bytes格式就不再处理,如图:

如果是直接用链接在浏览器里下载再打开,会发现是一个乱码,会让人感觉是不是搞错了。

第二步:

AES-128加密方式讲解

from Crypto.Cipher import AES #未安装的需要安装一下,安装过程百度到处可见def decrypt_single_ts(data,key, iv):"""加密破解:param data:直接请求加密视频链接获取的数据流:param key: 获取到的key,注意必须是bytes格式且长度是16,24,32,等:param iv:偏移量也是bytes格式:return:"""cipher = AES.new(key, AES.MODE_CBC, iv=iv)plain_data = cipher.decrypt(data)with open ('video.mp4','wb')as f:f.write(plain_data)f.close()

第二个问题iv,我们可以看到文件中给出的iv(0xaa3dcf6a7acb92ff4fb08d9b3b3d6f51)并不是16位,如果把这个直接带入函数,会报错说是iv的长度不是十六位,我们就简单处理一下。

iv='aa3dcf6a7acb92ff4fb08d9b3b3d6f51'def hexStringTobytes(str):
"""
str就是要传入的值,但是需要把前面的0X去掉,这一点需要注意,返回的就是16位的bytes
"""str = str.replace(" ", "")print(len(bytes.fromhex(str)))return bytes.fromhex(str)

最后一步就是将正确的参数分别带入破解函数,获取可以播放的视频。经实测,是可以的。

当然,实际中可能key的加密是分情况的,不同的网站会根据情况设置不同形式的加密方式,要根据情况来获取到正确的key。

剩下的还有两个问题,一个是拼接视频流,另一个是提高下载的效率,多线程操作,这两个问题后续解决。

.m3u8视频文件的初步探索相关推荐

  1. 使用python下载加密的流媒体m3u8视频文件,获取电影资源

    使用python下载加密的流媒体m3u8视频文件,获取电影资源 m3u8简介 代码示例 获取文件名与m3u8地址 媒体序列解密 视频序列片段下载 完整代码 后记 m3u8简介 M3U8是Unicode ...

  2. 视频网站的工作原理-->m3u8视频文件的提取与解析(理论)

    目录 一.视频网站的工作原理 二.抓取视频步骤 2.1.找到m3u8文件 2.2.把m3u8下载到ts文件 2.3.ts文件合并为mp4文件 一.视频网站的工作原理 古老的视频网站的视频一般是在源码放 ...

  3. 如何用最笨最直接的方式破解m3u8视频文件

    Network中 直接选中 XHR 查看发送的ajax请求 将指向 m3u8 的这几个文件都下载下来,然后用格式工厂 转为mp4 格式,然后将这些文件合并即可

  4. m3u8 视频提取工具(下载web中的ts文件)

    m3u8 视频提取工具(下载web中的ts文件) 开发背景 m3u8视频格式简介(借用他人描述) m3u8视频格式原理:将完整的视频拆分成多个 .ts 视频碎片,.m3u8 文件详细记录每个视频片段的 ...

  5. m3u8 视频的解密,合并处理 通过java代码

    前言 就是一堆废话,可以不看,文末有代码,可以直接down 通过UC下载了一些视频,觉得过于精彩,应该保存下载,不过它是m3u8格式的, 之前为了给手机刷机,资料必须得备份,于是拷贝了出来,把手机上的 ...

  6. 音视频骚操作,FFmpeg 如何播放带「图片」的 M3U8 视频,IJKPlyaer 适配非标 TS 文件

    如果看到一个需要播放的视频链接显示是一张图片,你会不会感觉有点懵?如果这张图片写着 png,然后实际格式是 bmp ,你会不会更懵了?如果这个 bmp 还做了加密篡改呢?今天我们要聊的就是这样一个充满 ...

  7. 服务器php将视频转为m3u8,php应用ffmpeg对mp4文件转换并生成m3u8视频流文件

    生成m3u8视频流,如果没有做视频流文件,播放视频的时候,一个大视频直接加载,会增加服务器巨大压力,并且视频太大加载慢,显示视频也慢,都不利于观看.那么视频流的好处是,将大视频分成一小段一小段的ts分 ...

  8. 【S操作】更新网络视频下载方法详细步骤,m3u8格式文件视频文件下载方法,gohls使用详细步骤...

    一个月前搞过这个功能,并且发了简单步骤的文章,今天需要使用这个功能,有些地方居然想不起来怎么弄了,完全没有达到我笔记的目的,今天把gohls的详细步骤记录一下,各位参考少走弯路. 步骤简述: 下载go ...

  9. python合并ts视频_python爬取视频网站m3u8视频,下载.ts后缀文件,合并成整视频

    最近发现一些网站,可以解析各大视频网站的vip.仔细想了想,这也算是爬虫呀,爬的是视频数据. 首先选取一个视频网站,我选的是 影视大全 ,然后选择上映不久的电影 "一出好戏" . ...

最新文章

  1. 学运维能不能通过大厂面试,进来试试——面经总结(二)
  2. Ceres Solver Document学习笔记
  3. java 2d svg_SVG 2D入门1 - SVG综述
  4. SAP Spartacus的SkipLink功能
  5. HTML css嵌套的一个例子
  6. Impala入门笔记
  7. vscode vetur 不想标签属性老是转行 配置
  8. Python 3 Basics
  9. 关于使用struts2上传文件时获取不到文件内容的问题的解决方案
  10. Linux复习-硬盘相关知识点
  11. 操作系统课程设计——文件系统
  12. Python数据分析与机器学习-Python库分析科比生涯数据
  13. 从零学Java(10)之方法详解,喷打野你真的没我6!
  14. Python 基础变量声明
  15. linux 安装pkg文件,pkgfile (简体中文)
  16. 0.高仿Android网易云音乐OkHttp+Retrofit+RxJava+Glide+MVC+MVVM
  17. 在公共Wi-Fi上保持安全的12种方法
  18. 科沃斯擦玻璃机器人使用感受_科沃斯擦玻璃机器人怎么样?有人用过自动擦窗机器人吗?价格是多少...
  19. office2020与2016版的不同_office2016与2019有什么区别_office2016与2019的区别详细说明...
  20. 使用华为云跑自己的深度学习模型教程

热门文章

  1. xarray官方文档 翻译笔记(二) FAQ部分
  2. 一生一世的承诺win7主题——rmzt.com
  3. 考英语二的计算机学硕,考研201英语是英语一还是英语二?
  4. python3 django1.10 使用mysql服务器
  5. 计算机课程设计ssm医药管理信息系统【代码讲解+安装调试+文档指导】
  6. 微信小程序--开发者工具
  7. java实现抽奖游戏,java实现抽奖功能解析
  8. html2canvas生成PDF并下载的解决方案
  9. 统一诊断服务(UDS)
  10. 牛顿是人类历史上第二伟大的科学家吗?