提示错误:CHALLENGE_LOCK_OCCUPIED

当您的请求返回 CHALLENGE_LOCK_OCCUPIED 报错时,意味着该 part(会话分区) 正在处理一个活跃的验证任务,当前处于锁定状态。

错误说明

  • 错误码CHALLENGE_LOCK_OCCUPIED
  • 提示信息The current part is being challenged, please wait for the lock to be released.
  • 核心成因:穿云 API 的每一个 part 都是一个独立的会话空间。为了确保 Cloudflare 验证状态的稳定性,同一个 part 在同一时间只能处理一个验证流。

常见触发场景

  1. 多线程冲突:在本地脚本中使用了多线程或异步并发,但多个线程共用了同一个 part 编号。
  2. 账号共享:多个开发者或多个程序模块同时操作同一个账号,且未对 part 进行逻辑隔离。
  3. 残留占用:上一个请求在处理验证(如 Turnstile)时被强制中断或发生超时,系统锁尚未完全释放。

解决方案

根据 V2 接口 的并发逻辑,建议按以下方式优化您的代码:

  1. 更换会话分区(推荐)
  • 穿云 API 支持 0 ~ 999 共一千个独立分区。
  • 优化逻辑:为每个并发线程分配一个唯一的 part 值(例如:part = thread_id % 1000),即可彻底避免冲突。
  1. 增加重试机制
  • 如果必须使用固定 part,请在捕获该错误后增加 3~5 秒 的随机等待时间(Backoff),然后重新发起请求。
  1. 检查请求频率
  • 确保您的代码逻辑中没有针对同一个 part 发起短时间内的超高频重复请求。

自动化调试建议

若不确定如何分配 part,您可以登录 穿云 API 代码生成器,在配置项中选择不同的“会话分区”并生成代码参考。通过观察生成的 JSON 结构中 part 字段的用法,可以更直观地理解分区隔离逻辑。