恢复失效的浏览器配置文件锁

浏览器配置文件锁可以防止两个 Worker 同时打开同一个账号。

大多数自动化系统在恢复过程中都会失败。当 Worker 崩溃或网络中断时,系统会检测到一个旧锁并将其删除。这虽然能让队列继续推进,但会损坏你的账号状态。

失效的锁并不是一个可以简单删除的文件。它是一个需要受控恢复路径的未完成操作。

不要再把锁仅仅视为简单文件。要把它们视为“租约”(Leases)。

一个安全的租约需要:

  • 一个所有者 (An owner)
  • 一个过期时间 (An expiry time)
  • 一个心跳 (A heartbeat)
  • 一个版本号 (Fencing token)

版本号至关重要。每次写入都必须包含最新的令牌。如果旧的 Worker 在新的 Worker 接管后返回,系统会拒绝旧的令牌。这可以防止静默损坏。

不要直接从“锁定”跳转到“可用”。使用状态机来经历以下阶段:

  • 已持有 (Held)
  • 疑似失效 (Suspected stale)
  • 已隔离 (Quarantined)
  • 已检查 (Inspected)
  • 可用 | 等待恢复 | 人工审核 (Available | Resume pending | Manual review)

隔离阶段至关重要。它能防止你在调查期间第二个 Worker 触碰该配置文件。

在调查期间,你必须收集证据:

  • 浏览器进程是否仍在运行?
  • 上次已知的 URL 是什么?
  • 任务是否处于敏感步骤(如结账或设置更改)?
  • 是否有失败时的截图?

如果任务在敏感操作期间停止,不要自动恢复。将其发送至人工审核。自动化应该有边界,以防止做出错误的决策。

应避免的常见错误:

  • 在未检查配置文件安全性时删除锁。
  • 未使用隔离令牌 (fencing tokens) 来拒绝旧 Worker 的延迟写入。
  • 在没有已知安全检查点的情况下重试表单提交。
  • 在恢复过程中更换代理。

目标不是让恢复变得复杂,而是让它变得明确。

锁只是一个症状。你的系统必须保护锁背后的账号环境。

一个配置文件。 一个所有者租约。 一个活动任务。 一条证据链。 一个恢复决策。

Source: https://dev.to/web4browser/recovering-stale-browser-profile-locks-without-corrupting-account-state-2hi