滑块式验证码

用户通过拖动滑块行为来完成校验,支持PC端及移动端。可以将用户拖动行为的时间、精度,滑动轨迹等信息到服务器,然后进行后台算法验证。

特别介绍

Blazor 版本的滑块验证码 传送门

在线演示

效果图

快速开始

组件依赖 font-awesome

CSS

将引入样式表的 标签复制并粘贴到

中,并放在所有其他样式表之前。

JS

将引入脚本的

用法

添加网页Html元素

API

通过 javascript 初始化控件

sliderCaptcha({

id: 'captcha'

});

Options

可以根据自己需要设置宽度与高度等配置

sliderCaptcha({

id: 'captcha',

width: 280,

height: 150,

sliderL: 42,

sliderR: 9,

offset: 5,

loadingText: '正在加载中...',

failedText: '再试一次',

barText: '向右滑动填充拼图',

repeatIcon: 'fa fa-redo',

setSrc: function () {

},

onSuccess: function () {

},

onFail: function () {

},

onRefresh: function () {

}

});

名称

类型

默认值

说明

width

integer

280

背景图片宽度

height

integer

150

背景图标高度

sliderL

integer

42

拼图宽度

sliderR

integer

9

拼图突出半径

offset

integer

5

验证容错偏差值 默认5个像素偏差即认为验证通过

loadingText

string

"正在加载中..."

图片加载时显示的文本信息

failedText

string

"再试一次"

验证失败时显示的文本信息

barText

integer

"向右滑动填充拼图"

拖动滑块准备拖动时显示的文本信息

repeatIcon

string

"fa fa-redo"

重新加载图标 需引用 font-awesome

onSuccess

function

null

验证通过时回调此函数

onFail

function

null

验证失败时回调此函数

onRefresh

function

null

点击重新加载图标时回调此函数

localImages

function

function () { return 'images/Pic' + Math.round(Math.random() * 4) + '.jpg'; }

图床图片加载失败时调用此方法返回本地图片路径

remoteUrl

string

null

服务器端验证请求地址,请求方式默认为 post 方式

verify

function

function (arr, url) { return true; }

服务器端验证方法 arr 为客户端拖动滑块轨迹,url 为服务器端请求地址,返回值为布尔值

方法

var captcha = sliderCaptcha({

id: 'captcha'

});

captcha.reset();

Method

Example

Description

reset

captcha.reset()

重置控件

事件

Issue

请前往 Issue 页面添加问题

服务器端认证

客户端代码示例

1. JavaScript

控件配置信息中有 remoteUrl 和 verify 两个配置项,合理正确的设置这两个配置项即可达到想要的服务器端认证逻辑

remoteUrl 默认值为 null 表示未启用服务器端认证方式,设置请求的 webapi 地址后启用服务器端认证方法

控件默认请求服务器端方法如下,可适当进行更改

verify: function (arr, url) {

var ret = false;

$.ajax({

url: url,

data: JSON.stringify(arr),

async: false,

cache: false,

type: 'POST',

contentType: 'application/json',

dataType: 'json',

success: function (result) {

ret = result;

}

});

return ret;

}

参数

类型

默认值

说明

arr

array

object

客户端拖动滑块轨迹数组

url

string

remoteUrl

配置项中的 remoteUrl 参数值

完整示例代码

sliderCaptcha({

id: 'captcha',

repeatIcon: 'fa fa-redo',

setSrc: function () {

return 'https://imgs.blazor.zone/images/Pic' + Math.round(Math.random() * 136) + '.jpg';

},

onSuccess: function () {

window.location.href = 'https://gitee.com/LongbowEnterprise/SliderCaptcha';

},

remoteUrl: "api/Captcha"

});

服务器端代码示例

1. NETCore WebApi

///

/// 滑块服务器端验证方法

///

[Route("api/[controller]")]

[ApiController]

[AllowAnonymous]

public class CaptchaController : ControllerBase

{

///

/// 服务器端滑块验证方法

///

///

[HttpPost]

public bool Post([FromBody]List datas)

{

var sum = datas.Sum();

var avg = sum * 1.0 / datas.Count;

var stddev = datas.Select(v => Math.Pow(v - avg, 2)).Sum() / datas.Count;

return stddev != 0;

}

}

2. JAVA SpringBoot

可能会存在精度问题,采用BigDecimal计算即可

@RestController

@RequestMapping("/sliderCaptcha")

public class SliderCaptchaController {

@PostMapping("/isVerify")

public boolean isVerify(List datas) {

int sum = 0;

for (Integer data : datas) {

sum += data;

}

double avg = sum * 1.0 / datas.size();

double sum2 = 0.0;

for (Integer data : datas) {

sum2 += Math.pow(data - avg, 2);

}

double stddev = sum2 / datas.size();

return stddev != 0;

}

}

常见问题

服务端验证的返回结果怎么一直都是true

示例代码中演示的是前端提交用户滑动轨迹到服务器端进行了 Y 轴的平方差校验,为零时才返回 false,否则返回 true,为 true 表示 Y 轴有偏移,简单的认为此操作是人为操作,因为人手拖动过程中的抖动 Y 轴理论上是不可能没有偏移的。因此依据此值进行是否是人为拖动滑块。

