最近在看腾讯视频时,想把它下载下来,发现 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 reua = '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()

html5 blob video 下载相关推荐

  1. h5禁用浏览器下载视频_【HTML5】video 标签禁用自带的下载按钮

    h5自带的 video标签 ,会有个下载按钮,有时候想避免,就可以利用样式的方法 video::-internal-media-controls-download-button { display:n ...

  2. 视频播放html5网页video.js例子 源码下载

    视频播放html5网页video.js例子 源码下载 下载地址:链接:http://pan.baidu.com/s/1c2F2d12 密码:nysr 相关截图: (责任编辑:小锋) ------分隔线 ...

  3. html5 隐藏video控件的下载按钮

    最近在开发项目的时候,为了保证用户上传的视频资源不被其他用户下载,网页使用了html5的video标签进行视频播放所以需要禁止video标签自带的下载功能. 方法一: 给video对象绑定return ...

  4. HTML5新增的video标签,HTML5中video标签的使用方法

    HTML5中video标签的使用方法 发布时间:2020-08-27 11:33:56 来源:亿速云 阅读:100 作者:小新 这篇文章将为大家详细讲解有关HTML5中video标签的使用方法,小编觉 ...

  5. html5的video在IOS端默认全屏和黑屏问题

    最近项目中需要使用video来代替有点复杂的动画(video循环自动播放),遇到了使用过程中的两个坑 ios端默认全屏解决办法 查阅资料说在在video标签加如下属性 <video webkit ...

  6. html5的vidoe标签,HTML5的Video标签的属性,方法和事件

    大多数的视频通过插件(例如flash)来播放,然而并非所有的浏览器都支持此类插件.HTML5规定了一种通过video来包含视频的标准方法.但是IE8及以下版本不支持video. HTML5的video ...

  7. 用于播放视频的Html5元素是,HTML5多媒体播放video元素与audio元素详解

    在HTML5问世之前,要在网络上展示视频.音频和动画,除了使用第三方自主开发的播放器外,使用得最多的工具应该是FLASH了,便它们都需要在浏览器中安装各种插件才能使用,而且有时速度很慢.HTML5的出 ...

  8. vue3-video-play视频组件的使用(一)——基本使用 HTML5中Video标签的属性、方法和事件汇总

    vue3-video-play视频组件的使用(一)--基本使用 & HTML5中Video标签的属性.方法和事件汇总 npm地址:https://www.npmjs.com/package/v ...

  9. Springboot项目使用html5的video标签完成视频播放功能

    Springboot项目使用html5的video标签完成视频播放功能 1.首先引入pom文件: pom.xml 2.使用video标签来播放视频: 3.视频播放功能的具体实现: 文件的上传与下载会另 ...

  10. html5之video标签支持的视频格式

    目前,<video> 元素支持三种视频格式:MP4.WebM.Ogg. 有如上这三种格式,他们在使用过程中对浏览器的兼容性稍有不同. MP4: MPEG 4文件使用 H264 视频编解码器 ...

最新文章

  1. 成为多编程语言人才的诀窍你想知道吗
  2. 浏览器设置是否显示图片,可随时切换
  3. 利用XML配置实体列表
  4. reverseajax(comet) socket 杂记
  5. 管理多个Java安装
  6. 服务器biosraid管理
  7. oracle“记录被另一个用户锁住”
  8. css奇数、偶数样式
  9. Redis缓存穿透、缓存雪崩、并发问题分析与解决方案
  10. 大学计算机基础教程模拟选择题,【浙江大学】大学计算机基础教程——习题与参考答案...
  11. 电脑蓝屏日志存在哪里_Win10蓝屏日志在哪里 蓝屏查看工具BlueScreenView使用教程...
  12. 配电室站房监控改造工程 环境辅助控制系统
  13. 容易的计算机科技核心期刊,计算机类容易中的期刊
  14. Java项目名前有红色感叹号怎么解决
  15. 坑爹的苹果机不执行ajax请求,苹果机加载外部Jquery失败
  16. 10 个可以副业赚钱的网站,总有一个适合你
  17. C语言指针(二重指针)
  18. html页面插件 复制,ReadabilityCopy - 一键复制网页内容插件
  19. python爬取陌生人的qq空间_Python爬取QQ空间好友说说并生成词云(超详细)
  20. GP232RL直接替代FT232RL串口芯片uart接口

热门文章

  1. C语言判断素数的三种方法 判断素数(质数)
  2. python初级樱花编程代码_python turtle绘制樱花树代码
  3. 数学建模之线性规划问题与LINGO软件的使用
  4. uu云验证码识别平台,验证码,验证码识别,全自动验证码识别技术,优优云全自动打码,代答题系统,优优云远程打码平台,uu云打码...
  5. 资源 | 一网打尽成语歇后语,GitHub新华字典数据库
  6. python中实例是什么_Python里类和实例是什么
  7. java安卓软件开发菜鸟教程,Android 开发环境搭建
  8. android java_Android开发和JAVA开发有什么区别?
  9. C# 如何调用打印机打印报表
  10. OpenGL超级宝典 渲染管线(二)