为什么 Agentfy 跑在真 iPhone 上,而不是模拟器
模拟器检测是个移动靶子,真硬件不是。这是我们让每一个 Agentfy 宏都跑在物理 iPhone 上(通过 TrollStore)的原因。
作者:evil0ctal
构建 Agentfy 的时候,第一个架构岔路口现在看是显然的,但当时不是:用模拟器还是真硬件?
模拟器的吸引力很真实。按需 provisioning 实例、快照状态、确定性回放测试用例、不用买硬件就能横向扩展。Genymotion 整个公司都建立在这个上面。
我们选了真 iPhone。原因如下。
第三方 app 的问题
Phone farm —— Agentfy 最大的使用场景 —— 几乎都在操作运营方不拥有的 app。TikTok、小红书、银行 app、广告平台、交易所客户端。
这些 app 把模拟器检测当成头等对抗问题。采样时序、GL 指纹、传感器噪声本底、TLS 指纹、IORegistry 怪异、内核扩展存在性。整个团队的 KPI 就是”提高假用户的成本”。
模拟器把这个成本压回零。直到下一次检测更新发布,然后你又得从头重建。
真硬件完全绕开这个问题。一台跑着 Agentfy daemon 的 iPhone,跟你口袋里那台 iPhone 在每一个字节上都一样。TLS 指纹匹配、传感器噪声匹配、内核匹配。没有”破绽”可言。
诚实的代价
真硬件要花真钱。iPhone SE $200,iPhone 15 Pro $1000。无法按需分配。要物理存储、要充电、要网络。也不能 ssh 进去。
我们硬扛了这个成本,然后绕过几个点:
- TrollStore + daemon 代替越狱。摩擦更低,对运营方实际使用自己设备来说,warranty 几乎不受影响。
- 反向隧道 让每台设备主动向 dashboard 开一个 outbound WebSocket —— 不要端口转发,不要静态 IP。
- VNC 镜像 让运营方的浏览器是唯一客户端;不用装客户端 app,不用担心版本漂移。
失去什么
主要是确定性。真设备有:
- WiFi 质量波动。 AP 不稳定时 700ms 的截图 RPC 比有线模拟器的 50ms 感觉差得多。
- 电池 + 散热影响。 烫的手机跑得慢;冷的手机从 sleep 唤醒要更长。
- iOS 更新搅动。 每次 iOS 发版都是新的 debug 战场。
我们接受这三点 —— 因为另一个选项(在真正重要的 app 里被标成 bot)更糟。
收获什么
- 没有反模拟器检测的军备竞赛。
- 真设备 ID。 评估”这是不是有使用历史的真手机”的验证码挑战会得到 true-positive 的回答。
- 多 app 真实感。 浏览器历史、相册、通讯录 —— 你在手机上放什么就在那里。
- 真正的网络暴露。 同一 WiFi、同一运营商、同一地理位置。没有”什么都伪造”的配置。
如果你测自己的 iOS app 做 QA,Genymotion 或 Appium 完全够用。如果你在规模化运营 phone farm 或跑移动 AI 代理,真 iPhone 是唯一诚实的答案。
想试试?7 天免费试用。