真实用户行为仿真与养号脚本

把一次真人操作拆成可复现的步骤序列,控制节奏、隔离环境、记录结果,用于自动化测试与账号日常维护。

很多团队第一次写行为仿真脚本,会写成「打开页面、点按钮、关掉」三步。跑上几十次之后问题就出来了:有的账号被要求二次验证,有的页面元素定位失败,有的操作记录看起来像机器。原因通常不在代码质量,而在行为链太短、节奏太整齐、环境太干净。

本站讨论的是一套可落地的方法:先把真人操作拆成 8 到 15 个动作节点,再给每个节点配上合理的停留时长和随机扰动,最后用独立浏览器上下文隔离会话。脚本本身不复杂,难的是参数区间怎么定、异常怎么兜底。下面按场景、结构、行为链、节奏、环境、边界六个角度展开,每个部分都给出可执行的参数范围。

常见的工具与协议组合

  • 浏览器自动化框架
  • 设备指纹模拟
  • 代理与网络出口
  • 任务调度
  • 日志与截图
  • 数据存储

三类适用场景,行为链长度差一倍

行为仿真脚本不是一种脚本,而是三种用途的统称。把用途分清楚,参数才有依据。

第一类是功能回归测试,目标是验证页面流程是否正常,行为链可以短,5 到 8 个节点即可,节奏偏快,单次执行控制在 30 秒内。第二类是线上巡检,按小时或按天检查关键路径是否可用,行为链 8 到 12 个节点,需要处理登录态过期。第三类是账号日常维护,模拟正常使用行为维持账号活跃度,行为链通常 10 到 15 个节点,单次执行 3 到 8 分钟,两次执行间隔至少 4 小时。

  • 功能回归测试

    每次发版后跑一遍核心路径,节点少、断言多,重点在元素定位稳定性和失败截图。一般 5 到 8 个节点,单次 30 秒内跑完,失败重试 1 次即可。

  • 线上巡检

    按固定频率检查登录、浏览、提交等关键路径是否可用,需要处理登录态过期和页面改版。通常 8 到 12 个节点,单次 1 到 2 分钟,失败告警走邮件或 webhook。

  • 账号日常维护

    按账号维度安排浏览、停留、轻量互动等动作,维持正常使用记录。一般 10 到 15 个节点,单次 3 到 8 分钟,同一账号两次执行间隔不少于 4 小时,每天不超过 3 次。

脚本拆成四层,改参数不用碰业务代码

  • 页面对象层

    每个页面一个类,只负责元素定位和基础操作,定位器统一写在配置文件里。页面改版时只改这一层,上层脚本不受影响,通常能把改版适配时间从半天压到 1 小时以内。

  • 动作执行器

    把点击、输入、滚动、悬停封装成带重试的动作函数,元素不可见时先等待再滚动到可视区再点击。每个动作默认重试 2 次,间隔 500 毫秒,减少偶发失败。

  • 节奏控制器

    集中管理所有等待时长,按动作类型给不同区间:阅读停留 3 到 12 秒,输入每个字符 80 到 250 毫秒,页面切换 1 到 4 秒。参数改一处,全脚本生效。

  • 结果记录层

    每个节点输出一条结构化日志,包含节点名、开始时间、耗时、结果、截图路径。日志按天切分,保留 30 天,排查问题时能直接定位到具体节点。

行为链设计的四个关键点

  • 动作顺序要符合页面动线

    真人进入页面后通常先看标题区、再往下滚动、然后才点具体条目。脚本如果直接跳到底部点按钮,行为序列本身就不自然。建议按「进入、浏览、滚动、点击、返回」的顺序组织节点。

  • 动作用时长而不是次数衡量

    同一个页面停留 8 秒和停留 40 秒传递的信号不同。阅读类页面一般停留 5 到 15 秒,表单页 20 到 60 秒,列表页每屏 3 到 6 秒,按页面类型给区间比统一设固定值更稳。

  • 保留合理的空动作

    真人会滚动但不点击、会悬停但不进入。脚本里加入 1 到 2 个只滚动不点击的节点,能让行为链更接近真实使用,也顺便触发懒加载,减少后续元素找不到的情况。

  • 异常分支要写清楚

    遇到登录态失效、验证码、访问频率提示时,脚本应当记录状态并停止该账号的后续节点,而不是继续执行。一般设置连续 2 次异常即暂停该账号 24 小时,等待人工检查。

从零到跑通一条行为链的六个步骤

