RSSHub icon indicating copy to clipboard operation
RSSHub copied to clipboard

BiliBili 无法获取 UP 主投稿 412 Precondition Failed

Open zzvo opened this issue 1 month ago • 20 comments

路由地址

/bilibili/user/video/:uid/:embed?

完整路由地址

/bilibili/user/video/531838578

相关文档

https://docs.rsshub.app/zh/routes/popular#up-%E4%B8%BB%E6%8A%95%E7%A8%BF

预期是什么?

正确获取获取 UP 主投稿,就像 Folo 中提供的那样

实际发生了什么?

error: Error in /bilibili/user/video/316183842: FetchError: [GET] "https://space.bilibili.com/531838578": 412 Precondition Failed

部署

自建

部署相关信息

No response

额外信息

Error Message:

FetchError: [GET] "https://space.bilibili.com/531838578": 412 Precondition Failed

Route: /bilibili/user/video/:uid/:embed?

Full Route: /bilibili/user/video/531838578

Node Version: v22.16.0

Git Hash: f1c71f64

Git Date: Tue, 24 Jun 2025 14:50:33 GMT

这不是重复的 issue

  • [x] 我已经搜索了 现有 issue,以确保该错误尚未被报告。

zzvo avatar Nov 01 '25 21:11 zzvo

Searching for maintainers:
  • /bilibili/user/video/:uid/:embed?: @DIYgod @Konano @pseudoyu

To maintainers: if you are not willing to be disturbed, list your username in scripts/workflow/test-issue/call-maintainer.js. In this way, your username will be wrapped in an inline code block when tagged so you will not be notified.

If all routes can not be found, the issue will be closed automatically. Please use NOROUTE for a route-irrelevant issue or leave a comment if it is a mistake. 如果所有路由都无法匹配,issue 将会被自动关闭。如果 issue 和路由无关,请使用 NOROUTE 关键词,或者留下评论。我们会重新审核。

github-actions[bot] avatar Nov 01 '25 21:11 github-actions[bot]

Folo相关路由似乎也大片失效。

zzvo avatar Nov 01 '25 21:11 zzvo

Hi @zzvo! I'm Dosu and I’m helping the RSSHub team.

你遇到的 412 Precondition Failed 错误,是因为 B 站的反爬虫机制要求请求必须带有有效的登录 Cookie,否则会直接拒绝访问。自建 RSSHub 时,默认请求不会带 Cookie,所以会被 B 站拦截,出现 412 错误。

解决方法有两种,任选其一即可:

  1. 配置 BILIBILI_COOKIE_{uid} 环境变量
    用你自己的 B 站账号(不是 UP 主的 UID)登录后,抓取完整 Cookie(至少包含 SESSDATA 字段),设置为环境变量。例如你的 UID 是 123456,则变量名为 BILIBILI_COOKIE_123456。获取方法详见官方文档相关 issue 说明

  2. 开启 Puppeteer 支持
    如果无法配置 Cookie,可以让 RSSHub 自动用 Puppeteer 获取 Cookie,模拟浏览器访问,自动绕过反爬虫。只需在部署时开启 Puppeteer 支持即可,具体方法见文档说明

你可以通过 /check-cookie 路由检查 Cookie 是否有效。如果 Cookie 失效或未配置,依然会遇到 412 错误。

如果只配置了 SESSDATA 但依然报错,建议复制完整的 Cookie 字符串(不是只复制 SESSDATA),并确保 UID 是你自己的账号 UID。

参考:官方文档 | 相关 issue 1 | 相关 issue 2

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

dosubot[bot] avatar Nov 01 '25 21:11 dosubot[bot]

我也遇到了相同的问题

Valentino-cai avatar Nov 02 '25 02:11 Valentino-cai

Hi @zzvo! I'm Dosu and I’m helping the RSSHub team.

你遇到的 412 Precondition Failed 错误,是因为 B 站的反爬虫机制要求请求必须带有有效的登录 Cookie,否则会直接拒绝访问。自建 RSSHub 时,默认请求不会带 Cookie,所以会被 B 站拦截,出现 412 错误。

解决方法有两种,任选其一即可:

  1. 配置 BILIBILI_COOKIE_{uid} 环境变量 用你自己的 B 站账号(不是 UP 主的 UID)登录后,抓取完整 Cookie(至少包含 SESSDATA 字段),设置为环境变量。例如你的 UID 是 123456,则变量名为 BILIBILI_COOKIE_123456。获取方法详见官方文档相关 issue 说明
  2. 开启 Puppeteer 支持 如果无法配置 Cookie,可以让 RSSHub 自动用 Puppeteer 获取 Cookie,模拟浏览器访问,自动绕过反爬虫。只需在部署时开启 Puppeteer 支持即可,具体方法见文档说明

