Skip to content

clear 脚本出现回溯循环 #484

@RenTheLeGend

Description

@RenTheLeGend

描述Bug

clear 脚本出现回溯循环,我设置清理四十天前的动态,当脚本翻页到达该账号动态历史的最底端时,B 站 API 返回的下一页 offset 变为了空字符串 ""(或 undefined),而不再是 '0'。
由于代码中严格校验 next_offset === '0' 作为退出条件,导致循环无法被 break。随后脚本带着空 offset 继续请求,B站接口会默认返回账号第一页(最新发布)的数据,导致脚本陷入无限读取“0天前”新动态的死循环,直到进程超时被强杀。

重现Bug

task lottery/main.js clear

将脚本调到清理60天前,将无限循环,调成40天勉强能清理1000条左右

预期行为

先一路检测到52天前的动态,然后回到第0天的动态,周而复始,不会切换到下一个号

截图

Image

运行日志

在附件里

操作系统

centos7.6

NodeJs版本

No response

脚本版本

Latest

其他

AI给出了解决办法,
文件路径:clear.js
在 clear() 函数的 for (const page of infiniteNumber()) 循环末尾:

2026-02-21-19-18-59-359.log

// 原代码逻辑过于严格:
if (next_offset === '0' || !success) break;
修复建议 (Suggested Fix):
建议在判断条件中增加对空字符串及假值(Falsy)的兼容。只需将该行代码修改为:

if (!next_offset || next_offset === '0' || next_offset === '' || !success) break;

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working风控

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions