Skip to content

About

B站API使用模式:feed聚合、cookie陷阱、防412

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

B站API避坑

B站 API 避坑手册

聚合优于遍历,否则 412 风控教你做人:一次拉全动态,少踩 cookie 陷阱。

Status WBI Avoid412 License

它解决什么问题 - 为什么比手动强 - 工作流 - 实测参数 - 快速开始


它解决什么问题

想批量拿关注 UP 主的新视频,逐个 UP 主、逐个视频调接口,几百次请求直接撞 412 风控;就算拿到数据,cookie 还会被 requests 二次编解码搞成"账号未登录"。这个仓库给的是聚合接口 + 手动原始 cookie 的稳妥打法。

为什么比手动强

逐个遍历 本仓库
拿 400 条视频要约 1020 次请求 聚合接口约 20 次翻页拿全
高频请求极易触发 412 单次翻页、间隔 ≥2s,风险低
Session.cookies.set() 导致 -101 Header 直传原始 %2C 编码 cookie
字幕接口串台 用 x/player/wbi/v2 + wbi 签名
还在调 /x/feed/follow 已废弃 404,换聚合端点

工作流

关注动态聚合接口 feed/all(type=video)
   ↓
每页 20 条,offset 游标翻页(间隔 ≥2s)
   ↓
取 bvid/title/play/danmaku 等字段
   ↓
缺 pubdate 时补调 /x/web-interface/view?bvid=

实测参数

  • 主力端点:GET https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all
  • 翻页实测:20 页 / 400 条仍 has_more=True;约 20 次 vs 遍历约 1020 次
  • 风控:请求间隔 ≥2s,遇 412 按 10/20/30s 退避
  • cookie:SESSDATA 是核心(过期返回 -101 账号未登录),bili_jct 用于写操作

快速开始

import requests
SESSDATA = '52819ffd%2C1801827161%2C...'  # 保持原始 %2C 编码,勿让 Session 二次编码
raw_cookie = f'SESSDATA={SESSDATA}; bili_jct={BILI_JCT}; buvid3={BUVID3}; DedeUserID={DedeUserID}'
resp = requests.get(
    'https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all',
    params={'type': 'video', 'page': 1},
    headers={'Cookie': raw_cookie, 'User-Agent': 'Mozilla/5.0 ...',
             'Referer': 'https://www.bilibili.com/'})

更多实测见 references/feed-api-test-results.md 与 references/browser-console-fallback.md。

License

MIT

About

B站API使用模式:feed聚合、cookie陷阱、防412

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors