Commit e30e231
committed
fix(leaderboard): 脚本 UA 换 Chrome 伪装规避 CF Bot Fight
故障复盘
PR #322 合并后 prod build 跑 generate-leaderboard.mjs 拿到 Cloudflare 的
403 + "Just a moment..." 挑战页,脚本走 fallback 写空数组上线,
首页 Top Rank / /rank contributors 全空。
根因
api.involutionhell.com 走 Cloudflare,默认 Bot Fight Mode 对短时间内多次
请求或低信誉 IP 段(Vercel build runner)会临时 challenge。当时虽然 UA 含
"build" 关键词加重了被拦概率,但实测换任意 UA 当下都能 200,所以本质是
CF 信誉评分 + 时间窗叠加。
本 PR
脚本 UA 从 "InvolutionHell-build/1.0 (generate-leaderboard.mjs)" 改为标准
Chrome UA,避免任何 "build/script/bot" 关键词触发 CF UA 启发式判定。
跟 backend OgFetchService 的 UA 伪装策略对齐。
长期建议(不在本 PR 范围)
在 Cloudflare 给 api.involutionhell.com/api/public/* 加规则:
Action: Skip → "Browser Integrity Check" + "Bot Fight Mode"
让公开 API 永远绕过挑战。需要在 CF dashboard 操作。
修复路径
合并 → CI 触发 prod redeploy → generate-leaderboard 拉到真实 21 条 →
首页 Top Rank / /rank contributors 恢复正常。1 parent 1bf07ca commit e30e231
1 file changed
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
103 | 103 | | |
104 | 104 | | |
105 | 105 | | |
106 | | - | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
107 | 115 | | |
108 | 116 | | |
109 | 117 | | |
| |||
0 commit comments