行为分析:它是什么,以及自动化专家如何绕过它
2026/5/20


Markus_automation
Expert in data parsing and automation
不久前,反欺诈系统主要依赖技术属性——IP 地址、cookie 和浏览器指纹。然而,随着脚本和爬虫开发者学会有效地伪造这些参数,保护的重点转向了行为分析。
行为生物识别会评估用户究竟如何与界面交互,并正逐渐成为现代自动化检测系统的关键组成部分。
在本文中,我们讨论这种方法的工作原理,并解释如何在自动化场景中逼真地重现人类行为。
内容
保持匿名,充分利用多账户功能,借助市面上最优质的反检测浏览器实现您的目标。
为什么 CAPTCHA 正在让位于行为分析
以前,CAPTCHA 是抵御机器人的主要防线。如今 CAPTCHA 依然存在,不过已经发生了巨大变化。它们变得更加复杂,而一些现代的无感版本(例如 reCAPTCHA v3)甚至已经融入了我们正在讨论的行为生物识别技术。
为什么需要这样做?传统 CAPTCHA(红绿灯和扭曲字符)会恶化用户体验,而且正越来越容易被训练好的神经网络轻松破解。新的方法无需可见元素,减轻了用户的大量负担,也避免了令人烦恼。

行为生物识别作为这一无感验证流程的核心,提供持续认证。它通过分析用户在滚动页面或填写表单时与设备的具体交互方式来工作,无需任何额外输入。
不过,需要澄清一点:行为生物识别并不作为独立的验证方法使用。它总是与 其他检查 配合工作。除了生物识别之外,反欺诈系统仍会分析数字指纹、IP 声誉和 cookie。
行为生物识别的类型
让我们进一步深入理论。行为模式本质上是你神经系统的数字指纹,被转移到设备上。高级反欺诈系统不会单独分析各个参数,而是构建一个全面的多维画像,并可分为以下几类:
设备交互(运动学)
这是传统网页和移动应用中数据量最大的一层。在这里,系统分析用户动作的物理特征。
键盘:它不是在看你输入了哪些字母或数字。反欺诈系统会评估两个主要参数:按住按键的时长(
dwell time)以及在按键之间移动所需的时间(flight time)。人类拥有肌肉记忆——熟悉的按键组合(例如常见的词尾)会以微小爆发的方式输入。而机器人则要么一次性注入整段字符串,要么用简单的time.sleep(random)逻辑模拟输入。这会形成平坦、不自然的延迟分布。随机性本身也会变得可疑。鼠标:光标分析。系统记录坐标并计算速度、加速度、轨迹曲率和突变。人类不会让鼠标沿着完全笔直的线移动。我们会朝按钮移动,偏离几个像素,做出微小的修正动作,并在点击前短暂停顿。

触摸屏:专用于移动网页和原生应用。人类的滑动是带有不均匀速度、特定压力(如果 API 允许检测压力)以及不断变化的手指接触面积的弧线。通过 Appium 或 JavaScript 脚本模拟触摸事件的机器人,往往只是简单地“传送”焦点坐标。编写能实现逼真滑动的正确数学模型要困难得多,因此机器人操作者常常会偷工减料。
物理模式(生物力学)
当用户从移动设备访问平台时,硬件传感器就会发挥作用。而既然我们如今生活在移动用户时代,这一点就非常重要。
行走模式与微动作。你是在走路时、坐在椅子上,还是躺在沙发上刷信息流?智能手机的加速度计和陀螺仪会持续捕捉设备的微小振动。真实用户的手机即使在他们努力保持不动时,也总会在手中轻微颤动。运行在服务器上的机器人农场和模拟器默认通常没有任何传感器背景噪声,这会让反欺诈系统多加思考并提高风险评分。
认知模式(交互心理学)
这是系统分析用户在与 UI 交互时大脑如何运作的地方。
导航与决策速度。 用户多快能找到所需按钮?他们在勾选复选框之前会先阅读文本吗?人们在阅读时经常让光标沿着文本移动,类似于用手指沿着书中的行线划过,或者在复杂表单前停顿。有些用户甚至会高亮文本。另一方面,爬虫脚本毫无疑虑——它对 DOM 结构了如指掌,并且总是在预设超时后精确触发所需事件,完全无视视觉搜索的逻辑。
这三层结合在一起,形成了如此复杂的画像,以至于仅仅在 Selenium 或 Puppeteer 代码中加入随机延迟,已经在数学上不可能完全复制。
数据收集与预处理
收集生物特征数据的主要来源是 mousemove、keydown、keyup、touchstart 和 touchend 事件,以及用于捕捉加速度计和陀螺仪读数的 DeviceOrientation API。
这一阶段最困难的部分是处理海量碎片化和异步数据。单个 mousemove 事件本身每秒就能触发数百次。如果每一次光标移动都直接触发后端处理,或者在客户端直接进行重计算,反欺诈系统会立刻冻结 UI,并让客户端网站出现明显卡顿。没有任何企业会接受这种情况。
这就是为什么客户端采集脚本会被设计得尽可能轻量且原始。它们的唯一任务是快速捕获坐标,附加精确时间戳,将一切存入本地缓冲区,并把数据批量发送到服务器。

