批量操作最常见的死法是跑到第 40 条崩了、被验证码卡住或者被限流,前面 39 条的进度全部白干;换个账号重跑又不知道哪些已经成功,容易造成重复提交或重复扣款。风控一旦硬刚,账号就直接被打废。本项目针对的正是这个场景:让执行器按一定会被打断来设计,中断不丢进度,异常自动换代理,遇到验证码自动暂停该账号而不是硬刚。
点击空白处退出提示
批量操作最常见的死法是跑到第 40 条崩了、被验证码卡住或者被限流,前面 39 条的进度全部白干;换个账号重跑又不知道哪些已经成功,容易造成重复提交或重复扣款。风控一旦硬刚,账号就直接被打废。本项目针对的正是这个场景:让执行器按一定会被打断来设计,中断不丢进度,异常自动换代理,遇到验证码自动暂停该账号而不是硬刚。
执行器由六块组成:① 任务清单用纯 JSON 描述,账号、网址、步骤脚本、等待时间都可以自行编辑,不碰 Python 也能加新任务;② 基于 CDP 接管已经打开的 Chrome,一个浏览器跑所有任务,不为每个任务新开实例,内存不会爆;③ 断点续跑,每完成一项就写入 state.json,重启后自动跳过已完成项;④ 代理池轮转,每个账号取到不同的代理,某代理被判异常即进入冷却并自动换下一个;⑤ 风控熔断,检测到验证码、登录墙或限流特征时立即暂停该账号并上报,同时留截图取证,不再继续硬刚;⑥ 统一审计日志,按时间、账号、代理 IP、任务、结果逐行落盘,方便对账。
架构设计与实现由我独立完成。技术栈 Python 3.11 + Playwright 通过 CDP 接管现有浏览器而不是 headless 多开实例,websockets 走 CDP 协议与页面交互,状态持久化用 JSON 文件,代理调度自实现轮转与冷却逻辑,日志用标准 logging 输出。难点在于把中断当成常态来设计状态机,保证任意时刻被强杀都不会产生半提交的脏数据,同时把风控识别做成关键词与正则两种可扩展规则,方便针对不同站点调整。



评论