你可以通过 /check-cookie 路由检查 Cookie 是否有效。如果 Cookie 失效或未配置,依然会遇到 412 错误。

如果只配置了 SESSDATA 但依然报错,建议复制完整的 Cookie 字符串(不是只复制 SESSDATA),并确保 UID 是你自己的账号 UID。

参考:官方文档 | 相关 issue 1 | 相关 issue 2

To reply, just mention @dosu.

How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

第一种方法可行,登录自己的B站账号,打开 开发者工具(F12) → 选择 Application / 存储 → Cookies,拿到以下字段配置到环境变量里:

SESSDATA=xxxxxxxxxxxx; DedeUserID=123456; bili_jct=xxxxxxxxxxxx

如果遇到B站RSS失效,在后面加上?filterout=author,比如https://<部署的rsshub地址>/bilibili/user/video/<up主id>?filterout=author。如果像我一样用docker简单部署rsshub的,使用filter功能还要添加环境变量 RSSHUB_PLUGIN_FILTER=true。不知道为什么,有些up主不用filterout也能正常访问,其他大多数都需要。

第二种我试了不行,单纯用puppeteer访问还是被限制,还是要用cookie,不如直接用第一种方法。

xiangyi-zhou avatar Nov 04 '25 17:11 xiangyi-zhou

B站老牛逼了, 我现在用浏览器看up发布了什么视频都看不到. 我以前还想别用dynamic的动态路径, 兴许给B站省点负载. 现在看来我就是贱. 像B站这种简中平台, 要弄就要上最狠辣的手段.

alex-ca1123 avatar Nov 05 '25 01:11 alex-ca1123

Hi @zzvo! I'm Dosu and I’m helping the RSSHub team. 你遇到的 412 Precondition Failed 错误,是因为 B 站的反爬虫机制要求请求必须带有有效的登录 Cookie,否则会直接拒绝访问。自建 RSSHub 时,默认请求不会带 Cookie,所以会被 B 站拦截,出现 412 错误。 解决方法有两种,任选其一即可:

  1. 配置 BILIBILI_COOKIE_{uid} 环境变量 用你自己的 B 站账号(不是 UP 主的 UID)登录后,抓取完整 Cookie(至少包含 SESSDATA 字段),设置为环境变量。例如你的 UID 是 123456,则变量名为 BILIBILI_COOKIE_123456。获取方法详见官方文档相关 issue 说明
  2. 开启 Puppeteer 支持 如果无法配置 Cookie,可以让 RSSHub 自动用 Puppeteer 获取 Cookie,模拟浏览器访问,自动绕过反爬虫。只需在部署时开启 Puppeteer 支持即可,具体方法见文档说明

你可以通过 /check-cookie 路由检查 Cookie 是否有效。如果 Cookie 失效或未配置,依然会遇到 412 错误。 如果只配置了 SESSDATA 但依然报错,建议复制完整的 Cookie 字符串(不是只复制 SESSDATA),并确保 UID 是你自己的账号 UID。 参考:官方文档 | 相关 issue 1 | 相关 issue 2 To reply, just mention @dosu. How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Chat with Dosu Join Discord Share on X

第一种方法可行,登录自己的B站账号,打开 开发者工具(F12) → 选择 Application / 存储 → Cookies,拿到以下字段配置到环境变量里:

SESSDATA=xxxxxxxxxxxx; DedeUserID=123456; bili_jct=xxxxxxxxxxxx

如果遇到B站RSS失效,在后面加上?filterout=author,比如https://<部署的rsshub地址>/bilibili/user/video/<up主id>?filterout=author。如果像我一样用docker简单部署rsshub的,使用filter功能还要添加环境变量 RSSHUB_PLUGIN_FILTER=true。不知道为什么,有些up主不用filterout也能正常访问,其他大多数都需要。

第二种我试了不行,单纯用puppeteer访问还是被限制,还是要用cookie,不如直接用第一种方法。

其实是作者修复了

https://github.com/DIYgod/RSSHub/commit/8d560d18f4646227c2e21fca8b9ec62831483f62

zzvo avatar Nov 05 '25 11:11 zzvo

Searching for maintainers:
  • /bilibili/user/video/:uid/:embed?: @DIYgod @Konano @pseudoyu

