注意:本文所用的方法仅用于学习交流技术,请尊重视频版权!

网页版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 命令:

复制后,需要对命令做一些修改:

  1. 添加 -o 参数,指定保存的文件名,否则会把下载的内容直接输出到 shell 中。
  2. 注意这个参数:-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站视频相关推荐

  1. 通过python you-get命令 下载B站视频

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) python下载:https://www.python.org ...

  2. 【Python爬虫】下载b站视频。超详细。

    目录 1.资源获取 **1.1 获得bvid** **1.2获取cid** **1.3获取视频url** **1.4下载视频** 2.其它函数 main.py 用来创建文件夹的函数creatdir.p ...

  3. 用python爬取下载b站视频

    B站之所以火,是因为趣味与知识并存.正如一句"你在B站看番,我在B站学习",B站还是有一些质量比较好的学习视频.当你在B站上看到喜欢的视频想保存下来时,怎么办呢? 转入正题,本篇推 ...

  4. python批量下载b站_PYTHON批量下载B站视频小脚本

    无聊废话 最近在学习HCIE的视频,收藏了几个相关的视频,结果前几天...视频被下架了了...呃...(⊙o⊙)- 视频被下架 视频被下架了...我学了一半呀...哭... 在网上一顿找,依旧找不到. ...

  5. 零基础利用Python库you-get下载b站等视频网站的视频(会员视频需有账号并且设置cookie)

    文章目录 利用python下载视频 安装python 配置环境变量 下载you-get库 (需要下载会员视频)找到cookie 配置参数 写在开头: 之所以写这个教程是因为之前想要下载b站视频(PC端 ...

  6. Python 仅下载B站视频的音频

    Python 仅下载B站视频的音频 因为各音源网站都要会员而且资源都不全,但是B站上所有的歌或者郭德纲的相声是都可以分享的,所以想在B站上下载想要的歌或者其他的音频. 首先打开一个连接https:// ...

  7. 曝肝三天,两千行Python代码,制作B站视频下载工具(附源码)

    曝肝三天,两千行Python代码,制作B站视频下载工具(附源码) 文章目录 一.准备工作 二.预览 1.启动 2.解析 3.下载中 4.下载完成 5.结果 三.设计流程 1.bilibili_vide ...

  8. python下载B站视频(简单)

    python下载B站视频资料 众所周知,网页版的B站无法下载视频,然本人喜欢经常在B站学习,奈何没有网时,无法观看视频资源,手机下载后屏幕太小又不想看,遂写此程序以解决此问题 话不多说,进入正题 1. ...

  9. 从入门到入土:Python实现爬取某站视频|根据视频编号|支持通过视频名称和创作者名称寻找编号|以及python moviepy合并音频视频

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) Python实现爬取某站视频|根据视频编号|支持通过视频名称 ...

最新文章

  1. SylixOS iMX6平台I2C总线驱动
  2. (一)硕博生常用的中文文献检索方式推荐
  3. This is a Blog Test
  4. c语言模拟试卷答案,C语言模拟试卷及其答案
  5. matlab中批量tiff转png,图片(jpg,png,tif等)批量转dicom(dcm)格式
  6. 阿里AI解锁车场景:达摩院技术输出,天猫精灵进驻奔驰、奥迪和沃尔沃
  7. git学习(二):git config命令
  8. 【代码实现和训练】OCR技术——引入了Attention机制的crnn的印刷体汉字识别
  9. 玩出来的33岁亿万富翁-畅游CEO王滔
  10. Struts 2的基石——拦截器(Interceptor)详细讲解
  11. linux光盘属于什么设备,Linux系统中,光盘的设备文件为
  12. 【产品】UI设计:哪些字体可以商用
  13. Kylin接入外部Jdbc Mysql数据源
  14. 科技感海报大合集,分分钟做出高端海报
  15. Firefox 实用插件
  16. utools沙拉查词插件 | windows划词翻译
  17. adobe fonts字体下载
  18. css 怎么做出黑白相间的table
  19. python timestamp to date
  20. java求乘法逆元的代码_求乘法逆元的几种方法

热门文章

  1. 无法启动计算机的病毒是,电脑中毒无法启动 卡巴斯基可解决危难
  2. 为什么写着写着就变成了多方面发展的技术研究者?
  3. W10打开bat文件一闪就没了
  4. 计算机打开虚拟机,电脑就蓝屏
  5. AutoCAD点击打印就卡死,无响应,没反应的解决办法
  6. KannalaBrandt8鱼眼相机模型
  7. 快学Scala 读书笔记之 Chapter 2、3、4(控制结构函数,数组,映射,元组)
  8. JS获取当月windows显示的日历(简易版本)
  9. 有感于“中国居里夫人”何泽慧院士逝世
  10. 女士细线毛衣起多少针_手工编织毛衣各处针数和方法