留言与评论(共有 0 条评论) |
发布时间:2020-04-15 16:43:25
转自我自己的 CSDN 博客:Firefox F12 + Python 3.6 下载B站视频
这种方法是我最近研究出来的,需要用到浏览器的开发者工具,获取视频真实的 URL 及请求头(Request Headers),并且用 python 或者支持附带请求头的下载工具(如 cURL)来下载。
注意:本文所用的方法仅用于学习交流技术,请尊重视频版权!
网页版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。
代码:
运行效果:
完成后可以得到 flv 格式的完整视频,可以直接播放。
附:使用命令行工具 curl 下载视频
当然,除了 Python 以外,只要下载工具支持附带 headers,也可以下载。Firefox 开发者工具有一个“Copy as CURL”选项,可以把请求复制为 cURL 命令:
复制后,需要对命令做一些修改:
修改后的命令应该是这样的:
将会把视频下到当前目录下 bilibili.flv 中。
留言与评论(共有 0 条评论) |
全站搜索