Skip to content

2026-6-8 更新

6/9/2026

1. 微博备份能力更新总结(2026-06-09)

提交范围:fe4216c45d61c6e1d454c9b67283cb8ff4595c88(包含)至 efd1065334540dabd7b051f82b51662a875dff8c。

提交数量:4 个。变更规模:23 个文件,约 4527 行新增、772 行删除。

1.1 一、核心成果

  • 支持单条微博备份:可直接输入 weibo.com 或 m.weibo.cn/detail 形式的单条微博地址,解析账号 ID 与微博 ID 后执行定向备份。
  • 支持评论与转发备份:Weibo 新版与 Weibo M 均增加评论、子评论、转发采集与 HTML 展示。
  • 增加断点续采能力:评论、子评论、转发、微博列表采集都可保存断点;暂停或异常后可以从上次位置继续。
  • 支持强制保存:运行中或任务已结束时,可将 checkpoint 中已采集的数据强制重建为 HTML,不必从 0 重新采集。
  • 优化大数据量 HTML 展示:评论和转发列表接入 virtual scroll,避免几万条数据一次性渲染导致页面卡顿。

1.2 二、功能与实现细节

1.2.1 任务配置与单条微博

  • 任务模型增加备份模式枚举,区分单条微博和全部微博。
  • 单条微博模式下隐藏时间范围与数量限制,同时保留随机等待设置。
  • 新增微博 URL 解析工具与测试,支持 weibo.com、m.weibo.cn/detail、短 ID 等形式。

1.2.2 Weibo 新版处理器

  • 增加 repostTimeline 转发采集。
  • 评论和转发采集完成后输出总数与退出原因,便于判断是末页、空页、限流还是游标问题。
  • 增加随机延时、分页异常保护、cursor loop 保护,降低接口异常导致的重复或误判。

1.2.3 Weibo M 处理器

  • 支持单条微博、评论时间流采集、转发采集、子评论层级保存、断点续采。
  • 评论从移动端热评流切换到时间流,避免只抓到几百条就停止。
  • 转发接口遇到临时 ok=0 时保存当前页断点、延长退避、刷新详情页后重试。

1.2.4 Checkpoint 与恢复

  • 新增 weibo_backup_checkpoint.dart,保存列表、评论、转发、分页 scope、节点子评论完成状态。
  • 当本地数量明显小于官方计数时,不再把评论或转发直接标记 completed,避免恢复时全跳过。
  • 节点子评论完成后记录 childrenCompleted,恢复时可以跳过已完成子树。

1.2.5 HTML 输出与页面性能

  • 评论与转发改为 Tab 展示,支持独立展开和收起。
  • 大列表使用 virtual scroll,只渲染可视区域,改善几万条评论页面卡顿。
  • 修复展开回复时递归展开、HTML 标签裸露、文件名过长等问题。
  • 强制保存重建 HTML 时统一使用安全短文件名,避免 Windows 路径非法。

1.3 三、关键问题修复

  • 评论数量差距过大:发现 Weibo M 默认 hotflow max_id_type=0 是热评流,几百条后会停止;改用 max_id_type=1 时间流后可继续向旧评论翻页。
  • 转发接口假空页:Weibo M 的 repostTimeline 偶发在未到末页时返回 ok=0 或“还没有人转发过”;现在会保存当前页断点并重试。
  • 断点误判完成:本地数量小于官方计数时,不再把任务直接标完成。
  • 子评论层级丢失:保留评论树结构,支持子节点完成状态记录。
  • 页面卡顿:下载 virtual-scroller-dom 并随 HTML 资源复制,评论和转发过多时只渲染可视区域。
  • 强制保存异常:修复微博正文被用作文件名导致路径非法的问题。
  • HTML 标签裸露:移动端正文里的转义 HTML 会先反转义再安全过滤,避免页面显示 a href、br 等标签文本。

1.4 四、验证结果

  • Weibo M 评论采集已验证可达到 3 万+ 评论量,测试截图显示评论数 37360。
  • 转发页可展示虚拟滚动列表,测试截图显示转发数 3307。
  • 评论与转发 Tab 可切换,评论列表和转发列表都支持单独展开或收起。
  • 相关修改已执行 dart format 与 dart analyze,未发现静态分析问题。

1.5 五、涉及文件概览

  • lib/services/processors/weibo_new_processor.dart:Weibo 新版评论、转发、分页、断点、日志增强。
  • lib/services/processors/weibo_m_processor.dart:Weibo M 单条微博、评论时间流、转发重试、HTML 内容清理。
  • lib/services/processors/weibo_backup_checkpoint.dart:新增微博备份断点存储。
  • lib/services/web_clone_service.dart:强制保存、checkpoint 重建 HTML、安全文件名、资源复制。
  • lib/utils/html_help.dart:评论与转发 Tab、virtual scroll、安全 HTML 过滤与转义处理。
  • lib/utils/weibo_url_parser.dart 与 test/weibo_url_parser_test.dart:微博 URL 解析与测试。
  • 任务页和任务表单相关文件:任务配置 UI 与强制保存入口。

1.6 六、建议继续观察

  • 微博官方计数与接口可采集数量不一定完全一致,建议日志继续保留本地数量、官方数量和退出原因。
  • 转发接口偶发假空页,当前策略是保存断点并重试;如果后续仍频繁触发,可考虑增加 Web 端 AJAX fallback。
  • 超大 HTML 已通过虚拟滚动改善,但仍建议继续关注图片、头像和评论树展开时的内存占用。

1.7 七、测试截图

下面三张截图来自:D:/work/github/weibocloner_web/public/images/weibo/20260609。

截图 1:评论与转发 Tab 展示,评论 4748、转发 3307。

截图 2:转发 Tab 和虚拟滚动展示,转发 3307。

截图 3:3 万+ 评论采集验证,评论 37360。