图形验证码验证行式的笔记

简介: 最近在做关于验证码项目的时候,从交互的角度梳理了验证码的验证行式,今天总结一下验证码在产品中出现的验证行式。

背景

最近在做关于验证码项目的时候,从交互的角度梳理了验证码的验证行式,今天总结一下验证码在产品中出现的验证行式。


验证行式

图形验证码通过用户的操作来完成验证,常见的验证行式有嵌入式、触发式、弹窗式。

3.PNG

嵌入式

验证码直接完整嵌入网页,清晰直观,便于用户使用和广告宣传。

下面是前端调用代码:

<scriptsrc="https://cdn8.kgcaptcha.com/captcha.js?appid=94dATYQa"></script><script>kg.captcha({
// 绑定元素,验证框显示区域bind: "#captchaBox",
// 验证成功事务处理success: function(e) {
console.log(e);
    },
// 验证失败事务处理failure: function(e) {
console.log(e);
    },
// 点击刷新按钮时触发refresh: function(e) {
console.log(e);
    }
});
</script><divid="captchaBox">载入中 ...</div>


触发式

默认只显示滑动条,鼠标悬停互动显示验证图片,广泛用于任何场景,不影响网站的排版和美观。

鼠标悬停显示验证码:

/*触发式*/if(kgConfig["type"] ===2){
/*点击区域外隐藏伸缩框*/document.addEventListener("mousedown", function(e){
varstr=e.target.childNodes;
if(e.target.id){
outside=e.target.id!=="KgBasemap";
        } else {
varoutside=true;  /*是否为外部点击*/for (vari=0; i<str.length; i++) {
if (str[i].id==="KgBasemap") {
outside=false;
                }
            }
if (str.length===0){
outside=false;
            }
        }
if (outside) {
/*隐藏拼图区域*/kg.show(kg.$(param["bind"] +" #KgBasemap"), 0);
        }
    });
}
/*触发式(向上/)显示拼图区域*/if(kgConfig["type"] ===2){
if (param["float"] ==="down"){
kg.$(param["bind"] +" #KgBasemap").className="KgBasemapDown";
    }
kg.show(kg.$(param["bind"] +" #KgBasemap"), 1);
}


弹窗式

默认不显示验证码,点击提交、确定、发送等触发验证。体验相对来说会更加友好,适用场景也更广泛。

创建弹窗并显示/隐藏:

/*弹出式拼图*/if(kgConfig["type"] ===3){
varpopupButton=kg.default(param["button"], "#captchaButton");  /*弹出式按钮id*/param["bind"] =kg.popupAddId;  /*创建新弹窗ID*//*刷新时,删除上次创建的弹出窗口DIV,重新创建*/if(kg.$(param["bind"])){kg.$(param["bind"]).parentNode.removeChild(kg.$(param["bind"]));}
/*在Button前创建一个DIV并输出弹窗模板*/varadd_div=document.createElement("div");
add_div.id=kg.popupAddId.substring(1);  /*去除# */add_div.innerHTML=kgConfig["styleTpl"];
/*创建弹窗*//*1、body开始创建*/kg.$("body").insertBefore(add_div, kg.$("body").childNodes[0]);
/*2、当前按钮前创建kg.$(popupButton).parentNode.insertBefore(add_div, kg.$(popupButton)); *//*弹出事件绑定*/kg.$(popupButton).onclick=function(e){
popup(1);
    }
/*关闭按钮事件绑定*/kg.$(param["bind"] +" #KgPuzzleTitle ol:nth-child(2) img").onclick=function(e){
popup(0);
    }
kg.$(param["bind"] +" #KgPuzzleBody").onclick=function(e){
popup(0);
    }
}
/*设置元素为显示/隐藏状态,获取元素显示/隐藏状态*//*target: 需要设置/获取的元素对象,kg.$("#div"); *//*state: [0|1] 0设置为隐藏状态、1设置为显示状态、忽略该参数为获取display状态*/show: function (target, state) {
if (state===undefined) {
returntarget.style.display;
    } else {
if (state===0) {
target.style.display="none";
        } else {
target.style.display="block";
        }
    }
}


总结

以上就是文章的全部内容,下面附上示例代码一份:https://github.com/KgCaptcha,和示例体验地址:https://www.kgcaptcha.com/demo/2023年在这新的一年里,加油吧!

相关文章
|
5天前
|
自然语言处理 网络安全 C#
C# 生成图形验证码
C# 生成图形验证码
|
2月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
59 0
|
3月前
如何用二维码高效收集信息?表单功能轻松实现
表单作为草料二维码的高级功能之一,可用于收集格式统一的数据。你可以通过组合姓名、图片、检查项等组件搭建出电子表单,关联到二维码中,扫码填写表单即可更快速、规范的收集数据。这篇文章为大家介绍下表单的制作教程。
|
9月前
|
数据采集 算法 开发者
如何使用Python爬虫处理多种类型的滑动验证码
如何使用Python爬虫处理多种类型的滑动验证码
|
9月前
|
存储 资源调度 前端开发
[Nestjs] 实现生成图形验证码以及校验过程
要在 NestJS 中实现图形验证码的校验过程,你可以按照以下步骤进行操作: 1. 安装依赖:首先,使用 npm 或 yarn 安装 svg-captcha 和 cookie-parser,其中 svg-captcha 是用于生成 SVG 格式的验证码图片的库,cookie-parser 是用于处理和解析 Cookie 的库。
345 0
KgCaptcha 图形验证码自定义验证行式
图形验证码是一种很常见的行为验证码,其中滑动拼图,用户只需要轻轻滑动滑块填充拼图,即可完成安全验证。通常包括嵌入式、触发式和弹出式三种形式。
KgCaptcha 图形验证码自定义验证行式
|
前端开发
图形验证码
图形验证码,防止恶意攻击者采用恶意工具批量注册账号或大量频繁调用某些请求,给服务器造成压力,占用大量的系统资源。本文介绍如何实现图形验证码?
图形验证码
|
数据安全/隐私保护
一个页面多个图形验证码冲突的解决方案
实际开发中,经常会遇到一个页面需要两个或多个验证码,使用同一个验证码调用两次会导致前一个失效。那么我们需要使用两个不同的验证码.
一个页面多个图形验证码冲突的解决方案
|
搜索推荐 前端开发 API
这个验证码合集,从图形到行为验证,你想要的都有-KgCaptcha
凯格行为验证码 - KgCaptcha,采用业界通用的API接口方式,对接轻松简单,即可享受带来的产品服务能力。自定义样式及风控等级,完全个性化的设置,与你的应用完美融合。
这个验证码合集,从图形到行为验证,你想要的都有-KgCaptcha
|
Java 开发工具
使用Java实现图形验证码,原来还可以这样!
Java图形验证码,支持自定义图片、中文、算术等类型,可用于Java Web、JavaSE等项目。真香
使用Java实现图形验证码,原来还可以这样!