human-like-automation —— 拟真人浏览器交互
把"机械式"的自动化操作变成有呼吸感的真人操作:鼠标走曲线、点击会犹豫、打字有节奏、滚动分步走。 纯函数实现(Node ESM,零依赖)。交互函数接受任意 Playwright 风格的
page对象(鸭子类型)。
适用场景
- RPA / 网页自动化:让脚本的鼠标与键盘行为更接近真人,降低被风控识别
- 自动化测试:模拟真实用户操作路径
- 数据采集:配合反检测浏览器配置,操作节奏更自然
提供的函数
| 函数 | 说明 |
|---|---|
generateMousePath(x0,y0,x1,y1,steps?) | 生成贝塞尔曲线鼠标轨迹点数组(含缓动+抖动+偶发停顿) |
humanMouseMove(page, x, y) | 逐点移动鼠标,点间随机延时 |
humanClick(page, selector, opts?) | 拟人点击:犹豫 hover / 10% 误点修正 / 像素偏移 |
humanScroll(page, opts?) | 分步走停滚动 |
humanType(page, selector, text) | 逐字符输入 + 随机停顿 |
simulateReading(page, duration?) | 随机滚动/移动/停顿,模拟阅读 |
randomDelay(min,max) / waitRandom(min,max) | 随机延时工具 |
HumanizeScheduler | 按本地时段给出频率/间隔系数,支持随机暂停 |
用法
import { humanClick, HumanizeScheduler } from './scripts/humanize.mjs';
// 1) 直接对一个 Playwright page 做拟人点击
await humanClick(page, '.search-button', { hoverProbability: 0.8 });
// 2) 调度器:根据时段自动放慢/暂停
const sched = new HumanizeScheduler('D', 8); // 时区偏移 +8
const { frequencyMultiplier, shouldPause } = sched.calculate();
const delay = sched.getAdjustedDelay(5000); // 按系数调整基础延时
设计要点(中性、合规)
- 本 skill 只改变操作节奏与轨迹形态,属于通用的交互拟真能力。
- 请勿将其用于违反目标站点服务条款或法律法规的用途。
- 与
playwright-stealth(指纹环境配置)配合,可组成一套完整的"像人"的自动化方案。
自测
node scripts/humanize.mjs --selftest