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
6.6 KiB
6.6 KiB
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 |
视频评论列表 |
视频详情字段示例
{
"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小时
- 用户资料缓存 24小时
- 动态列表缓存 5分钟
-
错误处理
- 412 错误 → 自动降速 + 重试
- -401 错误 → 提示重新授权
- 网络错误 → 指数退避重试
-
频率控制
- 单账号请求 < 200次/分钟
- 添加随机延迟 100-500ms
- 使用队列管理请求
下一步行动
进入 Phase 3 - 风险评估(已完成大部分,需整理文档)和 Phase 4 - 对标分析