下面这条路径适合第一次搭建脚本的团队,按顺序走完通常需要 3 到 5 个工作日。每一步都有明确的交付物,不要跳步。

  1. 第一步:记录一次真人操作

    用浏览器开发者工具或录屏,把目标流程完整走一遍,记下每个动作的位置、停留时长和页面跳转。这一步的产出是一张动作清单,通常 10 到 15 行。

  2. 第二步:划分页面对象

    按 URL 或页面结构把动作归组,每个页面一个类,列出需要定位的元素。元素定位优先用稳定的 data 属性,其次用文本,最后才用层级选择器。

  3. 第三步:配置节奏参数

    给每类动作设定时长区间和随机扰动比例,阅读停留 3 到 12 秒、输入间隔 80 到 250 毫秒、页面切换 1 到 4 秒,扰动幅度一般取区间中值的 ±30%。

  4. 第四步:接入环境隔离

    为每个账号创建独立浏览器上下文,分别设置时区、语言、视口和 User-Agent。上下文之间不共享 Cookie 和缓存,跑完即销毁,避免状态串味。

  5. 第五步:加异常处理和日志

    每个动作包一层重试,失败截图并记录节点名。连续 2 次异常暂停该账号,日志按天切分保留 30 天,方便回查是元素问题还是节奏问题。

  6. 第六步:小批量试跑再放量

    先拿 3 到 5 个账号跑 2 天,观察失败率和异常提示,确认稳定后再扩到全部账号。放量节奏建议每周增加不超过一倍,便于定位问题。

常用参数区间参考

下表是经过多个测试项目验证的常用区间,可以作为起点,再按目标站点的实际响应速度微调。所有数值都是通常范围,不是固定标准。

动作类型建议时长随机扰动说明
页面首次加载等待2 到 6 秒±30%等 DOM 稳定后再开始定位,避免元素还没渲染就点
阅读停留3 到 12 秒±40%按内容长度分档,短列表取下限,长文取上限
逐字输入每字符 80 到 250 毫秒±50%中文输入法场景可适当放慢到 300 毫秒
滚动一屏0.8 到 2.5 秒±30%分 2 到 4 段滚动比一次性滚到底更自然
点击后等待1 到 4 秒±30%覆盖跳转和接口返回,超时设 15 秒
同一账号两次执行间隔不少于 4 小时—每天不超过 3 次,避免集中操作

参数不是越随机越好。扰动幅度过大反而会让行为分布变得奇怪,一般控制在 ±30% 到 ±50% 之间。另外,所有等待都应当用「等待元素出现」代替固定 sleep,固定 sleep 在页面变慢时必然失败。

环境隔离:让每次会话互不影响

  • 独立浏览器上下文

    Playwright 的 browser.newContext() 可以为每个账号创建独立上下文,Cookie、localStorage、缓存互不共享。跑完调用 context.close() 销毁,比开多个浏览器实例省内存,单机通常能同时跑 10 到 20 个上下文。

  • 指纹参数成组设置

    时区、语言、视口、User-Agent 要成组匹配,比如 zh-CN 配 Asia/Shanghai 配 1440×900。只改其中一项会造成组合矛盾,反而更容易被识别。建议维护 5 到 10 组常见组合轮换使用。

  • 网络出口按用途区分

    回归测试用固定出口保证结果可复现;巡检按目标站点要求配置;维护场景需要轮换时,同一出口连续使用不超过 12 小时,避免单出口请求过于集中。

  • 账号状态单独存储

    每个账号的登录态、上次操作时间、累计次数存数据库,脚本启动时先查状态再决定是否执行。字段至少包含账号 ID、最后执行时间、连续异常次数、当前状态四个。

风控边界与合规要求

  • 先读目标站点的用户协议

    多数平台在用户协议和 robots.txt 中明确了对自动化访问的限制。脚本上线前应确认用途在允许范围内,涉及账号维护的场景尤其要先取得账号所有方授权。

  • 遇到验证码就停

    验证码是站点明确的人机区分信号。脚本遇到验证码应当记录并暂停该账号,转人工处理,而不是接入打码服务硬闯。连续触发 2 次即暂停 24 小时是常见做法。

  • 控制请求频率

    单账号每分钟请求数一般不超过 10 次,单 IP 每分钟不超过 60 次。超过这个量级即使行为链再自然,也会因为频率特征被识别,频率控制比动作仿真更基础。

  • 不伪造身份信息

    仿真脚本模拟的是操作节奏和动作序列,不应伪造实名信息、手机号或支付信息。涉及注册、认证类流程的测试应当使用测试账号和测试环境。

服务与价格

