ITRITON-CAPTCHA
20年前,24岁的计算机天才路易斯·冯·安(Luis von Ahn)在卡内基梅隆大学研究程序机器人的工作原理时,首次提出了CAPTCHA(验证码)这样一个程序概念。验证码(CAPTCHA)的全称是“Completely Automated Public Turing test to tell Computers andHumans Apart”,即全自动区分计算机和人类的图灵测试。意在用户进行操作之前,通过向请求的发起方提出问题,将伪装成人类的程序机器人从正常用户中”抓“出来。而这基于一个重要的假设:提出的问题时容易被人类解答,而机器无法解答的。彼时,计算机技术虽已有较大突破,但路易斯发现机器若要识别扭曲的图形,仍是一个巨大的挑战,而人类却可以用肉眼很轻易地读出图片里的信息。此后,路易斯在导师布鲁姆的协助下设计出一个程序。这个程序首先产生了一组随机的字符串,其次再对这串字符进行随机的扭曲、重叠以及污染,最后显示给正在进行操作的用户。一旦能够识别这个变形了的字符串,就可判断为人类。由此,验证码诞生,并成为辨别机器与人的一种有效方式。伴随信息技术的蓬勃发展,验证码的作用愈发显著,它可以防止恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试等。然而当网络信息安全性要求越来越高,传统的图形及数字验证码已经不能满足人们的安全需求,为了保证服务器稳定,各类产品负责人们亟待程序员们开发出各类创新互动的验证方式。
介绍
生成滑动验证码拼图图片和背景图片
安装
npm i @itriton/captcha
使用方法
const captcha = require('@itriton/captcha')
// 默认(promise)
captcha.create().then(res=>{
console.log(res)
})
// 自定义参数(promise)
captcha.create(options).then(res=>{
console.log(res)
})
// 默认(async/await)
async function captcha(){
const result = await captcha.create()
}
// 自定义参数(async/await)
async function captcha(){
const result = await captcha.create(options)
}
参数
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
size | Number | 30 | 默认拼图大小 |
width | Number | 270 | 图片宽度(px) |
height | Number | 144 | 图片高度(px) |
url | String | - | 图片路径(支持在线地址) |
返回值
属性名 | 类型 | 说明 |
---|---|---|
backgroundImage | Base64 | 背景图片 |
jigsawImage | Base64 | 拼图图片 |
x | Number | x轴距离 |
安装sharp失败的解决方案
切换成淘宝镜像再执行npm install sharp
命令
npm config set sharp_binary_host "https://npm.taobao.org/mirrors/sharp"
npm config set sharp_libvips_binary_host "https://npm.taobao.org/mirrors/sharp-libvips"
npm install sharp
效果图
结合 @itriton/uniapp 组件库的 行为验证(captcha)组件的实际效果
其他开源项目
ibaleine-weapp
基于原生小程序框架的小程序商城
@itriton/uniapp
@itriton/uniapp,是基于uni-app生态开发的组件库