html5 blob video 下载

2023-11-13

最近在看腾讯视频时,想把它下载下来,发现 video src 是 blob 加密的源,不能像以前那样看到一个mp4的 url

<video preload="auto" src="blob:https://v.qq.com/de0d7ebd-0cdb-4bdc-af52-5968cc0703ae"></video>

那就写个 python 脚本来下载,

1) 在 chrome 中右键视频,选择【复制调试信息】

2)在这个调试信息中找到 vurl 字段,

    "vurl": "https%3A%2F%2Fapd-f7b9eff46dec7f445b83ad7ce66881e7.v.smtcdns.com%2Fnewsts.tc.qq.com%2FAxX2IVBFSKZKljuQlR16Q4Rtu1YM8yt4MCVVBpAU2qyc%2F5QSx4cOPVnrsEZoXel9kLPQqwzotq_YqO9mgVXJarwwHJ_lx_OfPdNcpa7aV3wnQiA1hoGX6T_rNTqBgcLjf-863H4xe50swNpbEPHPuaQ8vVuK7H-u6wNx8DTUocvYSMJDlKChZyKQF_zszSylZSZDfM235OXV0%2Fq0023x6yiss.321002.ts.m3u8%3Fver%3D4",
把它 decodeURIComponent 后的可以看到 vurl 是

https://apd-f7b9eff46dec7f445b83ad7ce66881e7.v.smtcdns.com/newsts.tc.qq.com/AxX2IVBFSKZKljuQlR16Q4Rtu1YM8yt4MCVVBpAU2qyc/5QSx4cOPVnrsEZoXel9kLPQqwzotq_YqO9mgVXJarwwHJ_lx_OfPdNcpa7aV3wnQiA1hoGX6T_rNTqBgcLjf-863H4xe50swNpbEPHPuaQ8vVuK7H-u6wNx8DTUocvYSMJDlKChZyKQF_zszSylZSZDfM235OXV0/q0023x6yiss.321002.ts.m3u8?ver=4

3)脚本原理

【注意】这里不解释 视频领域相关的概念,如 m3u8、mp4 box、流 等等,请自行搜索学习。

从上面vurl  下载下来的是一个 m3u8 文件,内容如下

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:18
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:8.040,
00_q0023x6yiss.321002.1.ts?index=0&start=0&end=8040&brs=0&bre=246655&ver=4
#EXTINF:12.000,
01_q0023x6yiss.321002.1.ts?index=1&start=8040&end=20040&brs=246656&bre=709887&ver=4
#EXTINF:12.000,
02_q0023x6yiss.321002.1.ts?index=2&start=20040&end=32040&brs=709888&bre=1416015&ver=4
#EXTINF:12.000,
03_q0023x6yiss.321002.1.ts?index=3&start=32040&end=44040&brs=1416016&bre=2027391&ver=4

这些都是把一个大视频分割成小段视频后的 url,那么需要做的是把这些小段下载下来,组合成一个大的mp4视频文件,这个就是所要下载的视频文件了。

 

附上脚本内容,目前脚本代码只满足我当前这次的下载需求,没有做成可支持命令行选项形式。

#!/usr/bin/python3

# In[1]:


import requests
import re

ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'


# In[2]:


headers = {
    'User-Agent': ua,
}

response = requests.get('https://apd-f7b9eff46dec7f445b83ad7ce66881e7.v.smtcdns.com/newsts.tc.qq.com/AxX2IVBFSKZKljuQlR16Q4Rtu1YM8yt4MCVVBpAU2qyc/5QSx4cOPVnrsEZoXel9kLPQqwzotq_YqO9mgVXJarwwHJ_lx_OfPdNcpa7aV3wnQiA1hoGX6T_rNTqBgcLjf-863H4xe50swNpbEPHPuaQ8vVuK7H-u6wNx8DTUocvYSMJDlKChZyKQF_zszSylZSZDfM235OXV0/q0023x6yiss.321002.ts.m3u8?ver=4', headers=headers)


# In[6]:


headers = {
    'Pragma': 'no-cache',
    'Origin': 'https://v.qq.com',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7',
    'User-Agent': ua,
    'Accept': '*/*',
    'Referer': 'https://v.qq.com/x/page/d0019qdukl5.html',
    'Connection': 'keep-alive',
    'Cache-Control': 'no-cache',
}


# In[8]:


result = re.findall(r'^\d+.*index=\d+.*$', response.text, re.M)


# In[10]:


fmp4 = open('0.mp4', 'wb')
for i,r in enumerate(result):
    print(i, end=', ', flush=True)   # 进度
    rsp = requests.get('https://apd-vliveachy.apdcdn.tc.qq.com/newsts.tc.qq.com/AxX2IVBFSKZKljuQlR16Q4Rtu1YM8yt4MCVVBpAU2qyc/5QSx4cOPVnrsEZoXel9kLPQqwzotq_YqO9mgVXJarwwHJ_lx_OfPdNcpa7aV3wnQiA1hoGX6T_rNTqBgcLjf-863H4xe50swNpbEPHPuaQ8vVuK7H-u6wNx8DTUocvYSMJDlKChZyKQF_zszSylZSZDfM235OXV0/'+r, headers=headers)
    fmp4.write(rsp.content)
    f = open('{0:0>8}.ts'.format(i), 'wb')
    f.write(rsp.content)
    f.close()
fmp4.close()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

html5 blob video 下载 的相关文章

