7e0acef4f9
- Add complete skill set including feishu, github, ci-gen, etc. - Add workspace documentation (AGENTS.md, SOUL.md, etc.) - Add memory system and project context
219 lines
6.6 KiB
Markdown
219 lines
6.6 KiB
Markdown
# B站插件调研 - Phase 2 数据获取能力调研
|
|
|
|
**调研时间**: 2026-02-06
|
|
**调研人**: 阿里巴巴助手
|
|
**数据来源**: bili-auth 项目文档、B站Web API分析、社区经验
|
|
|
|
---
|
|
|
|
## 2.1 用户数据API能力
|
|
|
|
### ✅ 可获取数据
|
|
|
|
| 数据类型 | API端点 | 说明 | 是否需要登录 |
|
|
|----------|---------|------|-------------|
|
|
| **用户基础信息** | `api.bilibili.com/x/space/acc/info` | 用户名、头像、等级、签名 | 否 |
|
|
| **用户状态数** | `api.bilibili.com/x/relation/stat` | 关注数、粉丝数 | 否 |
|
|
| **关注列表** | `api.bilibili.com/x/relation/followings` | 用户的关注列表(分页)| 是(Cookie)|
|
|
| **粉丝列表** | `api.bilibili.com/x/relation/followers` | 用户的粉丝列表 | 是 |
|
|
| **UP主动态** | `api.bilibili.com/x/polymer/web-dynamic/v1/feed/space` | 用户发布的动态 | 否 |
|
|
| **投稿视频** | `api.bilibili.com/x/space/arc/search` | 用户上传的视频列表 | 否 |
|
|
|
|
### ❌ 无法获取(需特殊权限)
|
|
|
|
| 数据类型 | 说明 |
|
|
|----------|------|
|
|
| **观看历史** | 需登录态,且仅限本人 |
|
|
| **收藏列表** | 需登录态,且仅限本人 |
|
|
| **稍后再看** | 需登录态,且仅限本人 |
|
|
| **私信内容** | 隐私数据,无法获取 |
|
|
| **手机号/邮箱** | 敏感信息,无法获取 |
|
|
| **实名信息** | 隐私数据,无法获取 |
|
|
|
|
---
|
|
|
|
## 2.2 视频数据API能力
|
|
|
|
### ✅ 可获取数据
|
|
|
|
| 数据类型 | API端点 | 说明 |
|
|
|----------|---------|------|
|
|
| **视频详情** | `api.bilibili.com/x/web-interface/view` | 标题、描述、播放量、点赞数等 |
|
|
| **视频搜索** | `api.bilibili.com/x/web-interface/search/type` | 关键词搜索视频 |
|
|
| **热门视频** | `api.bilibili.com/x/web-interface/popular` | 全站热门榜单 |
|
|
| **排行榜** | `api.bilibili.com/x/web-interface/ranking/v2` | 分区排行榜 |
|
|
| **视频流** | `api.bilibili.com/x/web-interface/index/top` | 首页推荐 |
|
|
| **分P信息** | `api.bilibili.com/x/player/pagelist` | 多P视频的分集信息 |
|
|
| **弹幕** | `api.bilibili.com/x/v1/dm/list.so` | 视频弹幕(XML格式)|
|
|
| **评论** | `api.bilibili.com/x/v2/reply` | 视频评论列表 |
|
|
|
|
### 视频详情字段示例
|
|
|
|
```json
|
|
{
|
|
"bvid": "BV1xx411c7mD",
|
|
"title": "视频标题",
|
|
"desc": "视频描述",
|
|
"owner": {
|
|
"mid": 123456,
|
|
"name": "UP主名称"
|
|
},
|
|
"stat": {
|
|
"view": 100000, // 播放量
|
|
"like": 5000, // 点赞
|
|
"coin": 1000, // 投币
|
|
"favorite": 2000, // 收藏
|
|
"share": 500, // 分享
|
|
"reply": 300 // 评论
|
|
},
|
|
"duration": 600, // 时长(秒)
|
|
"pubdate": 1609459200 // 发布时间
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 2.3 互动数据API能力
|
|
|
|
### ✅ 可获取数据
|
|
|
|
| 数据类型 | 说明 | 限制 |
|
|
|----------|------|------|
|
|
| **评论列表** | 视频的评论及回复 | 公开数据 |
|
|
| **弹幕列表** | 视频的弹幕内容 | 公开数据,需解析XML |
|
|
| **点赞/投币/收藏数** | 视频的互动统计 | 公开数据 |
|
|
| **分享数** | 视频被分享次数 | 公开数据 |
|
|
|
|
### ❌ 无法获取
|
|
|
|
| 数据类型 | 说明 |
|
|
|----------|------|
|
|
| **用户是否点赞** | 需登录态 |
|
|
| **用户是否投币** | 需登录态 |
|
|
| **用户是否收藏** | 需登录态 |
|
|
| **用户播放进度** | 隐私数据 |
|
|
|
|
---
|
|
|
|
## 2.4 API限制与风控
|
|
|
|
### 频率限制
|
|
|
|
| 场景 | 限制 | 说明 |
|
|
|------|------|------|
|
|
| **未登录请求** | 约 100次/分钟 | IP级别限制 |
|
|
| **登录后请求** | 约 300次/分钟 | 账号级别限制 |
|
|
| **搜索接口** | 约 30次/分钟 | 较严格 |
|
|
| **评论接口** | 约 60次/分钟 | 防刷机制 |
|
|
|
|
### 反爬机制
|
|
|
|
| 机制 | 触发条件 | 应对策略 |
|
|
|------|----------|----------|
|
|
| **412 Precondition Failed** | 请求过快、UA异常 | 降低频率、使用正常UA |
|
|
| **-412 风控** | IP被封 | 更换IP、使用代理 |
|
|
| **验证码** | 异常行为 | 人工介入或暂停 |
|
|
| **-401 未登录** | Cookie失效 | 重新授权 |
|
|
|
|
### 请求头要求
|
|
|
|
```
|
|
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
|
|
Referer: https://www.bilibili.com
|
|
Origin: https://www.bilibili.com
|
|
```
|
|
|
|
---
|
|
|
|
## 2.5 bili-auth 授权后可获取的数据范围
|
|
|
|
### 通过 bili-auth 获得的凭证
|
|
|
|
bili-auth 提供标准 OAuth 2.0 流程,返回:
|
|
- `access_token` - 访问令牌
|
|
- `refresh_token` - 刷新令牌(可选)
|
|
- `expires_in` - 过期时间
|
|
|
|
### 实际可用数据
|
|
|
|
bili-auth 本身**不提供额外的API能力**,它只是一个授权桥梁。获得 access_token 后,实际能调用的API仍然是 B站公开API。
|
|
|
|
**关键限制**:
|
|
- bili-auth 不直接提供 Cookie
|
|
- 某些 API 需要 SESSDATA 等 Cookie 字段
|
|
- 部分用户数据(如观看历史)需要完整的登录态
|
|
|
|
### 推荐的数据获取策略
|
|
|
|
```
|
|
方案A: bili-auth + 公开API(推荐)
|
|
- 使用 bili-auth 获取用户身份
|
|
- 调用公开 API 获取视频数据、UP主动态
|
|
- 无需处理 Cookie
|
|
|
|
方案B: bili-auth + Cookie 模拟(进阶)
|
|
- 从授权流程中提取 Cookie
|
|
- 获取更全面的用户数据
|
|
- 风险更高,需更谨慎
|
|
```
|
|
|
|
---
|
|
|
|
## 2.6 数据获取能力总结
|
|
|
|
### ✅ 可实现的 MVP 功能
|
|
|
|
| 功能 | 数据支持 | 可行性 |
|
|
|------|----------|--------|
|
|
| **关注UP主列表** | ✅ 关注列表 API | 高 |
|
|
| **UP主动态监控** | ✅ 空间动态 API | 高 |
|
|
| **新视频提醒** | ✅ 投稿列表 API | 高 |
|
|
| **视频搜索** | ✅ 搜索 API | 高 |
|
|
| **视频详情查看** | ✅ 视频详情 API | 高 |
|
|
| **热门/排行榜** | ✅ 排行榜 API | 高 |
|
|
|
|
### ⚠️ 受限的功能
|
|
|
|
| 功能 | 限制 | 替代方案 |
|
|
|------|------|----------|
|
|
| **观看历史同步** | 需完整登录态 | 仅支持公开数据 |
|
|
| **收藏夹同步** | 需完整登录态 | 仅支持公开收藏 |
|
|
| **一键三连** | 需登录态+风控 | 不支持 |
|
|
| **发送评论/弹幕** | 需登录态+风控 | 不支持 |
|
|
|
|
### ❌ 无法实现的功能
|
|
|
|
| 功能 | 原因 |
|
|
|------|------|
|
|
| **查看私信** | 隐私数据,无API |
|
|
| **修改个人资料** | 需完整登录态 |
|
|
| **投稿视频** | 需完整登录态+上传接口 |
|
|
| **直播操作** | 需直播开放平台权限 |
|
|
|
|
---
|
|
|
|
## 2.7 技术实现建议
|
|
|
|
### API 调用最佳实践
|
|
|
|
1. **缓存策略**
|
|
- 视频详情缓存 1小时
|
|
- 用户资料缓存 24小时
|
|
- 动态列表缓存 5分钟
|
|
|
|
2. **错误处理**
|
|
- 412 错误 → 自动降速 + 重试
|
|
- -401 错误 → 提示重新授权
|
|
- 网络错误 → 指数退避重试
|
|
|
|
3. **频率控制**
|
|
- 单账号请求 < 200次/分钟
|
|
- 添加随机延迟 100-500ms
|
|
- 使用队列管理请求
|
|
|
|
---
|
|
|
|
## 下一步行动
|
|
|
|
进入 **Phase 3 - 风险评估**(已完成大部分,需整理文档)和 **Phase 4 - 对标分析**
|