RSSHub 抓取 V2EX 报 403 Forbidden

一、问题现象

表现:RSSHub 访问 /v2ex/topics/latest/v2ex/tab/qna 等路由返回 503 Service Unavailable,容器日志记录上游报错 FetchError: [GET] "https://www.v2ex.com/api/...": 403 Forbidden

反常点

  • 宿主机/容器内执行 curl -I https://www.v2ex.com/api/... 返回 200 OK
  • 容器内使用原生 node -e 'fetch(...)' 发起 GET 请求也返回 200 OK

二、排查与根因分析

测试方式 结果 说明
curl -I(HEAD 请求) 200 OK 命中了 Cloudflare 边缘缓存(cf-cache-status: HIT),未触发动态 WAF 检测。
原生 node fetch / ofetch 200 OK 证明服务器 IP 未被拉黑,底层网络、DNS 及 Node.js 的 TLS 指纹正常。
RSSHub 内部请求 403 Forbidden 根因所在。

核心原因

V2EX 近期收紧了 Cloudflare WAF 风控策略。RSSHub 内部封装请求时,默认会注入带有项目标识的 User-Agent(如 ... RSSHub/1.0)及特定的请求头。Cloudflare 识别到来自数据中心机房 IP(IDC)且携带爬虫标识头时,直接拦截并返回 403

三、解决办法

docker-compose.yml 中为 rsshub 服务注入合法的浏览器全局 UA,覆盖默认的爬虫标识:

services:
  rsshub:
    environment:
      # 伪装为原生桌面 Chrome,抹除 RSSHub 请求特征
      UA: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'

更新配置并重启生效:

docker compose up -d rsshub
未经作者允许,禁止转载。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