频率保护机制——温柔地抓,比暴力快
为什么需要频率保护
QQ 空间的接口不是为批量抓取设计的。对个人账号而言,高频暴力请求很容易触发平台风控:
- 短时间大量相同 User-Agent 请求 → 被识别为爬虫
- 多次触发临时封禁 → 账号可能被标记
- 极端情况 → QQ 账号被冻结或永久封禁
这些后果远大于"归档快几分钟"的收益。QzoneArchive 的作者从第一天就选择了"温柔地抓"。
具体策略
项目文档和评测文章中提到的频率保护参数:
- 请求间隔:每次请求之间有合理的时间间隔,不做并发
- 限流阈值:每 10 分钟最多请求约 300 页
- 自动暂停:触发限流后,应用自动暂停,显示倒计时
- 倒计时结束:自动恢复归档,不需要用户手动操作
这个策略的核心思想是:慢就是快——一次跑完 vs 跑三趟被封账号,前者显然更好。
触发限流后会发生什么
当应用检测到 QQ 空间返回了限流相关的错误码:
- 当前请求队列暂停
- 界面显示限流状态和倒计时(比如"还需等待 15 分钟")
- 归档任务进入等待状态
- 倒计时归零后自动恢复归档
用户可以在这期间正常使用应用的其他功能——查看已归档内容、导出 HTML 等。归档任务后台等着就行。
提高频率会更快吗
不会,反而更糟。QQ 空间接口的分页逻辑不是线性的——每批数据从互动列表里取,频率太高会导致:
- 接口返回空页或错误,需要重试,实际有效进度反而变慢
- 更容易触发风控,账号风险指数级上升
- 可能导致 Cookie 提前过期,需要重新登录重新归档
所以正确的姿势是:让应用自己跑,别去改什么"加速"参数。项目内置的默认值就是安全且有效的节奏。
不做什么
QzoneArchive 没有做以下"可能更快"但不安全的事:
- 不做多线程并发请求
- 不做 IP 轮换
- 不做代理池
- 不做登录态共享
这些都是爬虫圈常见的手段,但对个人账号归档来说完全没必要——你只有一个账号、一个目的,快那几分钟不值得冒封号风险。