这些 JSON 对象批次随后被传输到后端。在高负载系统中,它们不会直接写入数据库,也不会立即传递给 ML 模型。首先,它们会通过 Kafka 或 RabbitMQ 等消息代理进行路由。这样做是为了平滑流量峰值,例如大规模机器人攻击期间,或销售和促销活动期间真实用户自然激增时。到这一步,客户端的责任就结束了。
特征工程与 ML 模型
那么,原始批次已经到达服务器。接下来会发生什么?
如果你只是把这组像素数组直接喂给 ML 模型,它并不会学会区分人类和机器人。它只会记住你网站上按钮的位置,并在布局稍有变化时立刻失效。机器学习模型并不需要屏幕地理信息,它们需要的是行为抽象。
这就是为什么在消息队列和神经网络之间会有一个专门的微服务层,称为特征工程。这些通常是基于 Pandas 和 NumPy 构建的流水线,用于聚合日志并将其转换为适合 ML 模型的数据。它们计算:
点之间的欧几里得距离;
时间差;
瞬时速度;
轨迹转角。
基于这些计算,反欺诈系统构建出复杂的行为特征画像:
键盘:延迟向量(
dwell time和flight time),以及其中位数、方差和标准差。换句话说,就是输入节奏有多稳定。鼠标:速度和加速度的统计、微暂停次数,以及轨迹的谱熵。这个指标显示动作看起来是混乱的(像人类)还是数学上完美的(像脚本)。
触摸屏:在滑动过程中压力与接触面积变化的梯度(在浏览器或 OS API 共享此类数据的情况下)。
认知特征:
idle time以及在聚焦目标元素前的延迟。例如,在点击“支付”按钮之前,用户会先在心里再次确认金额,于是会停顿一下。
从单个会话中可以提取数百个这样的参数,剥离与布局相关的上下文后,再传递给 ML 模型。
经典 ML 算法(Random Forest、SVM、Gradient Boosting)
它们在聚合后的统计特征上表现极佳。运行速度快,消耗的服务器资源极少,通常作为第一道也是最快的一道防线。
本质上,它们会将整组会话统计向量(动作速度、时间方差、熵等)通过一套精心校准的数学阈值系统,立即筛除明显异常,例如光标加速度方差为零或点击间隔异常一致。
神经网络(LSTM、GRU 和 1D-CNN)
经典算法关注整体统计图景,而循环神经网络则会分析光标移动随时间变化的实际序列。
循环网络专为处理序列数据(文本、语音、时间序列)而设计,在这些数据中,前序元素的上下文很重要。与传统网络不同,循环架构通过反馈循环拥有“记忆”,因此能够利用前一步骤的信息。结果,它们可以检测出被普通统计平均所掩盖的不自然模式和节奏。
自编码器与异常检测
反欺诈系统面临的最大挑战是,机器人开发者会不断发明新的伪装技术。对每一种现有机器人都进行训练是不可能的,但真实人类产生的会话却有数百万个。这就是为什么无监督学习,尤其是自编码器,被广泛使用。
自编码器是一种仅用人类行为进行训练的神经网络。它像一个专门的过滤器:将会话参数作为输入,先在数学上将其压缩成紧凑表示,然后再尝试重建原始数据。
因为这种网络只见过真实的人类会话,它几乎完美地学会了人类动作的物理规律,并能近乎无瑕地重建这类数据。但如果将一个此前未见过的机器人——无论它多么复杂——输入模型,网络就会尝试用人类的压缩规则去处理它。结果,重建阶段会产生不准确的输出。
当原始数据与网络成功重建的数据之间存在很大差异时,这就会成为重建误差。误差越大,风险评分越高,表明行为异常。
单一方法检查与混合系统
仅依赖一种验证方式是无效的,因此没有人会使用单模型。在大多数情况下,架构会被设计成级联结构:轻量级 ML 算法可以立即筛除多达 90% 的简单脚本和机器人,而更重的神经网络只会在前面检查得到不确定结果的边缘案例中才被激活。这种方法显著降低了计算成本。
特征漂移与自适应
真实的人类行为会随着时间变化,就像他们设备的数字指纹一样。用户可能会买一只 DPI 设置不同的新鼠标,从台式机换到带触控板的笔记本,手部受伤,喝下一杯双份浓缩咖啡,或者仅仅在工作日结束时变得筋疲力尽。所有这些都会立刻改变他们的输入节奏、精细运动控制和反应速度。
如果反欺诈模型是静态的,并依赖于数年前收集的参考画像,它最终必然会开始拦截合法用户。误报率会升高,转化率会下降,企业会同时失去收入和客户忠诚度。
因此,反欺诈系统必须与用户一起持续演化,并适应不断变化的环境。
实时神经网络训练
与传统批量训练不同,后者是模型每月在庞大的累积数据集上重新训练一次,而在线学习允许算法实时持续调整其权重。一旦一个有效会话结束——例如通过购买或成功的 2FA 验证来确认——其特征就会稍微改变模型的决策阈值。这能完美地考虑到用户习惯的逐步变化。
滑动记忆窗口
算法还依赖滑动记忆窗口原则:新的会话数据会不断添加到参考行为画像中,并被赋予最高的数学权重。较旧的记录会逐渐失去影响,直到其贡献接近于零。系统始终将当前行为与用户在最近几周内的表现进行比较,而不是与账号创建多年前的那个时刻比较。
统计监控
但是,系统如何区分像购买新鼠标这样的合法变化,与复杂机器人突然进行的会话伪装呢?为此,会应用严格的统计监控,包括:
主成分分析(PCA)。该方法将数十个特征投影到二维或三维空间,并跟踪聚类漂移。如果新的会话突然偏离用户历史行为核心,系统就会检测到这种漂移。