参与贡献

Fork 本项目

新建 Feat_xxx 分支

提交代码

新建 Pull Request

angularjs 滑块验证码 移动端_SliderCaptcha相关推荐

  1. 使用opencv破解滑块验证码:以今日头条PC端登录页面滑块验证码为例

    本文目标人群:python爬虫工程师 一.首先看看破解的效果图 二.滑块验证码的破解 滑块验证码的破解的难点主要有两个:计算出滑块到缺口的距离和模拟人拖动滑块的轨迹. 如何计算出滑块到缺口的距离?从网 ...

  2. 网易易盾验证码移动端迎来新版本 开始支持智能无感知验证

    近日,网易易盾验证码移动端迎来新版本,该版本支持智能无感知验证码,对整体交互及性能等方面进行了优化和提升. 移动端智能无感知验证码交互流程图 验证码移动端最新版本开始支持智能无感知验证码,极致用户体验 ...

  3. 前后端滑块验证码实例附源码(java jquery)

    背景: 发送短信验证码或者登录等场景操作之前都需要进行图片验证码校验或者滑块验证码校验:此举是为了减少黑盒对服务端进行暴力破解密码或者频发短信轰炸请求的操作: 但如果滑块验证完全由前端进行操作,实际上 ...

  4. 【Lilishop商城】No3-2.模块详细设计,系统设置(系统配置、行政区划、物流公司、滑块验证码图片、敏感词过滤)的详细设计

     仅涉及后端,全部目录看顶部专栏,代码.文档.接口路径在: [Lilishop商城]记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇会结合业务介绍重点设计逻辑,其中重点包括接 ...

  5. Python Selenium破解滑块验证码最新版!

    通过率高达百分之95!真的强! 一.滑块验证码简述 有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展.而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号, ...

  6. selenium破解滑块验证码自动查询+获取后续表单数据

    一.装载好chromedriver之后,运行命令行 "chrome.exe"(路径) --remote-debugging-port=9222 打开谷歌浏览器. 二.使用selen ...

  7. 图片滑块验证码的解决

    其他的不多说,直奔主题: 本次是以微信注册中所遇到滑块验证码为例,主要的目的就是让脚本实现自动识别阴影部分的位置,然后计算出距离拖动滑块完成验证操作 想要从1处滑动到2处,就需要知道1处和2处的中间点 ...

  8. 麻瓜回归!零代码,零基础,全网最傻瓜式的滑块验证码识别训练框架

    最新更新 07/31/22 修复了系统用户名和路径名包含中文时授权失败的情况 新增了pytorch环境完整性检查(不少用户首次启动安装环境过慢就以为卡死关掉了导致torch运行时不完整) 近几年,滑块 ...

  9. 小小滑块可笑可笑-安卓滑块验证码通杀方案研究(2)

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论回复. 原文链接 小小滑块可笑可笑-安卓滑块验证码通杀方案研究2直接点击即可 ...

最新文章

  1. R语言vtreat包自动处理dataframe的缺失值并生成对应的数据列_isbad来指示数据的原始缺失情况、查看特定字段缺失的那些数据行、查看数据集中多个字段的均值
  2. OSError: Could not find kaggle.json
  3. 光纤收发器的选购原则介绍
  4. JDK 7-JDK 21:Oracle Java SE 支持路线图/Oracle Java SE Support Roadmap 持续更新
  5. 加载resnet18的代码
  6. 错误:[IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 解决方法_QT
  7. 油田智能化远程监控系统_油田远程无线监控系统
  8. JavaWeb项目打包上线简单流程
  9. caesar java_java实现caesar加解密算法
  10. 谷歌浏览器崩溃设置崩溃_让它崩溃
  11. win10 子系统之 Ubuntu,解放你的生产力
  12. C中kbhit()和getch()以及gets()和getchar()的用法
  13. Android 5.x浏览器webView或者qqX5崩溃,Resources$NotFoundException:String resource ID #0x2040003
  14. html的3d效果怎么设置,HTML5如何在网页中实现3D效果?
  15. 强制隐藏windows任务栏(使用快捷键才弹出)(hide the taskbar in win10)
  16. ubuntu 下安装flash player
  17. 解读符合新时代主流的创客教育模式
  18. 视频处理入门 | 六
  19. RuoYi-Vue 分离版 收获与总结
  20. WPF ListBox等ItemsControl交替(Alternation)变化效果

热门文章

  1. 解剖JavaScript中的null和undefined
  2. linux的三个时间
  3. Ubuntu 中的 dpkg 安装deb、删除deb、显示已安装包列表、解压deb文件、显示deb包内文件列表、配置deb软件包
  4. 给View 添加手势,点击无反应 如何给View添加点击事件,手势方法
  5. NBUT 1457 Sona(莫队算法+离散化)
  6. skiplist 跳表(1)
  7. 牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...
  8. C# 运算符的优先级
  9. xp下安装sqlserver 2000的解决方案
  10. python分类算法_用Python实现KNN分类算法