按交付形式分三档,价格是通常区间,具体按页面数量和账号规模评估。

  • 适合自建团队

    脚本模板包

    ¥1,800 起/套

    包含页面对象层、动作执行器、节奏控制器、日志模块四部分代码,附参数配置说明和 3 个示例行为链。交付周期一般 3 个工作日,提供一次远程答疑。

  • 最常选

    定制行为链

    ¥6,000 起/条

    按目标站点录制并实现一条完整行为链,含 10 到 15 个节点、异常分支、环境隔离配置和试跑报告。交付周期一般 5 到 8 个工作日,含 2 周内 2 次调整。

  • 多账号调度方案

    ¥15,000 起/项目

    在定制行为链基础上增加任务队列、账号状态库、失败重试和告警配置,支持 50 到 200 个账号的并发调度。交付周期一般 10 到 15 个工作日,含部署文档和 1 次线上联调。

一个定制项目的推进节奏

以一条行为链加基础调度为例,通常 2 到 3 周完成。

  • 第 1 到 2 天

    需求确认

    确认用途、目标站点、账号规模和执行频率,明确哪些动作必须做、哪些可以省略,输出一页需求说明。

  • 第 3 到 5 天

    流程录制与节点划分

    完整走一遍目标流程,记录动作清单和停留时长,划分页面对象,输出节点表和参数初稿。

  • 第 6 到 10 天

    脚本实现

    按四层结构写代码,接入节奏控制和环境隔离,加异常分支和日志,本地跑通完整链路。

  • 第 11 到 15 天

    小批量试跑

    用 3 到 5 个账号跑 2 天,统计失败率和异常提示,调整参数区间和重试策略,输出试跑报告。

  • 第 16 到 20 天

    交付与答疑

    交付代码、配置说明、部署文档,做一次线上联调,2 周内提供 2 次免费调整。

我们做过一个对比:同一套动作,固定 sleep 的版本失败率 18%,改成等待元素加区间扰动之后降到 4%。差别不在代码写得多好,而在有没有把「等多久」当成一个需要设计的参数。后来我们把节奏控制器单独抽出来,改参数不用动业务代码,适配新页面的时间从半天缩到一小时。

行为仿真项目负责人 · 自动化测试团队

常见问题

行为仿真脚本和普通自动化测试脚本有什么区别?

普通测试脚本以断言为核心,动作尽量快,目标是验证功能;行为仿真脚本以动作序列和节奏为核心,需要控制停留时长、输入速度和页面动线,目标是让操作记录接近真人使用。两者可以共用页面对象层,但节奏控制器和异常策略要分开配置。

一条行为链大概要写多久?

熟悉目标站点的情况下,10 到 15 个节点的行为链一般 2 到 3 个工作日能写完并跑通,其中录制和节点划分占一半时间。如果页面有复杂交互或需要处理登录态,通常再加 1 到 2 天。首次接触的站点建议预留 5 个工作日。

参数区间是固定的吗?

不是。表里的区间是起点,实际要按目标站点的响应速度和页面类型调整。比如列表页停留 3 到 6 秒就够,长文页要 8 到 15 秒。调整原则是让分布覆盖真人的常见区间,而不是追求完全随机,扰动幅度一般控制在 ±30% 到 ±50%。

遇到验证码怎么办?

应当停止该账号的后续节点,记录状态并转人工处理,而不是接入打码服务。连续触发 2 次验证码的账号建议暂停 24 小时再检查。脚本里要把验证码检测写进异常分支,不能等执行到一半报错才处理。

多账号并发怎么控制?

用任务队列控制并发数,单机通常 10 到 20 个浏览器上下文,再多要考虑内存和网络出口限制。每个账号的状态单独存库,执行前查上次操作时间,间隔不足 4 小时的直接跳过。并发数建议按周逐步增加,每周不超过一倍。

脚本会不会被目标站点识别?

任何自动化访问都存在被识别的可能,频率特征比动作特征更容易暴露。控制单账号每分钟请求不超过 10 次、单 IP 不超过 60 次是基础。同时要遵守目标站点的用户协议和 robots 规则,涉及账号维护的场景需要账号所有方授权。

准备开始一条行为链

联系方式

咨询请尽量附上以下信息,能明显缩短评估时间:目标站点的页面类型和大致流程、需要覆盖的账号数量、期望的执行频率、是否已有自动化框架。信息齐全的情况下,通常 1 个工作日内给出初步方案和报价区间。

本站只承接自动化测试与账号维护相关的合规项目,涉及绕过平台规则、伪造身份信息的需求不接。邮件标题建议写明「行为仿真咨询 + 用途」,便于分类处理。