统计检验(例如 Kolmogorov–Smirnov 检验)。 该算法会持续将新数据的分布与参考分布进行比较。如果检测到两个样本之间存在偏离,系统会暂时降低对该画像的信任。在这一阶段,用户不会被封禁,而是会被要求完成 CAPTCHA。如果验证成功通过,模型就会将这种偏差解释为合法变化——例如切换到新设备——并相应更新参考画像。
人类行为模拟
既然我们已经了解反欺诈算法的工作原理,接下来就来看看如何训练机器人表现得像人类。
仅仅用贝塞尔曲线平滑光标移动,或者添加 time.sleep() 调用,已经远远不够:ML 模型只需点击几次就能检测到自动化。要让模拟器真正像人类,就必须融入生理学和生物力学的规律。
抖动注入
如果你让脚本做出 80 到 120 毫秒之间的随机暂停,它会以大致相同的频率生成 80 ms、120 ms 和 95 ms 的延迟。
人类输入并不是这样的。我们每个人都有一个自然、舒适的节奏,大多数时候都会维持在这个节奏上。偶尔,我们的手指会稍微加快或减慢。这就是为什么延迟应该按照高斯分布(钟形曲线)生成。机器人暂停的绝大多数时间应聚集在单一基线速度附近,而只有少数偏差会在任一方向上明显不同。

