真实用户行为仿真与养号脚本
把一次真人操作拆成可复现的步骤序列,控制节奏、隔离环境、记录结果,用于自动化测试与账号日常维护。
很多团队第一次写行为仿真脚本,会写成「打开页面、点按钮、关掉」三步。跑上几十次之后问题就出来了:有的账号被要求二次验证,有的页面元素定位失败,有的操作记录看起来像机器。原因通常不在代码质量,而在行为链太短、节奏太整齐、环境太干净。
本站讨论的是一套可落地的方法:先把真人操作拆成 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 个工作日。每一步都有明确的交付物,不要跳步。
第一步:记录一次真人操作
用浏览器开发者工具或录屏,把目标流程完整走一遍,记下每个动作的位置、停留时长和页面跳转。这一步的产出是一张动作清单,通常 10 到 15 行。
第二步:划分页面对象
按 URL 或页面结构把动作归组,每个页面一个类,列出需要定位的元素。元素定位优先用稳定的 data 属性,其次用文本,最后才用层级选择器。
第三步:配置节奏参数
给每类动作设定时长区间和随机扰动比例,阅读停留 3 到 12 秒、输入间隔 80 到 250 毫秒、页面切换 1 到 4 秒,扰动幅度一般取区间中值的 ±30%。
第四步:接入环境隔离
为每个账号创建独立浏览器上下文,分别设置时区、语言、视口和 User-Agent。上下文之间不共享 Cookie 和缓存,跑完即销毁,避免状态串味。
第五步:加异常处理和日志
每个动作包一层重试,失败截图并记录节点名。连续 2 次异常暂停该账号,日志按天切分保留 30 天,方便回查是元素问题还是节奏问题。
第六步:小批量试跑再放量
先拿 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 个工作日内给出初步方案和报价区间。
本站只承接自动化测试与账号维护相关的合规项目,涉及绕过平台规则、伪造身份信息的需求不接。邮件标题建议写明「行为仿真咨询 + 用途」,便于分类处理。
- 邮件咨询 发送至 [email protected],附流程说明和截图,1 个工作日内回复初步方案。
- 技术答疑 已有脚本需要调参或排查失败原因,可提供日志片段和失败截图,按次评估,一般 800 元起。
- 合作说明 批量项目按账号规模和节点数报价,50 个账号以上的调度方案通常 10 到 15 个工作日交付。