b站网页版视频投稿接口分析
- 上传视频逻辑如下:
- 1.预加载
- 2.获取准备上传到服务器的数据
- 3.分片上传(块大小最大为10MB/10485760字节)
- 4.上传完成进行合片
- 上传封面逻辑如下:
- 投稿视频:
B站投稿视频(手稿)
本教程对应B站投稿视频页面
准备工作如下:
Cookie (用户已登录)至少包含以下字段 buvid4 bsource buvid3 b_nut DedeUserID DedeUserID__ckMd5 SESSDATA sid bili_jct
Csrf
上传视频逻辑如下:
1.预加载
GET https://member.bilibili.com/preupload?name=+ 文件名+ &r=upos&profile=ugcupos%2Fbup&ssl=0
通过携带cookie并get请求,响应如下:
2.获取准备上传到服务器的数据
POST endpoint + upos_uri+ ?uploads&output=json
X-Upos-Auth auth(上方的auth)
将上方的站点和upos_uri 地址拼接到一起
这里不用携带cookies,通过上方返回的auth参数,并加入到header中X-Upos-Auth,post请求
3.分片上传(块大小最大为10MB/10485760字节)
PUT endpoint + upos_uri + ?partNumber= 分页起始(1开始)+ &uploadId= uploadId + &chunk=起始位置(0开始)+&chunks= 分区结束位置+&size= 本次传输最大长度 + &start= + 文件开始偏移位置 + &end= 文件结束偏移位置+&total=文件长度
Content-Type application/octet-stream"
X-Upos-Auth auth(上方的auth)
无响应(请求结束返回MULTIPART_PUT_SUCCESS为本次上传成功)
这里可以异步执行
4.上传完成进行合片
POST endpoint + urlPath + ?output=json&name= + fileName + &profile=ugcupos%2Fbup&uploadId= + uploadId + &biz_id= + biz_id(预加载的biz_id);
X-Upos-Auth auth(上方的auth)
Cookie (本次需要携带)
上传封面逻辑如下:
POST https://member.bilibili.com/x/vu/web/cover/up
cookie (本次需要携带)
Content-Type form-data
cover data:image/jpeg;base64,图片的base64编码
csrf cookie中的bili_jct参数
投稿视频:
POST https://member.bilibili.com/x/vu/web/add/v3
cookie (本次需要携带)
Content-Type application/json
{ “cover”: “封面地址”, “title”: “标题”, “copyright”: 1, “tid”: 视频分区id, “tag”: “标签,标签”, “desc_format_id”: 0, “desc”: “”, “recreate”: -1, “dynamic”: “”, “interactive”: 0, “videos”: [ { “filename”: “n230711a23bpe14iqooneo3nd7igkz1u”, “title”: “response2”, “desc”: “”, “cid”: 1191440337 } ], “act_reserve_create”: 0, “no_disturbance”: 0, “adorder_type”: 9, “no_reprint”: 1, “subtitle”: { “open”: 0, “lan”: “” }, “dolby”: 0, “lossless_music”: 0, “up_selection_reply”: false, “up_close_reply”: false, “up_close_danmu”: false, “web_os”: 1, “csrf”: cookie中的bili_jct参数}
投稿成功返回视频的bvId