颤动模拟
想象一下试图快速点击一个很小的复选框。你突然移动鼠标,越过目标几个像素,发现错误后再把光标拉回来。
为了模仿这种效果以及人类手部自然的抖动,开发者会将数学函数(正弦波和余弦波)混入理想的光标轨迹中。这样就会产生真实的微噪声,足以欺骗反欺诈系统。
宏暂停
最先进且很少实现的技术之一,是引入宏暂停来模拟生理周期。人类不会连续不断地坐在电脑前工作。我们会眨眼,暂时失去对屏幕的视觉接触;会呼吸;会低头看键盘;或者被手机分心。
因此,模拟器必须包含“失去专注”逻辑——在重要操作前周期性地引入 1–3 秒的人工延迟,打破机器般的单调感。
行为复制
既然你可以直接使用真实的滚动行为,为何还要从头编写复杂的数学模型来生成带有自然减速和微小顿挫的完美滚动动作呢?这种方法被称为混合,它将模拟提升到了全新的层次。
高级机器人开发者会自行构建数据库或购买现成的数据。这些数据集包含来自真实在线用户的会话:人们如何浏览信息流、在阅读文本时移动光标,或在思考时无意识地移动鼠标。这些记录被存储为包含运动向量和微观时间数据的数组。
当基于这项技术构建的脚本需要滚动页面或将光标移动到复杂表单时,它不会使用 window.scrollBy() 或贝塞尔曲线。相反,它会从数据库中检索一段合适的真实人类交互日志片段。然后对轨迹进行变形:脚本会在数学上扭曲这份“快照”,使其适配浏览器当前坐标。向量只会被移动到足以让光标最终停在所需按钮上方的程度,随后控制权便会无缝交还给机器人执行最后一次点击。
反欺诈 ML 模型会将这些动作视为完美的高频噪声、完全自然的颤动以及逼真的微暂停。因此,它们会允许脚本继续工作,因为底层数据确实源自真实人类。
陷阱是什么? 要让这种方法在大规模场景下奏效,机器人开发者需要一个真正庞大的行为“快照”库。如果同一段滚动片段被多个机器人重复使用,服务器端反欺诈系统会很快检测到数学上的重复副本(触发基本的重放攻击防护),并封禁整个机器人农场。
循环的脆弱性
无论你如何随机化时序和抖动光标,每个机器人都有一个与生俱来的弱点:它生活在一个程序循环里(while 或 for)。
防护系统会拿你的脚本时序进行谱分析(傅里叶变换)。这会过滤掉人为的随机噪声,并揭示循环隐藏的载波频率。人类天生没有固定节律;机器人则不然。
你能否击败傅里叶分析,让服务器相信你的脚本是一个具有生命、且没有可检测基频的人类?可以,但这需要你重写爬虫的整个架构。单靠一个 Math.random() 远远不够。
放弃循环,改用状态机。 不要使用线性的
while或for循环再配合嵌套的sleep()调用。你的机器人应该作为一个由事件驱动的有限状态机运行。它应当包含多个状态,例如阅读、犹豫或空闲、移动、点击。这些状态之间的转换不应被死板地硬编码,而应通过概率决定。只有这样,会话的整体节奏才会变得不可预测,像一个人在点击按钮前突然改变主意一样。“重尾”的数学。 忘掉均匀随机,甚至忘掉高斯分布。你的大多数暂停应当短而密集,但机器人也应当偶尔以某种概率停止异常长的时间。这些罕见但极端的离群值,正是打乱傅里叶频率分析、抹平频谱并隐藏机器节奏的关键。
使用操作系统熵。 JavaScript 或 Python 内置的伪随机数生成器本身也有可预测的模式。相反,你可以直接从操作系统获取真正的熵,操作系统会收集各种混乱的硬件噪声,从 CPU 温度波动到网络中断。
结论:爬虫经济学与无尽博弈
行为生物识别并没有成为对付机器人的灵丹妙药。不过,它从根本上改变了游戏规则以及自动化的经济性。
过去,构建一个成功的爬虫只需要购买一批 代理并了解浏览器请求头。如今,自动化开发者需要延伸到生物力学和傅里叶变换的专业知识。当然,这适用于大型项目,而不仅仅是从 Google Maps 抓取照片。
反欺诈系统与机器人开发者之间的军备竞赛仍在继续,但如今战场已经转向新的方向:模仿人类神经系统。反欺诈解决方案将继续引入越来越复杂的验证方法,而爬虫也会学会更加逼真地“呼吸”和拖延。
保持匿名,充分利用多账户功能,借助市面上最优质的反检测浏览器实现您的目标。
为什么 CAPTCHA 正在让位于行为分析
以前,CAPTCHA 是抵御机器人的主要防线。如今 CAPTCHA 依然存在,不过已经发生了巨大变化。它们变得更加复杂,而一些现代的无感版本(例如 reCAPTCHA v3)甚至已经融入了我们正在讨论的行为生物识别技术。
为什么需要这样做?传统 CAPTCHA(红绿灯和扭曲字符)会恶化用户体验,而且正越来越容易被训练好的神经网络轻松破解。新的方法无需可见元素,减轻了用户的大量负担,也避免了令人烦恼。

