From bd4104413e461446e6250c982f2bdf960a383682 Mon Sep 17 00:00:00 2001
From: HankTheSniper <798481015@qq.com>
Date: Wed, 23 Oct 2024 00:55:14 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=86=E6=A8=A1?=
=?UTF-8?q?=E6=8B=9Fapp=E7=AB=AF=E7=82=B9=E5=87=BB=E7=9F=AD=E8=A7=86?=
=?UTF-8?q?=E9=A2=91=E8=8E=B7=E5=BE=97=E7=9A=84=E8=A7=86=E9=A2=91=E5=88=97?=
=?UTF-8?q?=E8=A1=A8=EF=BC=9B=E4=BF=AE=E6=94=B9=E4=BA=86=E9=94=99=E8=AF=AF?=
=?UTF-8?q?=E7=9A=84=E8=A1=A8=E5=A4=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/user/space.md | 4 +-
docs/video/recommend.md | 197 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 199 insertions(+), 2 deletions(-)
diff --git a/docs/user/space.md b/docs/user/space.md
index 3abf26c..1d4e115 100644
--- a/docs/user/space.md
+++ b/docs/user/space.md
@@ -2857,7 +2857,7 @@ APP端请求对web端包容度最高,无需Cookie以外的任何认证,只
`item`数组元素:
-| 参数名 | 类型 | 内容 | 备注 |
+| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ----- | ----------------------- | ------------------------ |
| author | str | 作者昵称 | |
| bvid | str | 视频bv号 | |
@@ -2895,7 +2895,7 @@ APP端请求对web端包容度最高,无需Cookie以外的任何认证,只
`item`元素中的`cursor_attr`对象:
-| 参数名 | 类型 | 内容 | 备注 |
+| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | ----------------------- | -------------------------------------- |
| is_last_watched_arc | bool | 是否为上次播放 | 如果ture则封面笼罩一层写有“上次播放”的灰幕 |
| rank | num | 视频所处该列表排名 | |
diff --git a/docs/video/recommend.md b/docs/video/recommend.md
index b203e50..dcc93c3 100644
--- a/docs/video/recommend.md
+++ b/docs/video/recommend.md
@@ -1141,6 +1141,203 @@ curl -G 'https://api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd' \
+## 根据点击视频获取的短视频播放列表
+
+> https://app.bilibili.com/x/v2/feed/index/story
+
+*请求方式:GET*
+
+在APP端点击主页视频后发出的请求
+认证方式:Cookie 或 APP
+
+**url参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+|---------------|------|-------------------------|----------------|------------------------------------------|
+| aid | num | 点击视频的aid | 非必要 | 所点击视频的aid,会影响到后续视频内容 |
+| display_id | num | 视频列表页数 | 非必要 | 从1开始,第1页会得到比其他页多aid处所填视频 |
+| access_key | str | APP登录Token | APP方式必要 | |
+| session_id | str |
+| ad_extra | str | 额外广告? | 非必要 | |
+| appkey | str | APP密钥 | APP方式必要 | |
+| auto_play | num | 自动播放 | 非必要 | 可为0 |
+| build | num | 版本 | APP方式必要 | 可为`8130300` |
+| bvid | str | 视频的bv号
+| c_locale | str | 语言 | 非必要 | zh_CN |
+| channel | num | 频道 | 非必要 | |
+| cid | num | 目标频道id | 非必要 | |
+| contain | bool | 未知 | 非必要 | 可为false |
+| creative_id | num | 未知 | 非必要 | 默认为 `0` |
+| device_name | str | 设备名称 | 非必要 | 随意字符串都行 |
+| disable_rcmd` | num | 未知 | 非必要 | 默认为 `1` |
+| epid | num | 未知 | 非必要 | 默认为 `0` |
+| feed_status | num | 未知 | 非必要 | 默认为 `0` |
+| fnval | num | 视频流类型 | 非必要 | |
+| fnver | num | 请求时提供的fnver | 非必要 | 可为 0 |
+| force_host | num | 源url类型 | 非必要 | 0:无限制 1:使用http 2:使用https |
+| fourk | num | 是否允许 4K 视频 | 非必要 | 画质最高 1080P:0(默认)
画质最高 4K:1 |
+| from | num | 未知 | 非必要 | 可为 `7` |
+| from_spmid | str | 未知 | 非必要 | tm.recommend.0.0 |
+| goto | str | 未知 | 非必要 | |
+| mobi_app | str | 平台标识 | 非必要 | 可为 `web`、`android` 等 |
+| network | str | 网络 | 非必要 | 可为 `wifi` |
+| ogv_style | num | 未知 | 非必要 | 默认为 `0` |
+| platform | str | 平台 | 非必要 | 可为`web`或`android` |
+| player_net | num | 未知 | 非必要 | 默认为 `1` |
+| pull | num | 未知 | 非必要 | 默认为 `1` |
+| pn | num | 似乎不是页码 | 非必要 | 默认为 `32` |
+| request_from | num | 未知 | 非必要 | 默认为 `0` |
+| s_locale | str | 语言 | 非必要 | zh_CN |
+| spmid | str | 未知 | 非必要 | main.ugc-video-detail-vertical.0.0 |
+| statistics | str | 位置 | 非必要 | 可为{"appId":1,"platform":3,"version":"8.13.0","abtest":""} |
+| story_param | str | 未知 | 非必要 | |
+| trackid | str | 路径id?未知 | 非必要 | |
+| ts | num | 秒级时间戳 | 非必要 | |
+| video_mode | num | 视频模式?未知 | 非必要 | 可为 `2`,应该是可以逆向出来的 |
+| voice_balance | num | 未知 | 非必要 | 默认为 `1` |
+| sign | str | APP签名 | APP方式必要 | |
+
+**json回复:**
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | -------- | ---------------------------- |
+| code | num | 返回值 | 0:成功
-400:请求错误 |
+| message | str | 错误信息 | 默认为 0 |
+| ttl | num | 1 | |
+| data | obj | 视频信息 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ----- | -------- | ---------------------------- |
+| config | obj | 配置 | |
+| items | array | 视频信息 | |
+
+`items`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | ------------ | ---- |
+| 0 | obj | 视频信息1 | |
+| n | obj | 视频信息(n+1) | |
+| …… | obj | …… | …… |
+
+`items`数组元素:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------------- | ----- | ----------------------- | ------------------------ |
+| bvid | str | 视频bv号 | |
+| card_goto | str | 卡片跳转 | |
+| copyright | num | 版权 | |
+| cover | str | 封面url | |
+| desc | str | 视频描述 | |
+| dimension | num | 包括视频尺寸、旋转角度 | |
+| dislike_reasons_v2 | obj | 不喜欢原因v2的各种显示 | |
+| dislike_reasons_v3 | obj | 不喜欢原因v3的各种显示 | |
+| duration | num | 视频时长 | |
+| ff_cover | str | 短视频封面原图 | |
+| goto | str | 应该是跳转去向类型 | 此处为vertical_av |
+| owner | obj | 拥有者,也就是up信息 | |
+| param | str | 参数,实际为视频aid | |
+| player_args | obj | 播放器参数 | |
+| pubdate | num | 发布时间秒级时间戳 | |
+| report_flow_data | str | 报告流数据 | 是个伪装成obj的str |
+| req_user | ? | 未知 | 空的 |
+| rights | obj | 未知 | |
+| share_bottom_button | obj | 分享下方按钮 | |
+| share_guide | obj | 未知 | |
+| short_link | str | 视频短链接 | |
+| show_report | obj | 显示举报 | |
+| stat | obj | 视频信息 | |
+| sub_title | str | 子标题 | 但显示的是描述播放量的文字 |
+| submission_entrance | obj | 提交入口 | icon的uri |
+| three_point_button | obj | 三点按钮要显示的内容 | 里面有两个array |
+| thumb_up_animation | str | 未知 | |
+| title | str | 视频标题 | |
+| top_search_bar | obj | 搜索栏 | 内含一个跳转的uri |
+| track_id | str | 路由track | |
+| uri | str | uri | |
+| view_content | str | 用于显示的文本形式播放量 | |
+| vip | obj | vip相关的信息 | |
+
+`owner`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------------- | ----- | ----------------------- | ------------------------ |
+| attention | num | 未知 | 包含一个mid的int字段 |
+| avatar | obj | 一些显示设置 | |
+| face | str | 头像url | |
+| fans | num | 粉丝量 | |
+| like_num | num | 获赞数 | |
+| mid | num | up主的mid | |
+| name | str | up主的昵称 | |
+| official_verify | obj | 官方认证 | type=-1为无认证,没有其他字段;type=0为黄闪电同时role=1,type=1为蓝闪电同时role大于1,且type不为-1时有字段title为称号 |
+| relation | num | 关系?未知 | |
+| sub_avatar | obj | 子形象 | 包含一个mid的int字段 |
+| upower | obj | 充电相关 | 包含一个button_uri字段类型为str,是充电跳转链接 |
+
+`player_args`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------------- | ----- | ----------------------- | ------------------------ |
+| aid | num | 视频作者的aid | |
+| cid | num | 所属频道的cid | |
+| type | str | 内容类型 | 视频一般都是av |
+
+`player_args`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------------- | ----- | ------------------------ | ------------------------ |
+| aid | num | 视频作者的aid | |
+| coin | num | 视频硬币数 | |
+| danmaku | num | 视频弹幕数 | |
+| favorite | num | 视频收藏数 | |
+| follow | num | 未知 | 很多都是0 |
+| like | num | 视频点赞数 | |
+| reply | num | 视频评论与回复总数 | |
+| share | num | 视频分享数 | |
+| view | num | 视频播放 | |
+
+**示例:**
+
+(1)模拟点击aid=113350747029965的视频并获取短视频推荐列表
+```python
+import json
+import requests
+
+mobile_headers = {
+ "User-Agent": "xxx",
+ "env": "prod",
+ "session_id": "xxx", # 在实际使用中,session_id需要及时更新,否则将导致响应列表有问题
+ "APP-KEY": "android64",
+ 'Buvid': "xxx"
+}
+
+story_url = "https://app.bilibili.com/x/v2/feed/index/story"
+
+story_params = {
+ "aid": 113350747029965,
+ "display_id": 1,
+ "appkey": "1d8b6e7d45233436",
+ "build": "8130300",
+ "bvid": "",
+ "mobi_app": "android",
+ "statistics": "{\"appId\":1,\"platform\":3,\"version\":\"8.13.0\",\"abtest\":\"\"}"
+}
+
+response = requests.get(story_url, params=story_params, headers=mobile_headers)
+
+print(json.dumps(response.json(), indent=4))
+```
+返回值内容过长,暂不予展示
+
+(2)随机的短视频推荐
+
+> https://app.bilibili.com/x/v2/feed/index/story
+浏览器直接输入
+
+返回值内容过长,暂不予展示
+
+
## 获取短视频模式视频列表
From 9be2d6c644d94ed211457c532d587e4ba294f00f Mon Sep 17 00:00:00 2001
From: HankTheSniper <798481015@qq.com>
Date: Wed, 23 Oct 2024 15:55:18 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B?=
=?UTF-8?q?=E7=96=8F=E6=BC=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docs/video/recommend.md | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/docs/video/recommend.md b/docs/video/recommend.md
index dcc93c3..f8a30b5 100644
--- a/docs/video/recommend.md
+++ b/docs/video/recommend.md
@@ -1157,12 +1157,11 @@ curl -G 'https://api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd' \
| aid | num | 点击视频的aid | 非必要 | 所点击视频的aid,会影响到后续视频内容 |
| display_id | num | 视频列表页数 | 非必要 | 从1开始,第1页会得到比其他页多aid处所填视频 |
| access_key | str | APP登录Token | APP方式必要 | |
-| session_id | str |
| ad_extra | str | 额外广告? | 非必要 | |
| appkey | str | APP密钥 | APP方式必要 | |
| auto_play | num | 自动播放 | 非必要 | 可为0 |
| build | num | 版本 | APP方式必要 | 可为`8130300` |
-| bvid | str | 视频的bv号
+| bvid | str | 视频的bv号 | 非必要 | 可为空,如果没有会导致返回不正常 |
| c_locale | str | 语言 | 非必要 | zh_CN |
| channel | num | 频道 | 非必要 | |
| cid | num | 目标频道id | 非必要 | |
From bf0ca39c49ebadd7a69ac89f6858d938a8cdfb7f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=99=A8=E5=8F=B6=E6=A2=A6=E6=98=A5?=
<65224318+wuziqian211@users.noreply.github.com>
Date: Sun, 1 Jun 2025 13:16:13 +0800
Subject: [PATCH 3/4] fix(user/space): style
---
docs/user/space.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/docs/user/space.md b/docs/user/space.md
index 1d4e115..b06bdb3 100644
--- a/docs/user/space.md
+++ b/docs/user/space.md
@@ -2781,13 +2781,14 @@ curl -G 'https://api.bilibili.com/x/space/arc/search' \
### 查询用户投稿明细(APP、无需wbi鉴权)
-
> https://app.biliapi.com/x/v2/space/archive/cursor
*请求方式:GET*
可以获取APP端可获得的用户空间投稿所有信息
+
APP端请求对web端包容度最高,无需Cookie以外的任何认证,只需填写vmid即可查询
+
认证方式:Cookie 或 APP
**url参数:**
From 516561fdb1acf884520569defc93410cd4d9f86f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=99=A8=E5=8F=B6=E6=A2=A6=E6=98=A5?=
<65224318+wuziqian211@users.noreply.github.com>
Date: Sun, 1 Jun 2025 13:30:54 +0800
Subject: [PATCH 4/4] fix: style & make Cookie unnecessary
---
docs/user/space.md | 3 +--
docs/video/recommend.md | 8 ++++----
2 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/docs/user/space.md b/docs/user/space.md
index b06bdb3..38708d2 100644
--- a/docs/user/space.md
+++ b/docs/user/space.md
@@ -2789,8 +2789,6 @@ curl -G 'https://api.bilibili.com/x/space/arc/search' \
APP端请求对web端包容度最高,无需Cookie以外的任何认证,只需填写vmid即可查询
-认证方式:Cookie 或 APP
-
**url参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
@@ -2922,6 +2920,7 @@ APP端请求对web端包容度最高,无需Cookie以外的任何认证,只
以播放量排序,显示3个稿件,但假设aid=1301087872及以前稿件已经加载过
> https://app.biliapi.com/x/v2/space/archive/cursor?vmid=1240283469&order=click&ps=3&aid=1301087872
+
输入浏览器
diff --git a/docs/video/recommend.md b/docs/video/recommend.md
index f8a30b5..cfec7f8 100644
--- a/docs/video/recommend.md
+++ b/docs/video/recommend.md
@@ -1148,7 +1148,6 @@ curl -G 'https://api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd' \
*请求方式:GET*
在APP端点击主页视频后发出的请求
-认证方式:Cookie 或 APP
**url参数:**
@@ -1168,7 +1167,7 @@ curl -G 'https://api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd' \
| contain | bool | 未知 | 非必要 | 可为false |
| creative_id | num | 未知 | 非必要 | 默认为 `0` |
| device_name | str | 设备名称 | 非必要 | 随意字符串都行 |
-| disable_rcmd` | num | 未知 | 非必要 | 默认为 `1` |
+| disable_rcmd | num | 未知 | 非必要 | 默认为 `1` |
| epid | num | 未知 | 非必要 | 默认为 `0` |
| feed_status | num | 未知 | 非必要 | 默认为 `0` |
| fnval | num | 视频流类型 | 非必要 | |
@@ -1299,6 +1298,7 @@ curl -G 'https://api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd' \
**示例:**
(1)模拟点击aid=113350747029965的视频并获取短视频推荐列表
+
```python
import json
import requests
@@ -1327,17 +1327,17 @@ response = requests.get(story_url, params=story_params, headers=mobile_headers)
print(json.dumps(response.json(), indent=4))
```
+
返回值内容过长,暂不予展示
(2)随机的短视频推荐
> https://app.bilibili.com/x/v2/feed/index/story
+
浏览器直接输入
返回值内容过长,暂不予展示
-
-
## 获取短视频模式视频列表
> https://app.bilibili.com/x/v2/feed/index