srtp 前后端部分
基于浏览器指纹以及鼠标轨迹识别的无感知验证码
运行
- git clone
- npm install
- npm run dev
运行逻辑
- 用户移动鼠标到checkbox,点击checkbox
- 后端根据以下数据判断访问用户风险等级
- 浏览器指纹
- 鼠标轨迹
- 如果判断为有风险,弹出图片&语音验证码的modal,如果没有风险,直接通过
更新日志
3.25
- 鼠标轨迹&时间戳捕捉
- 浏览器指纹生成
- 后端逻辑代码
- 高频请求ban
- 执行本地python模型
4.12
- 接上了后端python模型
- 美化了验证码样式
4.21
- 增加了点击图片验证码
4.22
- 完善了判断逻辑
4.24
- 增加了浏览器环境风险因素检测
- webgl 浏览器类型 & user agent浏览器类型 & platform浏览器类型
- webdriver
- plugins
4.25
- 增加了对于接收到的风险因素的综合判断
TODO
- 自定义浏览器指纹
接入后端python模型图片&语音验证码细化完善
根据浏览器环境判断访问风险后端模型似乎还有一点问题(基本上都是pass)完善判断逻辑根据获得的风险因素,判断访问者的风险- 识别准确率的测试
- 测试从LSTM -> XGBoost -> 数据增广后的XGBoost的识别准确率的变化(鼠标轨迹部分)
- 测试图片语音验证码的识别准确率
踩坑记录
- js里对于对象的遍历不是顺序的
- 事件冒泡问题
- 记得给每个element加key
- 使用useReducer代替useState
- 对于一些response可以考虑常量硬编码
- 硬编码的时候注意作用域!!!
- nextResponse声明在最顶层后,多次请求api会造成readable stream lock的错误,推测是由于每次请求返回的都是相同的nextResponse导致的