行为生物识别作为这一无感验证流程的核心,提供持续认证。它通过分析用户在滚动页面或填写表单时与设备的具体交互方式来工作,无需任何额外输入。
不过,需要澄清一点:行为生物识别并不作为独立的验证方法使用。它总是与 其他检查 配合工作。除了生物识别之外,反欺诈系统仍会分析数字指纹、IP 声誉和 cookie。
行为生物识别的类型
让我们进一步深入理论。行为模式本质上是你神经系统的数字指纹,被转移到设备上。高级反欺诈系统不会单独分析各个参数,而是构建一个全面的多维画像,并可分为以下几类:
设备交互(运动学)
这是传统网页和移动应用中数据量最大的一层。在这里,系统分析用户动作的物理特征。
键盘:它不是在看你输入了哪些字母或数字。反欺诈系统会评估两个主要参数:按住按键的时长(
dwell time)以及在按键之间移动所需的时间(flight time)。人类拥有肌肉记忆——熟悉的按键组合(例如常见的词尾)会以微小爆发的方式输入。而机器人则要么一次性注入整段字符串,要么用简单的time.sleep(random)逻辑模拟输入。这会形成平坦、不自然的延迟分布。随机性本身也会变得可疑。鼠标:光标分析。系统记录坐标并计算速度、加速度、轨迹曲率和突变。人类不会让鼠标沿着完全笔直的线移动。我们会朝按钮移动,偏离几个像素,做出微小的修正动作,并在点击前短暂停顿。

触摸屏:专用于移动网页和原生应用。人类的滑动是带有不均匀速度、特定压力(如果 API 允许检测压力)以及不断变化的手指接触面积的弧线。通过 Appium 或 JavaScript 脚本模拟触摸事件的机器人,往往只是简单地“传送”焦点坐标。编写能实现逼真滑动的正确数学模型要困难得多,因此机器人操作者常常会偷工减料。
物理模式(生物力学)
当用户从移动设备访问平台时,硬件传感器就会发挥作用。而既然我们如今生活在移动用户时代,这一点就非常重要。
行走模式与微动作。你是在走路时、坐在椅子上,还是躺在沙发上刷信息流?智能手机的加速度计和陀螺仪会持续捕捉设备的微小振动。真实用户的手机即使在他们努力保持不动时,也总会在手中轻微颤动。运行在服务器上的机器人农场和模拟器默认通常没有任何传感器背景噪声,这会让反欺诈系统多加思考并提高风险评分。
认知模式(交互心理学)
这是系统分析用户在与 UI 交互时大脑如何运作的地方。
导航与决策速度。 用户多快能找到所需按钮?他们在勾选复选框之前会先阅读文本吗?人们在阅读时经常让光标沿着文本移动,类似于用手指沿着书中的行线划过,或者在复杂表单前停顿。有些用户甚至会高亮文本。另一方面,爬虫脚本毫无疑虑——它对 DOM 结构了如指掌,并且总是在预设超时后精确触发所需事件,完全无视视觉搜索的逻辑。
这三层结合在一起,形成了如此复杂的画像,以至于仅仅在 Selenium 或 Puppeteer 代码中加入随机延迟,已经在数学上不可能完全复制。
数据收集与预处理
收集生物特征数据的主要来源是 mousemove、keydown、keyup、touchstart 和 touchend 事件,以及用于捕捉加速度计和陀螺仪读数的 DeviceOrientation API。
这一阶段最困难的部分是处理海量碎片化和异步数据。单个 mousemove 事件本身每秒就能触发数百次。如果每一次光标移动都直接触发后端处理,或者在客户端直接进行重计算,反欺诈系统会立刻冻结 UI,并让客户端网站出现明显卡顿。没有任何企业会接受这种情况。
这就是为什么客户端采集脚本会被设计得尽可能轻量且原始。它们的唯一任务是快速捕获坐标,附加精确时间戳,将一切存入本地缓冲区,并把数据批量发送到服务器。

