B站视频下载教程(API方式)

这里先随便拿一个视频作为例子。不推荐选择合集,太长不便于分析,但合集和单个视频的API逻辑通用。

步骤一:通过分享链接获取BV号

随便打开一个视频,获取分享链接,例如:https://b23.tv/aPWsr9s。
请求后返回重定向地址(如 <a href="https://www.bilibili.com/video/BV1AAQqBBELn?...>Found</a>),从中提取出 BV号:BV1AAQqBBELn。

步骤二:调用视频信息API获取cid

B站官方API:https://api.bilibili.com/x/web-interface/view?bvid=BV1AAQqBBELn
返回JSON中的重要字段示例:

{
  "code": 0,
  "data": {
    "bvid": "BV1AAQqBBELn",
    "title": "【太阳之子】的MV曲换成【夜的第七章】",
    "cid": 36935959931,
    "pages": [...]   // 多集视频会有多个page
  }
}

从中获得 cid(视频分P的唯一ID)。

步骤三:获取视频流地址

调用播放地址API:
GET https://api.bilibili.com/x/player/playurl?bvid=BV1AAQqBBELn&cid=36935959931&qn=120&fnval=4048&fourk=1

参数说明:

  • qn:画质,120=4K,116=1080P60,112=1080P+,80=1080P,64=720P
  • fnval:功能标志位,4048 = 请求 DASH + HDR + 4K + AV1 + 8K
  • fourk=1:允许4K

返回结果中包含各清晰度视频流和音轨的URL(但CDN地址通常需要添加鉴权Header才能下载)。

音质ID对照表

id说明
30251Hi-Res 无损
30250杜比全景声
30280192K 高音质
30232132K 中音质
3021664K 低音质

画质ID对照表

id分辨率说明需要登录
123840×21608K大会员
73840×21604K大会员
111920×10801080P 60帧大会员
61920×10801080P 高码率大会员
801280×720720P / 1080P登录
64852×480480P免登录
32640×360360P免登录
16640×360360P免登录

下载时需要添加的Header

直接访问CDN地址会返回403,需要模拟B站Referer等请求头:

curl -o audio.m4s \
  -H "Referer: https://www.bilibili.com" \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36" \
  -H "Origin: https://www.bilibili.com" \
  "下载地址"

添加后即可正确下载视频/音频流(一般是DASH格式的m4s片段)。

参考项目

备注:

  • 分辨率列表示设备分辨率,如“3840×2160”代表8K超高清。
  • 实际下载时建议使用专业工具(如上述参考项目),它们会自动处理鉴权、合并音视频等操作。
最后修改:2026 年 09 月 25 日
如果觉得我的文章对你有用,请随意赞赏