随机推荐

  • <Linux开发>系统移植 -之- linux内核移植过程详细记录(第二部分完结)

    Linux开发 系统移植 之 linux内核移植过程详细记录 第二部分完结 前面 第一部分讲解了 NXP官方原厂的Linux直接编译下载到开发板的操作过程 及测试效果 以及过程中设计使用的一些辅助工具 从第一部分 可以熟悉整个Linux编译
  • JSON 语法规则详解

    JSON 的语法规则十分简单 无论用何种方法总结都只有数条而已 它参考了 C 语言家族的一些习惯 学习起来并不会感到陌生 回顾JSON 的五点语法 1 数组 Array 用方括号 表示 2 对象 Object 用大括号 表示 3 名称 值对
  • 抽象方法与抽象类

    没有方法体的方法就是抽象方法 如果一个类中有抽象方法则这个类就是抽象类 public abstract class Abs public abstract void shoot 抽象方法 public abstract void eat p
  • Scrapy 爬虫笔记

    目录 概述 开始 启动项目 爬虫初始化 处理响应 回调函数的参数 图片下载 未完待续 相关资源 概述 本文记录了个人使用 Scrapy 爬取某网站产品信息 包含图片下载 的整个过程 也可以作为一篇 Scrapy 实战教学博客 首先从 All
  • 网络安全-自学笔记

    目录 相关网站推荐 WEB 应用 安全 学习路线 推荐 书籍 网站 在线靶场 基础 XSS攻击 CSRF漏洞 劫持攻击 点击劫持 SSRF漏洞 文件包含漏洞 文件上传漏洞 XXE漏洞 WebShell 解析安全 RCE漏洞 SQL注入漏洞
  • 网络爬虫是什么?

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 互联网诞生之初 是为了让人们更容易的分享数据 交流通讯 互联网是桥梁 连接了世界各地的人们 网站的点击 浏览都是人为的 与你聊天的也是活生生的人 然而 随着技术的发展 人们
  • Java 实现区块链

    Java 是一种流行的面向对象的编程语言 它可以用来实现区块链 在实现区块链时 通常需要考虑以下几个方面 区块的数据结构 区块通常包含一些数据 如交易信息 以及一些元数据 如区块的哈希值和时间戳 你可以使用 Java 中的数据结构 如类 对
  • 【C++】STL —— list的基本使用

    目录 一 list容器的简介 二 list容器常用的接口 1 list初始化操作 1 构造函数 编辑 2 析构函数 3 赋值重载函数 2 list容量相关的函数 3 list的迭代器 4 list的增删查改 一 list容器的简介 1 li
  • 使用STM32CubeMX和STM32CubeIDE的常见问题和注意事项

    STM32CubeMX和STM32CubeIDE是ST公司的STM32Cube生态系统中最重要和最常用的2个软件 使用这2个免费软件可以高效地进行STM32系统的开发 CubeMX用于对一个STM32器件进行可视化的配置 然后生成CubeI
  • git 解决冲突之 theirs & ours

    git merge 从feature分支合并到master分支 git checkout master git merge feature Auto merging Document CONFLICT content Merge confl
  • echarts--3D效果柱状图

    echarts二维柱状图做3D效果 先看下效果 废话不多说 直接上代码 div class box echart div initBarEchart 柱状图 let option bar this setOption let array n
  • 【sqli-labs】 less37 POST- Bypass MYSQL_real_escape_string (POST型绕过MYSQL_real_escape_string的注入)...

    POST版本的less36 uname 1 passwd 1 df or 1 转载于 https www cnblogs com omnis p 8384536 html
  • Qt

    Qt QListView QListWidget QTableView QTableWidget的使用示例及区别 目录 Qt QListView QListWidget QTableView QTableWidget的使用示例及区别 1 简
  • 想入门网络安全?先来看看网络安全行业人才需求!

    如果你是一个想要入门网络安全行业的小白 如果你是网络安全专业在读的大学生 如果你是正在找工作的新手 那么这篇文章你一定要仔细看 毕竟知己知彼百战百胜 知道行业的人才需求才能更好得发挥自己的优势 当你打开BOSS直聘 拉钩等招聘网站 在首页的
  • 快手分享链接,实战解析无水印视频源码

    这个是我发现的源码解析 快手 package blog rs1314 cn test import java io IOException import java io InputStream import java net URLDeco
  • Numpy在三维矩阵的max()、argmax()上的操作

    1 Numpy中对于3维数组的表达形式不同于RGB图片在通道上的堆叠形式 0 设一个矩阵尺寸为 h w c 1 Numpy 会将该矩阵的后两维看成一个二维矩阵 h则代表w c大小的矩阵的个数 整体矩阵是w c矩阵在h维度上的堆叠 2 图像上
  • 日常笔记day2

    Python在3 5版本中引入了关于协程的语法糖async和await 普通的函数通过类型判断可以验证函数的类型 直接调用异步函数不会返回结果 而是返回一个coroutine对象 协程需要通过其他方式来驱动 因此可以使用这个协程对象的sen
  • LVM精简卷(Thinly-Provisioned Logical Volumes)

    可能LVM大家都比较熟悉 那么精简卷又是干什么的呢 相比于普通LVM有什么优势 又会带来哪些新的问题 带着这些我们来一探究竟 工作原理 在创建Thin 瘦 卷时 预分配一个虚拟的逻辑卷容量大小 而只是在实际写入数据时才分配物理空间给这个卷
  • 开源超级终端工具——WindTerm

    1 下载和安装 我的是win10 其他版本各位自选 Releases kingToolbox WindTerm GitHub 安装的话 相信大家不用我赘述了 初始界面是这样的 2 WindTerm使用 2 1 本地会话 最下面那个框 发送
  • html5 blob video 下载

    最近在看腾讯视频时 想把它下载下来 发现 video src 是 blob 加密的源 不能像以前那样看到一个mp4的 url