这些 JSON 对象批次随后被传输到后端。在高负载系统中,它们不会直接写入数据库,也不会立即传递给 ML 模型。首先,它们会通过 Kafka 或 RabbitMQ 等消息代理进行路由。这样做是为了平滑流量峰值,例如大规模机器人攻击期间,或销售和促销活动期间真实用户自然激增时。到这一步,客户端的责任就结束了。
特征工程与 ML 模型
那么,原始批次已经到达服务器。接下来会发生什么?
如果你只是把这组像素数组直接喂给 ML 模型,它并不会学会区分人类和机器人。它只会记住你网站上按钮的位置,并在布局稍有变化时立刻失效。机器学习模型并不需要屏幕地理信息,它们需要的是行为抽象。
这就是为什么在消息队列和神经网络之间会有一个专门的微服务层,称为特征工程。这些通常是基于 Pandas 和 NumPy 构建的流水线,用于聚合日志并将其转换为适合 ML 模型的数据。它们计算:
点之间的欧几里得距离;
时间差;
瞬时速度;
轨迹转角。
基于这些计算,反欺诈系统构建出复杂的行为特征画像:
键盘:延迟向量(
dwell time和flight time),以及其中位数、方差和标准差。换句话说,就是输入节奏有多稳定。鼠标:速度和加速度的统计、微暂停次数,以及轨迹的谱熵。这个指标显示动作看起来是混乱的(像人类)还是数学上完美的(像脚本)。
触摸屏:在滑动过程中压力与接触面积变化的梯度(在浏览器或 OS API 共享此类数据的情况下)。
认知特征:
idle time以及在聚焦目标元素前的延迟。例如,在点击“支付”按钮之前,用户会先在心里再次确认金额,于是会停顿一下。
从单个会话中可以提取数百个这样的参数,剥离与布局相关的上下文后,再传递给 ML 模型。
经典 ML 算法(Random Forest、SVM、Gradient Boosting)
它们在聚合后的统计特征上表现极佳。运行速度快,消耗的服务器资源极少,通常作为第一道也是最快的一道防线。
本质上,它们会将整组会话统计向量(动作速度、时间方差、熵等)通过一套精心校准的数学阈值系统,立即筛除明显异常,例如光标加速度方差为零或点击间隔异常一致。
神经网络(LSTM、GRU 和 1D-CNN)
经典算法关注整体统计图景,而循环神经网络则会分析光标移动随时间变化的实际序列。
循环网络专为处理序列数据(文本、语音、时间序列)而设计,在这些数据中,前序元素的上下文很重要。与传统网络不同,循环架构通过反馈循环拥有“记忆”,因此能够利用前一步骤的信息。结果,它们可以检测出被普通统计平均所掩盖的不自然模式和节奏。
自编码器与异常检测
反欺诈系统面临的最大挑战是,机器人开发者会不断发明新的伪装技术。对每一种现有机器人都进行训练是不可能的,但真实人类产生的会话却有数百万个。这就是为什么无监督学习,尤其是自编码器,被广泛使用。
自编码器是一种仅用人类行为进行训练的神经网络。它像一个专门的过滤器:将会话参数作为输入,先在数学上将其压缩成紧凑表示,然后再尝试重建原始数据。
因为这种网络只见过真实的人类会话,它几乎完美地学会了人类动作的物理规律,并能近乎无瑕地重建这类数据。但如果将一个此前未见过的机器人——无论它多么复杂——输入模型,网络就会尝试用人类的压缩规则去处理它。结果,重建阶段会产生不准确的输出。
当原始数据与网络成功重建的数据之间存在很大差异时,这就会成为重建误差。误差越大,风险评分越高,表明行为异常。
单一方法检查与混合系统
仅依赖一种验证方式是无效的,因此没有人会使用单模型。在大多数情况下,架构会被设计成级联结构:轻量级 ML 算法可以立即筛除多达 90% 的简单脚本和机器人,而更重的神经网络只会在前面检查得到不确定结果的边缘案例中才被激活。这种方法显著降低了计算成本。
特征漂移与自适应
真实的人类行为会随着时间变化,就像他们设备的数字指纹一样。用户可能会买一只 DPI 设置不同的新鼠标,从台式机换到带触控板的笔记本,手部受伤,喝下一杯双份浓缩咖啡,或者仅仅在工作日结束时变得筋疲力尽。所有这些都会立刻改变他们的输入节奏、精细运动控制和反应速度。
如果反欺诈模型是静态的,并依赖于数年前收集的参考画像,它最终必然会开始拦截合法用户。误报率会升高,转化率会下降,企业会同时失去收入和客户忠诚度。
因此,反欺诈系统必须与用户一起持续演化,并适应不断变化的环境。
实时神经网络训练
与传统批量训练不同,后者是模型每月在庞大的累积数据集上重新训练一次,而在线学习允许算法实时持续调整其权重。一旦一个有效会话结束——例如通过购买或成功的 2FA 验证来确认——其特征就会稍微改变模型的决策阈值。这能完美地考虑到用户习惯的逐步变化。
滑动记忆窗口
算法还依赖滑动记忆窗口原则:新的会话数据会不断添加到参考行为画像中,并被赋予最高的数学权重。较旧的记录会逐渐失去影响,直到其贡献接近于零。系统始终将当前行为与用户在最近几周内的表现进行比较,而不是与账号创建多年前的那个时刻比较。
统计监控
但是,系统如何区分像购买新鼠标这样的合法变化,与复杂机器人突然进行的会话伪装呢?为此,会应用严格的统计监控,包括:
主成分分析(PCA)。该方法将数十个特征投影到二维或三维空间,并跟踪聚类漂移。如果新的会话突然偏离用户历史行为核心,系统就会检测到这种漂移。

