上个月在客户那边,四十台设备全挤在一个出口 IP 上,第三天弹了一批验证码。
他以为是脚本写得太规律,当时查了两天才发现是网络。
做 iOS 自动化,最怕的不是跑不通,是跑着跑着被风控。这篇只讲调什么、怎么验、异常怎么认。
自动化脚本指的是把手机上重复的手工操作写成程序、让手机自己执行;群控是它上面那一层多设备的统一管理。
截图函数先换掉,一行的改动
多数硬件方案靠屏幕镜像回传画面。
画面实时传回电脑,等于在系统进程和网络层留了一条视频采集通道。
App 的风控能检测这类通道在不在,一旦发现「有外部设备实时采集屏幕」就标可疑。
image.captureFullScreenNoAuto 不走这条通道。
它直接调用系统截图能力,拿当前屏幕的一帧静态图。
不建持续通道、不传视频数据,从系统层面看跟手动截一张图差不多,特征极弱。
脚本只是要「看到」屏幕上有没有某个元素、某个颜色,单帧就够。
在蓝牙 HID / OTG HID 方案里这么调:
// 抓取一帧屏幕(不走镜像)
const img = image.captureFullScreenNoAuto();
// 提速:预截图模式,适合频繁截图场景
image.startPreCapScreen();
// 配合识别能力
// OCR、YOLO、图色、模板匹配 均可用
image.startPreCapScreen 是预截图模式,只有频繁截图时才值得开。
原理是预先准备好截图通道,省掉每次重新建立连接的开销。
预截图不是必须的;循环检测某个界面元素时才用得上。
换掉截图方式不影响后续识别:
| 识别能力 | 是否可用 | 说明 |
|---|---|---|
| OCR 文字识别 | 可用 | 在截图中识别文字 |
| YOLO 目标检测 | 可用 | 在截图中检测目标 |
| 图色找色 | 可用 | 在截图中查找颜色 |
| 模板匹配 | 可用 | 在截图中匹配图片 |
| 节点功能 | 不可用 | 需代理 IPA 支持 |
唯一要让步的是节点功能,它得靠代理 IPA 支持。
间隔、坐标、路径:三个参数怎么调
风控在行为层看的是分布,不是单次动作。
人类操作间隔不均匀、坐标有偏移、路径每次都不一样;机器操作过于规律。
调这三个参数。
一是间隔。基准 1000 毫秒,加 ±20% 的随机偏移,别写死固定值。
二是坐标。在目标区域内随机偏移几个像素,别让十台设备点同一个点。
三是路径。准备多套脚本轮换,别让所有设备跑完全相同的流程。
随机化这么写:
// 随机化操作间隔(基准 1000ms,±20%)
const baseDelay = 1000;
const randomDelay = baseDelay * (0.8 + Math.random() * 0.4);
sleep(randomDelay);
// 点击坐标随机偏移(目标 200,300,偏移 ±5px)
const targetX = 200 + (Math.random() - 0.5) * 10;
const targetY = 300 + (Math.random() - 0.5) * 10;
click(targetX, targetY);
还有执行时段。
人类不睡觉这件事本身就是异常特征,脚本别 24 小时不停。
按工作时段排,夜里留出静默窗口;四十台分四组,每组挑不同时段起跑。
被风控的五类表现,各对应哪一层
平台风控从三个层面检测。
设备层:看有没有越狱痕迹、有没有装带异常证书的 App、有没有代理程序在跑。
行为层:分析操作的时间间隔分布、坐标分布、操作路径。
网络层:看 IP 归属、设备指纹、网络环境的一致性。
触发之后,表现大致五类:
| 表现 | 先看哪层 | 怎么改 |
|---|---|---|
| 弹验证码、要求二次验证 | 网络层 | 分组换出口,别让四十台挤一个 IP |
| 点击不响应、提交不成功 | 行为层 | 加可点性等待,随机化间隔 |
| 账号被临时限制 | 行为层 | 降单设备频率,拉长执行间隔 |
| 同设备注册的新号也受影响 | 设备层 | 清掉越狱痕迹,换规范签名 |
| 部分功能不可用 | 设备层 | 检查代理 App 残留 |
倒查顺序固定:先网络,再行为,最后设备。
网络和设备都干净了还出问题,才是行为层的事。
那四十台后来按每十台一组拆了出口,跑了一个月没再弹验证码。
调完之后怎么验,多久看一次
改完参数别直接上全量。
先挑两台跑一整天,看间隔分布和点击命中率。
两台稳了再按组扩,一组十台,跑 48 小时。
观察指标就三个:验证码出现次数、点击无响应次数、单台任务完成时长。
每次换签名、升系统之后,把这两步重跑一遍。
频率过高,怎么规避都会触发。
规避是降低机器特征、减少误伤,用在自动化测试、直播运营辅助、批量安装管理这类场景;主动破解平台安全机制是对抗,不在这篇的讨论范围。
用了无屏幕镜像截图不等于不会被风控,截图只是维度之一;随机化也不只是随机延迟,坐标、路径、执行顺序都要覆盖到。
再往下看两处:苹果群控防检测 讲的是设备层特征怎么查,iOS 免越狱投屏 讲的是画面怎么摆到一块屏幕上。
FAQ
Q1:只换一个截图函数,风控就能降下来吗? A:降的是截图这一个检测面。操作频率、坐标规律、账号行为还是独立维度,三层要一起看。
Q2:captureFullScreenNoAuto 和 startPreCapScreen 什么关系? A:前者拿单帧,后者是预截图提速模式。循环检测某个元素时才开预截图,普通脚本用前者就够。
Q3:换成无屏幕镜像截图后,节点功能还能用吗? A:不能。节点要靠代理 IPA 支持,无自动化截图方案下这一项要让步,OCR、YOLO、图色、模板匹配不受影响。
Q4:间隔随机化取多少合适? A:常见做法是基准值加 ±20% 偏移。重点是别让间隔完全一致,具体范围按业务节奏调。
Q5:四十台设备怎么分网络? A:按组拆出口,每十台一组各走一条。同 IP 下几十台一起动,是群控最典型的网络层特征。
Q6:弹验证码了先查哪一层? A:先查网络层。看过出口是不是挤在一块,再回头看行为层,最后才动设备层。
Q7:脚本能不能 24 小时连着跑? A:不建议。人类不休息本身就是异常特征,按工作时段排,夜里留静默窗口。
Q8:规避和对抗的边界在哪? A:规避是降低机器特征、减少误伤,用在自动化测试、运维管理这类场景;破解平台安全机制是对抗,属于违规。
iEasyClick:手机自动化 AI 智能体平台,覆盖安卓免 root、iOS 免越狱(代理/蓝牙 HID/OTG HID)、鸿蒙 Next 三大生态,提供脚本开发、苹果群控、本地中控投屏与云控系统。→ 了解全部产品
想要真实跑起来?
本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。