因此本方案的设计前提是「无法绕过的验证,就靠快速识别 + 自动停号 + 即时通知本人」—— 任务 1 做停号、任务 3 做 modal 检测 + Lark 红牌通知,不试图自动通过 SMS / 人脸;任务 2 的 OCR 只覆盖图形验证那一小块。
| 风控触发点 | 等级 | 具体表现 / 阈值 | 应对方法 |
|---|---|---|---|
| 登录前 3 天高频拉登录 | 中 | 初次扫码登录 + 后续 3 天可能反复掉线,需要扫码 + 短信验证码 | 3 天养号期由运营本人手动过;第 4 天开始才能进自驱 |
| 软封禁 · 关注无效 | 中 | 点了关注按钮,UI 显示已关注,但关注列表里没这人 | 该号停 1 天,期间只发作品养号,不做任何主动操作 |
| 软封禁 · 消息送不到 | 中 | UI 显示"已发送",对方没收到(或触碰风控词:直播平台/微信号) | 该号停 1 天;话术先脱敏(不出"微信""直播""+v"等字眼) |
| 私信日上限 | 高 | 30-40 条/号/天触发日上限 | 云电脑日限封顶 25-30 条(保留 10 条余量) |
| 私信小时上限 | 高 | 10 条/号/小时触发小时上限(要等下个小时才能继续) | 小时门 8 条(保留 2 条余量),均匀打散到 60 分钟 |
| 作品浏览数个位数 | 高 | 作品发布后浏览数只有个位数 = 账号已软封禁(限流) | 立刻停号 1 天养号,期间只发作品 + 浏览 feed |
| 未到 30 条就异常 | 高 | 发送消息不到 30 条上限就出错 = 账号已被监控封禁(比软封更狠) | 立刻停号 1 天 + 第二天观察;若仍异常需重新养号 + 换设备指纹 |
| 短信 step-up 验证 | 中 | 关注/点赞/发消息时弹"请输入本人持有手机号" | 运营本人接短信 + 输入;本号当天停发 |
| 滑块拼图验证 | 高 | SMS 升级版:"请完成下列验证后继续",需要拖滑块 | 能自动 OCR 识别拖(见任务 3);不行的冷却 1-2 天 |
| 人脸活检 | 高 | 升级到最高级:让你眨眼/转头过脸 | 必须人工,靠 Hermes 推 Lark 通知本人秒响应(见任务 4) |
| 异地登录踢号 | 中 | 本人手机同时登 ➜ 云电脑被挤掉 | 自驱时段(10-18 点)本人手机别登;启动前核 AKKE_ACCOUNT_ID |
status='cooling' 字段 / cooling_since 时间戳 / mark_account_failure() RPC 都在,getCloudPcAccounts() 派单时也已经过滤掉 cooling 状态。缺的只有 3 件事:自动解除 cron / Lark 通知 / 派单 guard 的明确日志。
| 信号 | 判定条件(代码自动检测) | 处置时长 |
|---|---|---|
| 关注无效 | 关注后查关注列表,3 分钟后未出现该 user | 休息 1 天 |
| 消息送不到 | 气泡核对显示已发,但对话框系统提示"发送失败 / 操作太频繁" | 休息 1 天 |
| 作品低浏览 | 作品发布 24h 后浏览数 < 50(个位数+小两位数) | 休息 1 天 + 养号 |
| 未到 30 条就异常 | 日发量 < 30 但已撞 7911 / 22102 多次 | 休息 1 天 + 第二天观察,仍异常再续 |
| SMS / 滑块 / 人脸 | 关键词命中(任务 3 / 4 提供) | 当天停 + 次日观察 |
| 触发场景 | 提示 | 推到哪个群 | 卡片内容(举例) |
|---|---|---|---|
| 抖音对单个号速率风控(7911 / 22102) → 一次触发立刻停号 |
🟠 橙牌 | 云电脑监控群 | "野荞这个号被风控了,明天 18:30 自动恢复" |
| 同一个号「气泡没出来 / 系统提示发送失败」累计满 3 次 → 自动停号(中间发出去过就清零) |
🟠 橙牌 | 云电脑监控群 | "零星这个号连续 3 次失败自动 cool(cloud_pc_dm/unverified)" |
| 24 小时之后号自动恢复 | 🟢 绿牌 | 云电脑监控群 | "3 个号已自动恢复(24h 休息满):野荞、零星、夏夏" |
update.bat(PR #408)已经提供,运营按 PM 给的简化步骤跑即可。夏夏(零星账号)已重启完成 ✅;野荞 / 阳阳 / Gus 待跟进。| 类型 | 识别方法 | 成功率 | 成本 |
|---|---|---|---|
| 4-6 位字符 (abc123 / 数字混字母) |
ddddocr 开源库(本地推理,无外网) | 85-95% | 免费 |
| 中文字符 (请选择"汽车"图) |
百度 OCR / 腾讯 OCR API | 70-80% | 0.01 元/次 |
| 简单滑块 (缺口拼图) |
opencv 边缘检测 + 模拟拖拽 | 50-70% | 免费,但抖音命中率较低 |
| 点选验证 (按顺序点击图中文字) |
打码平台超级鹰(人工识别) | 90%+ | ~0.02 元/次 |
1. 检测:UIA 找到验证码弹窗节点 (关键词匹配) 2. 截图:定位验证码图片区域,保存为 PNG 3. 识别: - 简单字符走 ddddocr(本地) - 复杂场景走打码 API 4. 填写:SendInput 写入输入框 5. 确认:点提交按钮 6. 重试:失败 3 次后 HALT 走人工兜底
import ddddocr
from PIL import Image
async def auto_solve_captcha(page):
# 1. 检测
captcha_box = await page.query_selector('.captcha-img')
if not captcha_box:
return False
# 2. 截图
img_bytes = await captcha_box.screenshot()
# 3. 识别
ocr = ddddocr.DdddOcr(show_ad=False)
code = ocr.classification(img_bytes)
print(f"[captcha] OCR 识别: {code}")
# 4. 填写
input_field = await page.query_selector('input.captcha-input')
await input_field.fill(code)
# 5. 提交
await page.click('button.captcha-submit')
# 6. 等 2s 看是否过关
await page.wait_for_timeout(2000)
if await page.query_selector('.captcha-img'):
return False # 还在,说明识别错了
return True
captcha_alerts.metadata.screenshot_url 积累 1 周worker/scripts/wuying-dm/auto_captcha_solver.py 封装识别 + 填写douyin_dm_grounded.py / wuying_poll_agent.py 接入:弹窗预检 ➜ 命中 ➜ 调 solver ➜ 成功继续 / 失败 HALT| 触发场景 | 提示 | 推到哪个群 | 响应要求 |
|---|---|---|---|
| 单个号刚被自动 cool 进休息期 → 任务 1 触发任何 cool 都会同步推这张 |
🟠 橙牌 | 云电脑监控群 | 看一眼即可,号会自动 24h 后恢复 |
| 多个号一起出事:5 分钟内 ≥3 个不同号被 cool → 怀疑 IP 段 / 时段策略问题,不是单号 |
🚨 红牌 | 云电脑监控群 | 立刻所有人停手 + 排查近期变更(IP / cron 时间 / 同号多端登录) |
douyin_comment_grounded.py)同款逻辑还没复用。当前如果跑二触撞 modal 不会自动停号。优先级低(二触当前用量低),运营有需求再做。acknowledged_at),但 cron 暂时没接超时检测。需要 Lark App 卡片交互(运营点按钮 ack),范围比较大暂缓。| 分组 | 实验条件 | 预期触发率 |
|---|---|---|
| 对照组 A | 连续发 25 条(约 1.5 小时),中间不停 | ~30% 撞验证码(当前基线) |
| 实验组 B1 | 发 10 条 ➜ 关浏览器页面停 30 分钟 ➜ 再发 10 条 ➜ 停 30 分钟 ➜ 发 5 条 | 验证:停顿 30 分钟够不够 |
| 实验组 B2 | 发 10 条 ➜ 关浏览器页面停 1 小时 ➜ 再发 10 条 ➜ 停 1 小时 ➜ 发 5 条 | 验证:停顿 1 小时效果 |
| 实验组 B3 | 发 10 条 ➜ 整个云电脑休眠 1 小时 ➜ 再发 10 条 ➜ 休眠 1 小时 ➜ 发 5 条 | 验证:休眠 vs 关页面哪个更有效 |
scripts/_experiment-pause-strategy.ts - --group A|B1|B2|B3 选实验组 - --account <id> 跑哪个号 - 自动按设定节奏调度,中间用 RPA 关闭抖音 PC 客户端 - 实验数据写 experiment_pause_strategy 表 - 收尾跑 _analyze-pause-experiment.ts 出对比报告
experiment_pause_strategy 记录每组每条发送的:时间 / 状态 / 是否撞验证