统计检验(例如 Kolmogorov–Smirnov 检验)。 该算法会持续将新数据的分布与参考分布进行比较。如果检测到两个样本之间存在偏离,系统会暂时降低对该画像的信任。在这一阶段,用户不会被封禁,而是会被要求完成 CAPTCHA。如果验证成功通过,模型就会将这种偏差解释为合法变化——例如切换到新设备——并相应更新参考画像。
人类行为模拟
既然我们已经了解反欺诈算法的工作原理,接下来就来看看如何训练机器人表现得像人类。
仅仅用贝塞尔曲线平滑光标移动,或者添加 time.sleep() 调用,已经远远不够:ML 模型只需点击几次就能检测到自动化。要让模拟器真正像人类,就必须融入生理学和生物力学的规律。
抖动注入
如果你让脚本做出 80 到 120 毫秒之间的随机暂停,它会以大致相同的频率生成 80 ms、120 ms 和 95 ms 的延迟。
人类输入并不是这样的。我们每个人都有一个自然、舒适的节奏,大多数时候都会维持在这个节奏上。偶尔,我们的手指会稍微加快或减慢。这就是为什么延迟应该按照高斯分布(钟形曲线)生成。机器人暂停的绝大多数时间应聚集在单一基线速度附近,而只有少数偏差会在任一方向上明显不同。

