Files

16 lines
2.0 KiB
Markdown
Raw Permalink Normal View History

# 2026-09-18
## 自动提交限流逻辑的四项修正(用户要求"四条一起做")
背景:用户核对"连续 3 次失败后不再自动登录"这条逻辑,核查后发现实际语义是"3 次自动提交",且有误伤场景。按认可的四条一并修复:
1. **计数时机前移错误 → 改为提交后计数**:原实现 `fillSingleConfig` 在探测表单之前就 increment,导致"命中域名但没有登录框"的页面也消耗配额(纯域名配置下,站内浏览 3 个页面就会禁用自动提交)。现改为 `fillForm(config, canSubmit, onSubmitted)`,只在真正 `click()` / `requestSubmit()` 之后累加。
2. **新增登录成功检测并清零**:提交后 4s(`submitResultCheckMs`)观察,登录框消失或离开匹配地址 → 判定成功 → `resetDomainAttempts`;整页跳转导致脚本销毁的情况由新页面兜底——命中配置但 30s(`fillTimeoutMs`)内始终无登录框 → 清零。修正了"纯域名配置下连续 3 次成功登录后停止自动提交"。
3. **达到上限时页面可见提示**:新增 `showPageToast(title, body)`(把原 `showCaptchaToast` 泛化,并对文案做了 escapeHtml),`showAttemptsPausedToast()` 显示"已连续自动提交 N 次、M 分钟后恢复"。同时修正文案措辞(原文写"失败次数",实际是提交次数),中英双语文案同步改。
4. **重置判断过滤 enabled**:URL 变化时的 `stillMatched`/`prevMatched` 只看启用中的配置(此前一条被禁用的配置会阻止重置)。
其他细节:
- 新增测试钩子 `window.__autoLoginTiming`(覆盖 `fillTimeoutMs` / `submitResultCheckMs`),否则测超时路径要真等 30 秒。
- 测试:content-fill 34 用例 + 其余 94 用例 = **128 全绿**;lint 0 问题、format:check 通过。
- 文档同步:README 功能特性改为"连续自动提交 3 次"并说明成功即清零;CHANGELOG 的 Fixed 段补 5 条。
- 语义已记入 MEMORY.md("自动提交限流语义"一节)。