Files
陈银军 1b0c3c012c feat: 按域名授权、iframe 多帧填充、自动提交限流修正,并补齐工程规范与文档
安全与权限:
- 站点访问权限改为 optional_host_permissions,保存配置时逐域名授权;移除 host_permissions 与 tabs,安装提示不再出现全站数据访问与浏览记录
- 主口令不再写入 storage.session,改用 IndexedDB 中不可导出的 CryptoKey 句柄恢复解锁,锁定即丢弃
- content script 注入范围只注册已授权域名,并随权限变化即时收敛

自动登录:
- 支持 iframe 内的登录表单:脚本注入所有帧,逐帧按自身地址匹配配置
- 手动填充改为逐帧探测,定向发送到真正含密码框的帧
- 限流修正:只在真正触发提交后计数;判定登录成功后立即清零;达到上限时页面给出可见提示;重置判断只看启用中的配置
- SPA 重试改为 DOM 变更门控 + 退避,并单独监听已发现的 Shadow Root

工程化与文档:
- 引入 ESLint(扁平配置)与 Prettier,CI 增加 lint 与 format:check
- 信息类日志改为 debugLog(默认静默,chrome.storage.local.debugLog 开关)
- 测试 123 → 128 用例(新增权限、iframe、限流相关用例)
- README / PRIVACY / CHANGELOG 同步
2026-09-18 00:05:20 +08:00

2.0 KiB
Raw Permalink Blame 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("自动提交限流语义"一节)。