颤动模拟
想象一下试图快速点击一个很小的复选框。你突然移动鼠标,越过目标几个像素,发现错误后再把光标拉回来。
为了模仿这种效果以及人类手部自然的抖动,开发者会将数学函数(正弦波和余弦波)混入理想的光标轨迹中。这样就会产生真实的微噪声,足以欺骗反欺诈系统。
宏暂停
最先进且很少实现的技术之一,是引入宏暂停来模拟生理周期。人类不会连续不断地坐在电脑前工作。我们会眨眼,暂时失去对屏幕的视觉接触;会呼吸;会低头看键盘;或者被手机分心。
因此,模拟器必须包含“失去专注”逻辑——在重要操作前周期性地引入 1–3 秒的人工延迟,打破机器般的单调感。
行为复制
既然你可以直接使用真实的滚动行为,为何还要从头编写复杂的数学模型来生成带有自然减速和微小顿挫的完美滚动动作呢?这种方法被称为混合,它将模拟提升到了全新的层次。
高级机器人开发者会自行构建数据库或购买现成的数据。这些数据集包含来自真实在线用户的会话:人们如何浏览信息流、在阅读文本时移动光标,或在思考时无意识地移动鼠标。这些记录被存储为包含运动向量和微观时间数据的数组。
当基于这项技术构建的脚本需要滚动页面或将光标移动到复杂表单时,它不会使用 window.scrollBy() 或贝塞尔曲线。相反,它会从数据库中检索一段合适的真实人类交互日志片段。然后对轨迹进行变形:脚本会在数学上扭曲这份“快照”,使其适配浏览器当前坐标。向量只会被移动到足以让光标最终停在所需按钮上方的程度,随后控制权便会无缝交还给机器人执行最后一次点击。
反欺诈 ML 模型会将这些动作视为完美的高频噪声、完全自然的颤动以及逼真的微暂停。因此,它们会允许脚本继续工作,因为底层数据确实源自真实人类。
陷阱是什么? 要让这种方法在大规模场景下奏效,机器人开发者需要一个真正庞大的行为“快照”库。如果同一段滚动片段被多个机器人重复使用,服务器端反欺诈系统会很快检测到数学上的重复副本(触发基本的重放攻击防护),并封禁整个机器人农场。
循环的脆弱性
无论你如何随机化时序和抖动光标,每个机器人都有一个与生俱来的弱点:它生活在一个程序循环里(while 或 for)。
防护系统会拿你的脚本时序进行谱分析(傅里叶变换)。这会过滤掉人为的随机噪声,并揭示循环隐藏的载波频率。人类天生没有固定节律;机器人则不然。
你能否击败傅里叶分析,让服务器相信你的脚本是一个具有生命、且没有可检测基频的人类?可以,但这需要你重写爬虫的整个架构。单靠一个 Math.random() 远远不够。
放弃循环,改用状态机。 不要使用线性的
while或for循环再配合嵌套的sleep()调用。你的机器人应该作为一个由事件驱动的有限状态机运行。它应当包含多个状态,例如阅读、犹豫或空闲、移动、点击。这些状态之间的转换不应被死板地硬编码,而应通过概率决定。只有这样,会话的整体节奏才会变得不可预测,像一个人在点击按钮前突然改变主意一样。“重尾”的数学。 忘掉均匀随机,甚至忘掉高斯分布。你的大多数暂停应当短而密集,但机器人也应当偶尔以某种概率停止异常长的时间。这些罕见但极端的离群值,正是打乱傅里叶频率分析、抹平频谱并隐藏机器节奏的关键。
使用操作系统熵。 JavaScript 或 Python 内置的伪随机数生成器本身也有可预测的模式。相反,你可以直接从操作系统获取真正的熵,操作系统会收集各种混乱的硬件噪声,从 CPU 温度波动到网络中断。
结论:爬虫经济学与无尽博弈
行为生物识别并没有成为对付机器人的灵丹妙药。不过,它从根本上改变了游戏规则以及自动化的经济性。
过去,构建一个成功的爬虫只需要购买一批 代理并了解浏览器请求头。如今,自动化开发者需要延伸到生物力学和傅里叶变换的专业知识。当然,这适用于大型项目,而不仅仅是从 Google Maps 抓取照片。
反欺诈系统与机器人开发者之间的军备竞赛仍在继续,但如今战场已经转向新的方向:模仿人类神经系统。反欺诈解决方案将继续引入越来越复杂的验证方法,而爬虫也会学会更加逼真地“呼吸”和拖延。
随时获取最新的Octo Browser新闻
通过点击按钮,您同意我们的 隐私政策。
随时获取最新的Octo Browser新闻
通过点击按钮,您同意我们的 隐私政策。
随时获取最新的Octo Browser新闻
通过点击按钮,您同意我们的 隐私政策。