To maintainers: if you are not willing to be disturbed, list your username in scripts/workflow/test-issue/call-maintainer.js. In this way, your username will be wrapped in an inline code block when tagged so you will not be notified.

If all routes can not be found, the issue will be closed automatically. Please use NOROUTE for a route-irrelevant issue or leave a comment if it is a mistake. 如果所有路由都无法匹配,issue 将会被自动关闭。如果 issue 和路由无关,请使用 NOROUTE 关键词,或者留下评论。我们会重新审核。

github-actions[bot] avatar Nov 05 '25 12:11 github-actions[bot]

似乎多访问几个不同uid的路由还是会412,合理认为是风控。

zzvo avatar Nov 05 '25 12:11 zzvo

合理推测是B站风控,我订阅的大多uid还是不能正常返回,我用自己B站账号设置cookie环境变量,不到一天已经被B站限流了,我的rsshub部署在GCP上,只是用于自己测试,访问量极小。真得没想到这次风控这么严格。

xiangyi-zhou avatar Nov 05 '25 12:11 xiangyi-zhou

目前我是352。。也是风控校验失败

9k001 avatar Nov 09 '25 16:11 9k001

搞不定,自己部署在自家nas上,加cookie也搞不定,B站风控是真的严格

kitsunetohu avatar Nov 18 '25 03:11 kitsunetohu

建议你们还是用用户关注视频动态配合自己的cookie,UP投稿的路由添加多了由于访问过于频繁很容易被b站封控。 https://docs.rsshub.app/routes/social-media#%E7%94%A8%E6%88%B7%E5%85%B3%E6%B3%A8%E8%A7%86%E9%A2%91%E5%8A%A8%E6%80%81

EricGao-Byte avatar Nov 21 '25 11:11 EricGao-Byte

建议你们还是用用户关注视频动态配合自己的cookie:https://rsshub.app/bilibili/followings/video/2267573,UP投稿的路由添加多了由于访问过于频繁很容易被b站封控。

我倒是没关注UP主。有讲究?

9k001 avatar Nov 21 '25 11:11 9k001

建议你们还是用用户关注视频动态配合自己的cookie:https://rsshub.app/bilibili/followings/video/2267573,UP投稿的路由添加多了由于访问过于频繁很容易被b站封控。

我倒是没关注UP主。有讲究?

我老早之前也是没关注,直接用的up主投稿路由。路由数量添加超过一百多个之后刷新经常出现风控报错。索性直接全关注了然后换成我自己uid的用户关注视频动态路由,半年了从来没有风控过。

EricGao-Byte avatar Nov 21 '25 11:11 EricGao-Byte

建议你们还是用用户关注视频动态配合自己的cookie:https://rsshub.app/bilibili/followings/video/2267573,UP投稿的路由添加多了由于访问过于频繁很容易被b站封控。

我倒是没关注UP主。有讲究?

我老早之前也是没关注,直接用的up主投稿路由。路由数量添加超过一百多个之后刷新经常出现风控报错。索性直接全关注了然后换成我自己uid的用户关注视频动态路由,半年了从来没有风控过。

我真是信了你的邪,写了个轮询关注的脚本,每轮睡眠5秒,成功让帐号异常了。 ╥﹏╥

Image

zzvo avatar Nov 22 '25 14:11 zzvo

我老早之前也是没关注,直接用的up主投稿路由。路由数量添加超过一百多个之后刷新经常出现风控报错。索性直接全关注了然后换成我自己uid的用户关注视频动态路由,半年了从来没有风控过。

另外,经过实验,这个路由走的api存在条数限制的问题,如果在CACHE_EXPIRE时间内超过20条视频更新大概率会漏,所以似乎并不是很好的方法。

zzvo avatar Nov 23 '25 19:11 zzvo

应该是反爬虫变的非常严格

我账号0关注,很早前退出登录,浏览器清除cookies

rsshub上用老cookies 扫B站路由,几百个,一点事情没有

最近一个月全部失败

B站3季度不是盈利了吗

KwToPA avatar Nov 24 '25 15:11 KwToPA

我这没问题,要打开隐私窗口,使用手机app扫码获取cookie,而不是验证码/密码登录。

surwall avatar Nov 30 '25 09:11 surwall

我这没问题,要打开隐私窗口,使用手机app扫码获取cookie,而不是验证码/密码登录。

跟这个没关系,有效期和作用域是一致的。

zzvo avatar Dec 09 '25 08:12 zzvo