Firefox F12 + Python 3.6 下载B站视频
注意:本文所用的方法仅用于学习交流技术,请尊重视频版权!
网页版B站并没有提供直接的下载方式,但是可以通过抓取 HTTP 请求来获得真实的下载地址和 headers,从而下载视频。
Step 1 - Firefox 开发者工具获取下载地址
打开要下载的B站视频所在网页,调出 Firefox 的 F12 开发者工具,切换到“网络”(Network)标签,刷新网页,可以看到有一堆请求:
但我们只需要找到载入视频的请求。B站视频是flv格式,所以在右上角的“Filter URLs”中,输入 flv
,就过滤出了含有 flv 的请求:
显然,类型为 x-flv
的请求就是我们要下载的视频,从文件大小也可以看出来。(可能需要播放视频并等一会儿才会找到 x-flv
的请求)
我们点击这个请求,可以看到视频的 URL。但是,如果直接下载这个 URL,会出现 403 错误,这是因为没有包含请求头。
右键单击这条请求,复制请求头(Request Headers)
获得的请求头如下:
其中 Range
是下载的视频范围,如果要下载整个视频,需要设置为 bytes=0-
。
Step 2 - 用 Python 3.6 urllib
下载视频
这里用 Python 3.6 自带的标准库 urllib
。
代码:
#!/usr/bin/env python3
import sys
import ssl
import urllib.requestdef report(count, blockSize, totalSize):'''下载进度显示'''downloadedSize = count * blockSizepercent = int(downloadedSize * 100 / totalSize)sys.stdout.write(f"\rDownloaded: {downloadedSize} bytes, Total: {totalSize} bytes, {percent} % complete")sys.stdout.flush()if __name__ == '__main__':# 不加这个的话可能会出现 SSL 验证错误ssl._create_default_https_context = ssl._create_unverified_contextopener = urllib.request.build_opener()# 请求头opener.addheaders = [('Host', 'tx.acgvideo.com'),('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:56.0) Gecko/20100101 Firefox/56.0'),('Accept', '*/*'),('Accept-Language', 'en-US,en;q=0.5'),('Accept-Encoding', 'gzip, deflate, br'),('Range', 'bytes=0-'), # Range 的值要为 bytes=0- 才能下载完整视频('Referer', 'https://www.bilibili.com/video/av14543079/'),('Origin', 'https://www.bilibili.com'),('Connection', 'keep-alive'),]urllib.request.install_opener(opener)# 此处的 URL 就是 Firefox 开发者工具获取的视频请求的 URL,根据实际填写url = 'https://tx.acgvideo.com/xx/xx/xxxxxxxx/xxxxxxxx-x-xx.flv?.......'urllib.request.urlretrieve(url, filename='av14543079.flv', reporthook=report)
运行效果:
完成后可以得到 flv 格式的完整视频,可以直接播放。
附:使用命令行工具 curl 下载视频
当然,除了 Python 以外,只要下载工具支持附带 headers,也可以下载。Firefox 开发者工具有一个“Copy as CURL”选项,可以把请求复制为 cURL 命令:
复制后,需要对命令做一些修改:
- 添加
-o
参数,指定保存的文件名,否则会把下载的内容直接输出到 shell 中。 - 注意这个参数:
-H 'Range: bytes=0-'
。Range
的值要设为bytes=0-
,这样才能下载完整的视频。如果不是的话就改过来。
修改后的命令应该是这样的:
curl \'https://tx.acgvideo.com/xx/xx/xxxxxxxx/xxxxxxxx-x-xx.flv?txTime=xxx&platform=xxx&txSecret=xxx&oi=xxx&rate=xxx&hfb=xxx' \-o 'bilibili.flv' \
-H 'Host: tx.acgvideo.com' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:56.0) Gecko/20100101 Firefox/56.0' \
-H 'Accept: */*' \
-H 'Accept-Language: en-US,en;q=0.5' \
--compressed \
-H 'Range: bytes=0-' \
-H 'Referer: https://www.bilibili.com/video/av14543079/' \
-H 'Origin: https://www.bilibili.com' \
-H 'Connection: keep-alive'
将会把视频下到当前目录下 bilibili.flv 中。
Firefox F12 + Python 3.6 下载B站视频相关推荐
- 通过python you-get命令 下载B站视频
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) python下载:https://www.python.org ...
- 【Python爬虫】下载b站视频。超详细。
目录 1.资源获取 **1.1 获得bvid** **1.2获取cid** **1.3获取视频url** **1.4下载视频** 2.其它函数 main.py 用来创建文件夹的函数creatdir.p ...
- 用python爬取下载b站视频
B站之所以火,是因为趣味与知识并存.正如一句"你在B站看番,我在B站学习",B站还是有一些质量比较好的学习视频.当你在B站上看到喜欢的视频想保存下来时,怎么办呢? 转入正题,本篇推 ...
- python批量下载b站_PYTHON批量下载B站视频小脚本
无聊废话 最近在学习HCIE的视频,收藏了几个相关的视频,结果前几天...视频被下架了了...呃...(⊙o⊙)- 视频被下架 视频被下架了...我学了一半呀...哭... 在网上一顿找,依旧找不到. ...
- 零基础利用Python库you-get下载b站等视频网站的视频(会员视频需有账号并且设置cookie)
文章目录 利用python下载视频 安装python 配置环境变量 下载you-get库 (需要下载会员视频)找到cookie 配置参数 写在开头: 之所以写这个教程是因为之前想要下载b站视频(PC端 ...
- Python 仅下载B站视频的音频
Python 仅下载B站视频的音频 因为各音源网站都要会员而且资源都不全,但是B站上所有的歌或者郭德纲的相声是都可以分享的,所以想在B站上下载想要的歌或者其他的音频. 首先打开一个连接https:// ...
- 曝肝三天,两千行Python代码,制作B站视频下载工具(附源码)
曝肝三天,两千行Python代码,制作B站视频下载工具(附源码) 文章目录 一.准备工作 二.预览 1.启动 2.解析 3.下载中 4.下载完成 5.结果 三.设计流程 1.bilibili_vide ...
- python下载B站视频(简单)
python下载B站视频资料 众所周知,网页版的B站无法下载视频,然本人喜欢经常在B站学习,奈何没有网时,无法观看视频资源,手机下载后屏幕太小又不想看,遂写此程序以解决此问题 话不多说,进入正题 1. ...
- 从入门到入土:Python实现爬取某站视频|根据视频编号|支持通过视频名称和创作者名称寻找编号|以及python moviepy合并音频视频
写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python实现爬取某站视频|根据视频编号|支持通过视频名称 ...
最新文章
- SylixOS iMX6平台I2C总线驱动
- (一)硕博生常用的中文文献检索方式推荐
- This is a Blog Test
- c语言模拟试卷答案,C语言模拟试卷及其答案
- matlab中批量tiff转png,图片(jpg,png,tif等)批量转dicom(dcm)格式
- 阿里AI解锁车场景:达摩院技术输出,天猫精灵进驻奔驰、奥迪和沃尔沃
- git学习(二):git config命令
- 【代码实现和训练】OCR技术——引入了Attention机制的crnn的印刷体汉字识别
- 玩出来的33岁亿万富翁-畅游CEO王滔
- Struts 2的基石——拦截器(Interceptor)详细讲解
- linux光盘属于什么设备,Linux系统中,光盘的设备文件为
- 【产品】UI设计:哪些字体可以商用
- Kylin接入外部Jdbc Mysql数据源
- 科技感海报大合集,分分钟做出高端海报
- Firefox 实用插件
- utools沙拉查词插件 | windows划词翻译
- adobe fonts字体下载
- css 怎么做出黑白相间的table
- python timestamp to date
- java求乘法逆元的代码_求乘法逆元的几种方法