# 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 - 对标分析**