1.png
- 距离上一次的旋转行为验证开发过去十天了
- 我在昨天凌晨一点正式的上线了无感验证
- 效果
2.png
- 前言
- 之前的旋转验证码要求滑动操作,整个过程不仅繁琐,还可能因用户操作失误导致验证失败,增加重复验证的时间成本
- 在五月八号晚上十一点时,Kissablecho博主向我发送一封邮件,其中就包含关于验证码的问题
- 我查看后发现其实是js的问题,但也是导致了无法过验证的问题,其实当时我就已经在进行开发无感验证了
- 所以也就没有修复关于这个js错误的问题,因为开发无感验证后,js文件也会进行更新
- 并且我之前可以开发好了旋转验证码,所以正在进行模型的调整,也正巧碰上有人评论导致验证失败
- 需要特别说明的是:本文所提到的行为验证
- 主要是指现在市面上广泛使用的各类图形验证码:滑块拼图、文字点选、图标点选、语序点选、空间推理等
- 相关
- 上一篇文章中说到了OCR(光学字符识别)技术能快速破解简单的文本验证码
- 然后有人跟我说如果不是图片验证码的加减乘除呢?
- 哦我的老天爷,那不是更加简单了🙄,然后他还不信,好吧好吧,我们这直接使用js写一个简单的
- 案例
- 页面是这样子的
3.png
- 查看结构
4.png
- 验证
- 过验证的方法,有两种方法
- 第一种直接获取code1跟code2的值,通过span中的连接符号来判断是做什么运算
- 第二中直接获取span中的数字值以及连接符号通过来进行运算
- 后面将得到的值填写到code中,当然这是自动化的流程
- 一般来说得到验证码的值后直接就向接口提交数据了
- 这里我直接简单实现加法的验证码填充
5.png
document.addEventListener('DOMContentLoaded', function() { // 获取相关元素 const formItem = document.querySelector('.comment-form-item.c-code'); const codeInput = formItem.querySelector('input[name="code"]'); const code1Input = formItem.querySelector('input[name="code1"]'); const code2Input = formItem.querySelector('input[name="code2"]'); // 计算并填充验证码 if (code1Input && code2Input) { const num1 = parseInt(code1Input.value) || 0; const num2 = parseInt(code2Input.value) || 0; codeInput.value = num1 + num2; } });
- 发现正常的运算出来并且填充了
6.png
- 所以还在说什么不是图片的验证码就不会破解了好吧,明显更加的简单了吧😒
- 优势
- 便捷
- 无感验证码通过对用户行为数据的智能分析
- 在用户正常浏览或操作网页、应用的过程中
- 点击自动完成验证,整个验证过程完全无感
- 大大提升了操作的流畅性和便捷性,有效降低了因验证码环节造成的用户流失率
- 高效
- 旋转验证码容易出现验证延迟或卡顿现象,不需要再进行交给用户进行旋转
- 可以快速的完成验证,更加快的进行响应,而不用渲染出重量组件
- 后期
- 在保证一定安全性的前提下,要确保正常用户能够顺利通过验证码验证
- 如果验证码的难度过高,导致正常用户的验证成功率过低,会影响用户体验
- 密切关注用户验证失败的比例。若失败率突然上升,可能是验证码难度过高或者遭受了攻击
- 后期会建立实时监测系统,对验证码系统的运行状态和安全状况进行实时监测
- 全面评估决策树在不同阈值下对正常和异常行为的分类能力
- 我会对一段时间内的验证数据进行趋势分析,观察误判率、验证时间等指标的变化趋势
- 评估决策树孤立森林模型因阈值动态调整而需要更新的频率
- 通过这些指标来更新模型配置,以保证有较好的长期稳定性
- 验证
- 为了防止熊孩子可能该文章查看该验证思路进行破解,目前只介绍以下几个我运用验证方法
- 行为熵值分析
- 计算轨迹复杂度熵值,机器模拟轨迹通常具有较低的熵
- 生物力学特征
- 提取加速度变化中的人体肌肉控制特征(如阻尼效应)
- 微交互模式
- 分析鼠标悬停、滚动、文本选择等辅助行为的关联性
- 复合运动模式
- 移动端模式识别加速/减速模式,周期性摆动模式,匀速直线运动,周期性摆动模式等验证
- 物理一致性
- 在移动端添加验证加速度数据与方向数据的物理一致性
- 计算理论重力分量与实际测量值的偏差
- 检测是否存在违反物理定律的突变
- 检查是否存在不可能的运动轨迹
- 行为模式
- 验证采样频率是否在合理范围内
- 识别常见的手持设备运动模式(如摇晃、倾斜)
- 分析运动的平滑性和连续性
- 伪造数据可能缺乏自然运动的流畅性
- 例如:滚动操作应伴随自然的手部晃动
- 风险对抗
- 根据环境风险指数动态调整验证阈值,同时运行轻量级验证器和深度神经网络验证器
- 即双重验证通道,并在验证流程中引入量子随机性增强抗攻击性
- 目前也是使用了风险评估引擎进行推测是否为机器人,通过综合评分进行评判是否允许通过验证
- 使用GAN生成对抗性轨迹训练模型,通过梯度掩码技术,提高鲁棒性以进行对抗样本训练
- 安全
- 如果错误提示的问题过于关键,虽然用户可以知道是因为什么问题导致的
- 也会引发安全问题,熊孩子可以通过该问题知道是因为什么拦截原因而进行更改
- 所以我也是随机的输出错误信息,某些大厂也是如此
7.png
8.png
- 当然这个世界上没有绝对的安全
- 攻击者通过恶意软件获取用户设备的唯一标识、操作习惯等数据
- 模拟正常用户行为,从而也绕过无感验证码的检测
- 学习
9.jpg
10.png
- 开发行为验证码让我认识了很多算法,也是补充了我对于算法的不足
- 比如统计特征,欧几里得距离,魏尔斯特拉斯
- 二项式系数,贝塞尔曲线,生物力学特征(肌肉阻尼效应)
- 熵值,傅里叶变换,时序分析,孤立森林,物理一致性,决策树,混淆矩阵等
- 对于开发者而言,掌握机器学习思维(如从数据中挖掘规律、用模型替代部分逻辑)可大幅拓展程序的功能边界
- 其他
- 性能
11.png
- 在验证运行过程中,内存消耗过大,之前是控制在512M,现在验证一次需要消耗大概1G的内存
- 发现越来越厉害消耗内存,总不能一直加内存吧
- 但是如果没有足够的内存来完整地保存和处理数据,可能会导致部分数据丢失或出现错误
- 随着时间推移,会逐渐拖垮整个集群系统,导致所有服务无法正常运行
- 所以我现在已经限制死了内存为1G,虽然我的内存目前还是很多
12.png
- 模型
- 如果你查看我网站更新2025-05-13的更新记录也会知道
- 我所生成的全部数据,都是使用自己模拟出来的一些异常数据
13.png
- 因为目前的数据量太少了,还无法做出完全正确的推测
- 可能会导致一些正常的用户无法通过验证
- 结语
- 在互联网快速发展的时代,验证码作为网络安全的一道重要防线,始终在不断演进
- 从早期的文本验证码,到后来的图形验证码、滑动验证码,每一次变革都旨在提升安全性和用户体验
- 无感验证码的出现,更是将验证码技术推向了新的高度
- 在用户几乎毫无察觉的情况下完成验证,展现出多方面的显著优势
【我开发了新一代的无感验证】
qaq卟言
闲聊
完结
回复给❌取消回复
自动补充