【记】滑动拼图验证码在搜索中的作用

简介: 验证码应用于我们生活、工作的方方面面,比如注册登录账号、支付订单、修改密码等。下面我是在一次项目中利用滑动拼图验证码和搜索功能“合作共赢”的记录。

开头

验证码应用于我们生活、工作的方方面面,比如注册登录账号、支付订单、修改密码等。下面我是在一次项目中利用滑动拼图验证码和搜索功能“合作共赢”的记录。


验证码展示

1.PNG


具体实现

前端代码

// 引入js
<scriptsrc="captcha.js?appid=XXX"></script><script>kg.captcha({
// 绑定弹窗按钮button: "#captchaButton",
// 验证成功事务处理success: function (e) {
// 验证成功,直接提交表单// form1.submit();console.log(e);
    },
// 验证失败事务处理failure: function (e) {
console.log(e);
    },
// 点击刷新按钮时触发refresh: function (e) {
console.log(e);
    }
});
</script><aid="captchaButton"></a>

验证结果说明

2.PNG

字段名

数据类型

描述

code

number

返回code信息

msg

string

验证结果信息

rid

number

用户的验证码应用id

sense

number

是否开启无感验证,0-关闭,1-开启

token

string

验证成功才有:token

weight

number

错误严重性,0正常错误,可以继续操作,1一般错误,刷新/重新加载拼图,2严重错误,错误次数过多拒绝访问


Python代码

fromwsgiref.simple_serverimportmake_serverfromKgCaptchaSDKimportKgCaptchadefstart(environ, response):
# 填写你的 AppId,在应用管理中获取AppID="AppId"# 填写你的 AppSecret,在应用管理中获取AppSecret="AppSecret"request=KgCaptcha(AppID, AppSecret)
# 填写应用服务域名,在应用管理中获取request.appCdn="https://cdn.kgcaptcha.com"# 请求超时时间,秒request.connectTimeout=10# 用户id/登录名/手机号等信息,当安全策略中的防控等级为3时必须填写request.userId="kgCaptchaDemo"# 使用其它 WEB 框架时请删除 request.parse,使用框架提供的方法获取以下相关参数parseEnviron=request.parse(environ)
# 前端验证成功后颁发的 token,有效期为两分钟request.token=parseEnviron["post"].get("kgCaptchaToken", "")  # 前端 _POST["kgCaptchaToken"]# 客户端IP地址request.clientIp=parseEnviron["ip"]
# 客户端浏览器信息request.clientBrowser=parseEnviron["browser"]
# 来路域名request.domain=parseEnviron["domain"]
# 发送请求requestResult=request.sendRequest()
ifrequestResult.code==0:
# 验证通过逻辑处理html="验证通过"else:
# 验证失败逻辑处理html=f"{requestResult.msg} - {requestResult.code}"response("200 OK", [("Content-type", "text/html; charset=utf-8")])
return [bytes(str(html), encoding="utf-8")]
httpd=make_server("0.0.0.0", 8088, start)  # 设置调试端口  http://localhost:8088/httpd.serve_forever()


最后

SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo

相关文章
|
数据采集 前端开发 开发者
滑动拼图验证码的原理和破解方法~
滑动拼图验证码的原理和破解方法~
3353 0
滑动拼图验证码的原理和破解方法~
|
缓存 前端开发 Serverless
Vercel 部署 Node 服务
Vercel 部署 Node 服务
1835 0
Vercel 部署 Node 服务
|
JavaScript API
JS如何模拟鼠标点击X,Y坐标
现在我有个窗口坐标X,Y. 如何利用JS点击该坐标? document.body.onclick = function(){ e = arguments[0]; var dt = e.
2677 0
|
前端开发 API Python
WebSocket技术详解:如何在Python Web应用中实现无缝实时通信
在Web开发的广阔领域中,实时通信已成为许多应用的核心需求。传统的HTTP请求-响应模型在实时性方面存在明显不足,而WebSocket作为一种在单个长连接上进行全双工通信的协议,为Web应用的实时通信提供了强有力的支持。本文将深入探讨WebSocket技术,并通过一个Python Web应用的案例分析,展示如何在Python中利用WebSocket实现无缝实时通信。
278 2
|
安全 网络安全
SSH——云服务器SSH经常断开如何处理
SSH——云服务器SSH经常断开如何处理
564 0
|
Dubbo 网络协议 Cloud Native
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
15372 77
如何用一个端口同时暴露 HTTP1/2、gRPC、Dubbo 协议?
|
C++
gRPC 四模式之 服务器端流RPC模式
gRPC 四模式之 服务器端流RPC模式
305 0
|
敏捷开发 监控 测试技术
软件架构的艺术:探索演化之路上的18大黄金原则
实际工作表明,一步到位的设计往往不切实际,而演化原则指导我们逐步优化架构,以灵活响应业务和技术的变化。这不仅降低了技术债务和重构风险,还确保了软件的稳定性和可扩展性。同时,架构的持续演进促进了团队协作,激发了成员间的知识共享与技能提升。
244 0
软件架构的艺术:探索演化之路上的18大黄金原则
|
传感器 安全 物联网
ABB GVC736BE101 3BHE019719R0101 被用于为无线传感器网络中供电
ABB GVC736BE101 3BHE019719R0101 被用于为无线传感器网络中供电
229 0
ABB GVC736BE101  3BHE019719R0101 被用于为无线传感器网络中供电
|
JavaScript 开发者 索引
【亮剑】探讨了在TypeScript中为对象动态添加属性的三种方式
【4月更文挑战第30天】本文探讨了在TypeScript中为对象动态添加属性的三种方式:1) 使用索引签名允许添加任意属性,如`[key: string]: any`;2) 通过接口和类型别名提供编译时类型检查,例如`interface Person { name: string; age: number; }`;3) 利用类创建具有属性的对象,如`class Person { name: string; age: number; }`。每种方法有其适用场景,开发者可根据需求选择。
1248 0