Hotdry.

Article

鼠标移动熵分析实现 Bot 检测:速度方差、曲率与停顿时长的工程阈值

深入解析通过鼠标轨迹熵分析进行 bot 检测的工程实现,涵盖速度方差、曲率、停顿时长三大核心特征的提取算法与阈值参数。

2026-04-20security

在自动化脚本与爬虫技术持续演进的背景下,传统的字符识别型 CAPTCHA 已被逐步突破。基于鼠标移动熵分析的 bot 检测方案通过捕捉人类运动神经系统的独特物理特征,在不干扰用户正常交互的前提下实现静默风控,成为当前反自动化领域的重要技术分支。

核心特征:为什么是熵

人类鼠标移动并非线性匀速运动,而是受到视觉反馈、认知决策、肌肉控制等多重因素调节的复杂时序信号。 Bot 的运动轨迹通常由脚本驱动,表现为速度恒定、路径直线化、缺乏随机停等特点。通过量化这些差异,熵分析能够将「非人类」行为从正常用户噪声中剥离出来。

速度方差是首个关键特征。人类鼠标移动的速度分布呈现双峰结构:快速扫视阶段与精细定位阶段交替出现。典型人类的瞬时速度标准差在 80 至 200 像素每秒之间波动,而脚本生成的轨迹速度方差通常低于 30 像素每秒或呈现单一恒定值。工程实现时建议以 50 像素每秒作为初步判别阈值,低于该值的样本进入强化审查流程。

曲率反映了路径的弯曲程度。人类手臂的生理约束决定了鼠标移动必然存在圆滑的轨迹转弯,瞬时曲率均值通常在 0.01 至 0.05 弧度每像素之间。Bot 轨迹的曲率趋近于零,尤其是采用直线插值的简单脚本。推荐将瞬时曲率均值小于 0.002 弧度每像素作为高风险信号,配合其他特征联合判定。

停顿时长是区分人机最有效的单一特征。人类在操作过程中会频繁出现无意识的小停顿,平均停顿时长分布在 80 至 300 毫秒之间,且停顿时长分布的标准差较大。Bot 通常缺乏这类随机停顿,或停顿时长呈现固定周期(如每 500 毫秒规律停顿一次)。工程阈值建议设置:停顿次数低于 3 次且标准差小于 50 毫秒的样本应标记为可疑。

工程实现:特征提取流水线

完整的特征提取流程分为三个阶段。首先是轨迹采样阶段,通过 mousemove 事件监听器以 60 赫兹采样率捕获坐标序列,记录时间戳与像素位置。其次是预处理阶段,对原始坐标进行重采样以消除不均匀间隔影响,并使用卡尔曼滤波去除抖动噪声。最后是特征计算阶段,依次计算速度序列、曲率序列、停顿标记,再从中提取统计特征构成特征向量。

速度计算采用欧氏距离除以时间间隔的形式,为减少噪声影响建议使用滑动窗口平滑处理,窗口大小设为 5 至 7 个采样点。曲率计算则通过相邻三个采样点构成的圆心角来近似,使用向量叉积公式可在常数时间内完成单点计算。停顿检测需要设定速度阈值,速度低于 10 像素每秒且持续超过 50 毫秒的区段标记为停顿。

特征向量通常包含 15 至 25 维统计量,涵盖各原始序列的均值、标准差、峰值、偏度、峰度等高阶矩。推荐使用随机森林或梯度提升树作为分类器,在包含不少于 2000 条真实用户轨迹与 2000 条合成 bot 轨迹的训练集上达到 90% 以上的准确率。

阈值调优与对抗考虑

实际部署时需要根据业务场景调整判别阈值。高风险场景(如登录入口、支付页面)应采用更严格的参数,将误判率容忍度设为 1% 以下;低风险场景(如内容浏览)可适当放宽,避免影响正常用户体验。

值得注意的是,随着对抗技术发展,简单脚本已学会在轨迹中注入随机噪声。进阶的 bot 会模拟人类的速度分布与停顿模式,此时需要引入时序特征如自相关函数与傅里叶频谱分析,识别看似随机实则周期性的伪噪声。持续更新检测模型并保持特征维度迭代是长期对抗的关键。

资料来源:BeCAPTCHA-Mouse 研究工作为该领域提供了系统的特征工程框架与基准数据集,其在合成轨迹生成与神经运动分解方面的方法论具有重要参考价值。

security