关于验证码:图形验证码守护你的账号安全

前言在明天的数字时代,账号平安是至关重要的。咱们都晓得明码是爱护账号的第一道防线,但依然有可能被破解或者盗取。为了减少额定的平安层,越来越多的网站和应用程序引入了图形验证码(CAPTCHA)。 这种验证码通过展现随机生成的图形或图片来辨别人类用户和自动化程序,确保只有真正的人类用户可能顺利通过验证。 相干代码using System;using KgCaptchaSDK;public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { // 后端解决 string html, appId, appSecret, Token; if (Request.Form.ToString().Length > 0){ // 有数据处理 // 填写你的 AppId,在利用治理中获取 appId = "appId"; // 填写你的 AppSecret,在利用治理中获取 appSecret = "appSecret"; var request = new kgCaptcha(appId, appSecret); // 前端验证胜利后颁发的 token,有效期两分钟 request.token = Request.Form["kgCaptchaToken"]; // 填写应用服务域名,在利用治理中获取 request.appCdn = "https://cdn6.kgcaptcha.com"; // 当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:Request.Form["username"]),可拦挡同一帐号屡次尝试等行为 request.userId = "kgCaptchaDemo"; // 申请超时工夫,秒 request.connectTimeout = 5; // 发送验证申请 var requestResult = request.sendRequest(); if (requestResult.code == 0) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert('验证通过');history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.msg + " - " + requestResult.code + "\");history.back();</script>"; } // 输入后果 Response.Write(html); } Response.Redirect("index.html"); }}最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

September 5, 2023 · 1 min · jiezi

关于验证码:文字验证码简单有效的账号安全守卫

前言文字验证码不仅是一种简略易懂的验证形式,同时也是爱护您的账号平安的重要工具。通过输出正确的文字组合,您能够无效地确认本人的身份,确保只有真正的用户能力拜访您的账号。 HTML代码<script src="https://cdn6.kgcaptcha.com/captcha.js"></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><div id="captchaBox">载入中 ...</div>PHP代码<?phpinclude "KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "appId";// 填写你的 AppSecret,在利用治理中获取$appSecret = "appSecret";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn6.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

September 5, 2023 · 1 min · jiezi

关于验证码:免费在线行为验证保护你的账号安全

前言遗记繁琐的验证码吧!收费在线行为验证服务,通过滑动图片、滑动拼图和文字点选等形式,确保只有真正的人类用户可能拜访。 前端代码<script src="https://cdn6.kgcaptcha.com/captcha.js"></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><div id="captchaBox">载入中 ...</div>Python代码from wsgiref.simple_server import make_serverfrom KgCaptchaSDK import KgCaptchadef start(environ, response): # 填写你的 AppId,在利用治理中获取 AppID = "AppID" # 填写你的 AppSecret,在利用治理中获取 AppSecret = "AppSecret" request = KgCaptcha(AppID, AppSecret) # 填写应用服务域名,在利用治理中获取 request.appCdn = "https://cdn6.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() if requestResult.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/ ...

August 31, 2023 · 1 min · jiezi

关于验证码:安全防线加固文字点选验证码来帮忙

前言为了确保网络安全,咱们网站采纳了文字点选验证码来验证用户身份。文字点选验证码是一种简略而无效的验证机制,通过要求用户点击相干图像来辨别实在用户和机器人。它不仅能够避免歹意攻打,还能提供用户敌对的验证体验。 劣势在文字点选验证码中,用户将面对一个蕴含多个图像的界面。用户须要依据批示点击与给定条件相符的图像。这些条件能够是点击所有显示食物的图片,或者点击所有带有交通工具的图像。通过这样的验证形式,零碎可能无效辨别实在用户和机器人,进步网站的安全性。 文字点选验证码的劣势在于其简洁性和可操作性。用户只需点击几个图像就能实现验证,而无需输出简单的验证码。这不仅缩小了用户的繁琐操作,还进步了用户的满意度。 实现代码HTML代码<script src="captcha.js"></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><div id="captchaBox">载入中 ...</div>Python代码from wsgiref.simple_server import make_serverfrom KgCaptchaSDK import KgCaptchadef start(environ, response): # 填写你的 AppId,在利用治理中获取 AppID = "AppID" # 填写你的 AppSecret,在利用治理中获取 AppSecret = "AppSecret" request = KgCaptcha(AppID, AppSecret) # 填写应用服务域名,在利用治理中获取 request.appCdn = "https://cdn6.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() if requestResult.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/ ...

August 23, 2023 · 1 min · jiezi

关于验证码:在线行为验证码推荐

原因想要爱护您的网站免受歹意攻打?无妨思考一款收费行为验证插件。该插件基于用户的行为模式进行验证,可无效辨别实在用户和机器人。其中,滑动拼图是一种常见的在线行为验证形式,可能减少验证的难度,进步网站的安全性。通过应用这款收费插件,您能够为您的网站增加一道牢靠的平安防线。 相干代码HTML代码 <script src="https://cdn6.kgcaptcha.com/captcha.js"></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><div id="captchaBox">载入中 ...</div>PHP代码 <?phpinclude "KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "appId";// 填写你的 AppSecret,在利用治理中获取$appSecret = "appSecret";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn6.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

August 23, 2023 · 1 min · jiezi

关于验证码:文字点选行为验证插件助您的网站更安全

背景随着互联网的疾速倒退,网络安全问题也日益突出。为了避免歹意机器人或主动程序的攻打,越来越多的网站采纳了文字点选验证码作为一种无效的平安验证伎俩。文字点选验证码通过要求用户在一组图像中抉择特定的文字或图案,以确认其为实在用户。以下是文字点选验证码成为网络安全的必备工具的起因: 进步安全性:传统的验证码(如数字、字母组合)已被主动程序破解技术攻破,而文字点选验证码减少了辨认难度,无效升高了机器攻打的成功率。用户敌对性:相比其余类型的验证码,文字点选验证码更易于用户了解和操作。用户只需点击相干的图片或文字即可实现验证,无需费时费力地输出简单的字符串。避免刷号和歹意注册:歹意用户常常利用主动程序进行刷号和歹意注册,文字点选验证码能够无效地避免这些行为,爱护网站免受垃圾信息和不良用户的侵扰。晋升用户体验:因为文字点选验证码的操作简单明了,用户在进行验证过程中往往可能疾速实现,无需期待简单图像的加载或文字的输出,从而晋升了用户的整体体验。文字点选验证码前端接入代码 <script src="captcha.js"></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><div id="captchaBox">载入中 ...</div>PHP 代码 <?phpinclude "KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "appId";// 填写你的 AppSecret,在利用治理中获取$appSecret = "appSecret";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}成果展现 ...

August 22, 2023 · 1 min · jiezi

关于验证码:滑动拼图验证摆脱烦人的验证码输入

前言摸索滑动拼图的世界!让咱们一起揭开滑动拼图验证码背地的谜团,分享如何应答这个乏味而挑战性的验证形式。滑动拼图验证码曾经成为了咱们与数字世界互动的一部分,帮忙爱护着网站和利用的平安。让咱们一起探讨如何轻松地解决滑动拼图验证码的挑战吧! 你最近是否遇到过令人头疼的验证码?为何不让滑动拼图成为你的新抉择呢?通过实现一个乏味的滑动拼图来验证你的身份,既能锤炼大脑,又能爱护你的隐衷。 HTML 代码<script src="captcha.js"></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><div id="captchaBox">载入中 ...</div>Python 代码from wsgiref.simple_server import make_serverfrom KgCaptchaSDK import KgCaptchadef start(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() if requestResult.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/ ...

August 22, 2023 · 1 min · jiezi

关于验证码:滑动验证码样式在线体验

结尾的话您是否心愿将您的验证界面变得更具创意和个性化?行为验证码款式正是您须要的!无论是炫酷的动画、舒缓的色调搭配还是精美的图案,都能让您的验证界面怀才不遇,给用户留下粗浅的印象。 在线体验1、进入KgCaptcha官网,在首页即可通过操作调整验证码的演示,从而达到用户想要的成果。 2、成果展现 实现代码<script src="captcha.js"></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><div id="captchaBox">载入中 ...</div>最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

August 21, 2023 · 1 min · jiezi

关于验证码:如何免费使用行为验证码

前言随着互联网的疾速倒退,账户平安问题日益凸显。传统的验证码形式曾经无奈满足用户的需要,操作繁琐、易被攻打成为了用户们的独特痛点。幸好,行为验证码应运而生,以其智能、精确、便捷的特点成为了新一代验证形式。 相干操作1、进入KgCaptcha官网,注册账号,进入我的套餐-支付体验包。 2、依据利用治理的接入代码,在我的项目中接入指定的行为验证码。 相干代码1、前端代码 <script src="captcha.js"></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><div id="captchaBox">载入中 ...</div>2、后端代码 <?phpinclude "KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "appId";// 填写你的 AppSecret,在利用治理中获取$appSecret = "appSecret";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}成果展现 ...

August 21, 2023 · 1 min · jiezi

关于验证码:同一页面多次调用验证码

原因一个页面须要两个验证码,应用同一个验证码调用两次会导致有前一个生效。那么咱们须要创立不同的两个验证码,别离做验证。 截图展现 具体实现同时引入多个KgCaptcha的js。引入多个JS时,请定义 plural 参数;通过该参数辨别定义对象名,如plural=1,则对象名为kg1,以此类推。<script src="captcha.js?appid=XXX&plural=1" id="KgCaptcha1"></script><script src="captcha.js?appid=XXX&plural=2" id="KgCaptcha2"></script>初始化验证码<script type="text/javascript">// 第一个验证码kg1.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox1", // 验证胜利事务处理 success: function(e) { console.log(e); }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); }}); // 第二个验证码kg2.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox2", // 验证胜利事务处理 success: function(e) { console.log(e); }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); }}); </script>创立验证框显示区域<!-- 第一个验证码 --><div id="captchaBox1"></div><!-- 第二个验证码 --><div id="captchaBox2"></div>总结SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

May 10, 2023 · 1 min · jiezi

关于验证码:图形验证码无痕刷新

前言在不刷新浏览器的状况下,实现页面的刷新。本文采纳KgCaptcha验证码,实现无痕刷新验证码,上面是总结验证码不同情景下刷新的办法。 01 嵌入式或触发式// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script>// 初始化kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox",});</script> <div id="captchaBox"></div>// 刷新验证码<button onclick="kg.reload({bind: '#captchaBox'});">刷新验证码</button>02 弹窗式// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script>// 初始化kg.captcha({ // 绑定弹窗按钮 button: "#captchaButton",});</script> <a id="captchaButton">点击弹出验证窗口</a> // 刷新验证码<button onclick="kg.reload({button: '#captchaButton'});">刷新验证码</button>03 通用式// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script> // 初始化 kg.captcha();</script> <div id="captchaDiv"></div>// 刷新验证码<button onclick="kg.reload(kg.param);">刷新验证码</button>04 param对象为缺省值(嵌入式或触发式)// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script> // 初始化 kg.captcha();</script> <div id="captchaDiv"></div>// 刷新验证码<button onclick="kg.reload({});">刷新验证码</button>05 param对象为缺省值(弹窗式)// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script> // 初始化 kg.captcha();</script> <a id="captchaButton">点击弹出验证窗口</a>// 刷新验证码<button onclick="kg.reload({});">刷新验证码</button>最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

May 10, 2023 · 1 min · jiezi

关于验证码:关于行为验证码你不知道的一些问题

结尾的话对于验证码,大家兴许会有很多疑难,上面我总结了一些常见问题。 什么是验证码?验证码(CAPTCHA)全称为:Completely Automated Public Turing test to tell Computers and Humans Apart,全自动辨别计算机和人类的图灵测试,是一种辨别用户是计算机还是人的公共全自动程序。 验证码有什么作用?联合咱们的日常生活,咱们发现验证码通常呈现在登录、注册、领优惠券、购买游戏配备、购票、发帖等场景。验证码无效避免这种问题对某一个特定注册用户用特定程序暴力破解形式进行一直的登陆尝试,验证码很大水平上是用来判断操作是人为还是机器人。 行为验证码的原理是什么?针对用户产生的行为轨迹数据进行机器学习建模,联合拜访频率、地理位置、历史记录等多个维度信息,疾速、精确的返回人机断定后果,故而机器辨认+模仿则不易通过。 验证码的类型都有哪些?1、数字、字母、中文组合:以图片的模式展现字母、数字、中文混合组合,此类验证码个别由4位组成。2、短信验证码:比拟常见的验证码类型,用户填好手机号码,单击获取验证码后,手机上就能收到短信验证码。3、行为验证码:智能无感、滑动拼图、文字点选、语序点选、字体辨认、空间推理等。 怎么避免歹意刷短信验证?歹意短信验证,属于短信轰炸的一种,用户端体现为高频收到验证短信内容,用户体验差。对公司来讲,大量的歹意短信验证,减少公司经营老本,领取额定的短信经营费用。避免这种歹意行为,形式之一是能够减少验证码校验。发送短信验证码时,可要求通过验证码。同时在验证码申请谬误时,要重置验证码,避免图片验证码辨认软件尝试屡次辨认。 前端代码: <script src="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><a id="captchaButton">点击弹出验证窗口</a>后端代码: <?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "xxx";// 填写你的 AppSecret,在利用治理中获取$appSecret = "xxx";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

May 9, 2023 · 1 min · jiezi

关于验证码:干货验证码的常见类型总结

前言验证码是一种辨别用户是计算机和人的公共全自动程序。简略来说,验证码就是验证操作是人还是机器。上面我就总结一下常见的验证码类型都有哪些? 数字、字母组合这种模式最为常见,也很简略。有的是独自应用这两种,也有的是数字、字母混合而成,为了进步辨认难度,有的会增加烦扰线,如在背景中增加烦扰线。 <?php// 抛弃输入缓冲区的内容 **ob_clean();// 创立画布$image = imagecreatetruecolor(110, 30);// 设置红色底$bgColor = imagecolorallocate($image, 255, 255, 255);imagefill($image, 0, 0, $bgColor);// 增加四个随机数字字母for($i=0;$i<4;$i++) { $fontSize = 6; // 随机调配色彩 $fontColor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120)); // 生成内容 $data = "abcdefghijkmnpqrstuvwxy3456789"; // 如果内容为空,从新输入1个 do { $fontCont = substr($data, rand(0, strlen($data)), 1); } while ($fontCont == ''); // 设置范畴 $x = ($i*110/4)+rand(5, 10); $y = rand(5, 10); // 图片退出数字 imagestring($image, $fontSize, $x, $y, $fontCont, $fontColor);} // 增加烦扰点元素for($j=0;$j<200;$j++) { // 点色彩 $pointColor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200)); imagesetpixel($image, rand(1, 99), rand(1, 29), $pointColor);}// 增加烦扰线元素for($z=0;$z<4;$z++) { // 生成色彩线 $lineColor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220)); imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $lineColor);}header("Content-type:image/png");// 输入图片imagepng($image);// 销毁内存中的图片imagedestroy($image);?>短信验证码随着手机的遍及,很多APP都是用手机号注册的。为了验证手机号码的真实性,避免歹意注册,通常会向手机发送验证码。网上有专门的短信发送平台,向电信运营商领取短信费用,接入即可应用。 ...

May 9, 2023 · 1 min · jiezi

关于验证码:行为验证码接入汇总

结尾的话最近有在用一款好玩的验证码产品,乐于摸索的我,决定从不同的语言去摸索这款验证码。 KgCaptcha反对PHP、Python、Java、C#的接入。上面是我接入过程记录中的代码。 HTML<script src="captcha.js?appid=xxx"></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><div id="captchaBox">载入中 ...</div>PHP<?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "xxx";// 填写你的 AppSecret,在利用治理中获取$appSecret = "xxx";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "appCdn";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}Pythonfrom wsgiref.simple_server import make_serverfrom KgCaptchaSDK import KgCaptchadef start(environ, response): # 填写你的 AppId,在利用治理中获取 AppID = "xxx" # 填写你的 AppSecret,在利用治理中获取 AppSecret = "xxx" request = KgCaptcha(AppID, AppSecret) # 填写应用服务域名,在利用治理中获取 request.appCdn = "appCdn" # 申请超时工夫,秒 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() if requestResult.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_foreveJavapackage com.kyger;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.Map;public class demo extends HttpServlet { private static final long serialVersionUID = 1L; public demo() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");; response.setContentType("text/html; charset=utf-8"); // 后盾解决 if (request.getMethod().equals("POST")){ String html, appId, appSecret; // 设置 AppId 及 AppSecret,在利用治理中获取 appId = "xxx"; appSecret = "xxx"; KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret); // 前端验证胜利后颁发的 token,有效期为两分钟 KgRequest.token = request.getParameter("kgCaptchaToken"); // 填写应用服务域名,在利用治理中获取 KgRequest.appCdn = "appCdn"; // 申请超时工夫,秒 KgRequest.connectTimeout = 5; // 用户登录或尝试帐号,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:request.getParameter("username"),可拦挡同一帐号屡次尝试等行为 KgRequest.userId = "kgCaptchaDemo"; // request 对象,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 KgRequest.request = request; // java 环境中无奈提供 request 对象,请别离定义:clientIp¦clientBrowser¦domain 参数,即: // 发送验证申请 Map<String, String> requestResult = KgRequest.sendRequest(); if("0".toString().equals(requestResult.get("code"))) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert(´验证通过´);history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.get("msg") + " - " + requestResult.get("code") + "\");history.back();</script>"; } response.getWriter().append(html); } else { response.sendRedirect("index.html"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}C#.Netusing System;using KgCaptchaSDK;public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { // 后端解决 string html, appId, appSecret, Token; if (Request.Form.ToString().Length > 0){ // 有数据处理 // 填写你的 AppId,在利用治理中获取 appId = "xxx"; // 填写你的 AppSecret,在利用治理中获取 appSecret = "xxx"; var request = new kgCaptcha(appId, appSecret); // 前端验证胜利后颁发的 token,有效期两分钟 request.token = Request.Form["kgCaptchaToken"]; // 填写应用服务域名,在利用治理中获取 request.appCdn = "appCdn"; // 当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:Request.Form["username"]),可拦挡同一帐号屡次尝试等行为 request.userId = "kgCaptchaDemo"; // 申请超时工夫,秒 request.connectTimeout = 5; // 发送验证申请 var requestResult = request.sendRequest(); if (requestResult.code == 0) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert(´验证通过´);history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.msg + " - " + requestResult.code + "\");history.back();</script>"; } // 输入后果 Response.Write(html); } Response.Redirect("index.html"); }}最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

May 8, 2023 · 3 min · jiezi

关于验证码:基于Nuxtjs实现滑动拼图验证码

前言NuxtJS 让你构建你的下一个 Vue.js 应用程序变得更有信念。这是一个 开源 的框架,让 web 开发变得简略而弱小。 我的项目目录 具体代码page/index.vue<template> <div id="app"> <!--自定义组件、内容--> <form id="form"> token: <input name="token" id="token"> <!--凯格行为验证码组件--> <div id="captchaBox"></div> <!--凯格行为验证码组件--> <button type="submit">提交</button> </form> <!--自定义组件、内容--> </div> </template> <script>export default { name: 'IndexPage ', head() { return { script:[ { type: 'text/javascript', src: 'captcha.js?appid=xxx', body: true } ] } }, beforeCreate () { //初始化凯格行为验证码 kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox", // 验证胜利事务处理 success: function(e) { console.log(e); kg.$('#token').value = e['token'] }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); } }); }}</script>成果展现 ...

May 8, 2023 · 1 min · jiezi

关于验证码:基于Nodejs实现行为验证码

成果展现 我的项目目录 index.html我的项目根目录index.html文件,头部援用KgCaptcha的js。 <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><!--引入凯格行为验证码js--><script id="KgCaptcha" src="captcha.js?appid=xxx"></script><!--引入凯格行为验证码js--></head><body> <!--vue主体--> <div id="app"></div> <!--vue主体--></body></html>main.jssrc/main.js文件中,配置路由。 import Vue from 'vue'import App from './App'import router from './router'Vue.config.productionTip = false// 配置全局路由、组件new Vue({ el: '#app', router, components: { App }, template: ''})App.vuesrc/App.vue文件中,定义html。 <template> <div id="app"> <!--自定义组件、内容--> <form id="form"> token: <input name="token" id="token"> <!--凯格行为验证码组件--> <div id="captchaBox"></div> <!--凯格行为验证码组件--> <button type="submit">提交</button> </form> <!--自定义组件、内容--> </div></template> <script>export default { name: 'App', beforeCreate () { //初始化凯格行为验证码 kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox", // 验证胜利事务处理 success: function(e) { console.log(e); kg.$('#token').value = e['token'] }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); } }); }}</script>总结SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

May 8, 2023 · 1 min · jiezi

关于验证码:C滑动拼图验证码

前言C# 是一个古代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。突发奇想,入手开发一个C#滑动拼图验证码,上面是我开发过程的记录。 筹备工作本文应用IIS搭建环境,同时确保我的项目运行失常。 目录构造 外围代码noramal.html<!doctype html><html><head><meta charset="utf-8"><title>凯格行为验证码 - Net C# demo</title><link rel="stylesheet" href="./style/demo.css" /><!--将以下域名替换成你的“应用服务器域名”将以下 appid 替换成你的 AppID服务器域名和appid在你的利用治理中获取示例:<script src="captcha.js?appid=xxx"></script>--><script src="captcha.js?appid=appId"></script><script>kg.captcha({ // 绑定显示区域 bind: "#captchaBox", // 验证胜利事务处理 success: function (e) { console.log(e); // 将验证胜利后的 token 通过暗藏域传递到后端 kg.$("#kgCaptchaToken").value = e["token"]; }, // 验证失败事务处理 failure: function (e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function (e) { console.log(e); }});// 查看表单提交function check() { if (kg.$("#kgCaptchaToken").value == "") { alert("请实现图形验证后提交") return false; } else { return true; }}</script></head><body> <form action="demo.aspx?cty=1" method="post" id="form" onsubmit="return check();"> <!-- 将验证胜利后的 token 通过暗藏域传递到后端 --> <input type="hidden" name="kgCaptchaToken" id="kgCaptchaToken" value="" /> <div class="inputForm"> <input type="text" name="username" placeholder=" 例:填写登录帐号" /> <br/> <input type="password" name="password" placeholder=" 例:填写登录明码" /> </div> <!-- 绑定显示区域 --> <div id="captchaBox"></div> <input type="submit" value="提 交" class="btn" /> </form></body></html>demo.aspx.csusing System;using KgCaptchaSDK;public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { // 后端解决 string html, appId, appSecret, Token; if (Request.Form.ToString().Length > 0){ // 有数据处理 string cty = Request.QueryString["cty"]; // 设置 AppId 及 AppSecret,在利用治理中获取 if (cty == "1"){ appId = "appId"; appSecret = "appSecret"; } // 填写你的 AppId 和 AppSecret,在利用治理中获取 var request = new kgCaptcha(appId, appSecret); // 前端验证胜利后颁发的 token,有效期为两分钟 request.token = Request.Form["kgCaptchaToken"]; // 填写应用服务域名,在利用治理中获取 request.appCdn = "appCdn"; // 当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:$_POST["username"]),可拦挡同一帐号屡次尝试等行为 request.userId = "kgCaptchaDemo"; // 申请超时工夫,秒 request.connectTimeout = 5; // 发送验证申请 var requestResult = request.sendRequest(); if (requestResult.code == 0) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert('验证通过');history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.msg + " - " + requestResult.code + "\");history.back();</script>"; } // 输入后果 Response.Write(html); } else { Response.Redirect("index.html"); } }}成果展现 ...

May 6, 2023 · 2 min · jiezi

关于验证码:Vuejs实现图形验证码

背景对于验证码的应用场景还是十分多的,很多网站上的验证码堪称是形形色色,上面是我应用Vue.js实现滑动拼图验证码做的一个笔记。 筹备工作拜访KgCaptcha网站,注册账号后登录控制台,拜访“无感验证”模块,申请开明后零碎会调配给利用一个AppId和AppSecret。提供后端SDK来校验token(即平安凭据)是否非法 ,目前反对PHP版、Python版、Java/JSP版、.Net C#版。拜访Vue.js中武官网,复制Vue.js插件链接。留神:先HTML头部初始化行为验证码,而后HTML底部初始化Vue.js,否则KgCaptcha的js局部函数与被Vue.js发生冲突,导致生效。HTML、JS代码<!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><!--头部引入vue.js插件--><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><!--头部引入vue.js插件--><!--头部引入行为验证码js插件--><script id="KgCaptcha" src="captcha.js?appid=xxx"></script><script> kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox", //嵌入式、触发式( 嵌入式、触发式标签及事件 和 弹窗式标签及事件 ,二选一) button: "#captchaButton", //弹窗式( 嵌入式、触发式标签及事件 和 弹窗式标签及事件 ,二选一) // 验证胜利事务处理 success: function(e) { console.log(e); kg.$('#token').value = e['token']; }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); } });</script><!--头部引入行为验证码js插件--></head><body> <div id="app"> <!--自定义内容、vue组件--> token: <input name="token" id="token"> <!--行为验证码组件--> <div id="captchaBox"></div> <!--嵌入式、触发式( 嵌入式、触发式标签及事件 和 弹窗式标签及事件 ,二选一) --> <!--行为验证码组件--> <button type="button">提交</button> <a id="captchaButton">点击弹出验证窗口</a> <!--弹窗式( 嵌入式、触发式标签及事件 和 弹窗式标签及事件 ,二选一)--> <!--自定义内容、vue组件--> </div></body><!--底部运行vue.js代码--> <script> var app = new Vue({ el: '#app',})</script><!--底部运行vue.js代码--> </html>最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

May 6, 2023 · 1 min · jiezi

关于验证码:PHP行为验证码

前言验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动辨别计算机和人类的图灵测试)的缩写,是一种辨别用户是计算机还是人的公共全自动程序。 前端代码<script src="captcha.js?appid=xxx"></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><div id="captchaBox">载入中 ...</div>PHP代码<?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "appId";// 填写你的 AppSecret,在利用治理中获取$appSecret = "appSecret";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "appCdn";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}相干链接SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

May 6, 2023 · 1 min · jiezi

关于验证码:行为验证码小图标修改

前言最近行为验证码在很多网站逐渐流行起来,对用户体验来说,比拟新鲜,操作简略。上面我以滑动拼图验证码和文字点选验证码为例,通过 KgCaptcha 来说说如何批改验证码中的图标。 01 滑动小箭头图标设置滑动小箭头图标,滑动拼图默认不拖动的小图标。 设置成果如下: 02 谬误小图标设置谬误小图标,当滑动拼图拖动验证谬误时的谬误小图标。 设置成果如下: 03 正确小图标设置正确小图标,当滑动拼图拖动验证正确时的正确小图标。 设置成果如下: 04 拖动小箭头图标设置拖动过程中小箭头图标,当滑动拼图拖动时的拖动小图标。 设置成果如下: 05 提醒小图标设置提醒小图标,文字点选默认没点选的提醒小图标。 设置成果如下: 相干链接SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

May 5, 2023 · 1 min · jiezi

关于验证码:同一页面多次调用验证码

原因一个页面须要两个验证码,应用同一个验证码调用两次会导致有前一个生效。那么咱们须要创立不同的两个验证码,别离做验证。 截图展现 具体实现同时引入多个KgCaptcha的js。引入多个JS时,请定义 plural 参数;通过该参数辨别定义对象名,如plural=1,则对象名为kg1,以此类推。<script src="captcha.js?appid=XXX&plural=1" id="KgCaptcha1"></script><script src="captcha.js?appid=XXX&plural=2" id="KgCaptcha2"></script>初始化验证码<script type="text/javascript">// 第一个验证码kg1.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox1", // 验证胜利事务处理 success: function(e) { console.log(e); }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); }}); // 第二个验证码kg2.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox2", // 验证胜利事务处理 success: function(e) { console.log(e); }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); }}); </script>创立验证框显示区域<!-- 第一个验证码 --><div id="captchaBox1"></div><!-- 第二个验证码 --><div id="captchaBox2"></div>总结SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

May 5, 2023 · 1 min · jiezi

关于验证码:图形验证码无痕刷新

前言在不刷新浏览器的状况下,实现页面的刷新。本文采纳KgCaptcha验证码,实现无痕刷新验证码,上面是总结验证码不同情景下刷新的办法。 01 嵌入式或触发式// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script>// 初始化kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox",});</script> <div id="captchaBox"></div>// 刷新验证码<button onclick="kg.reload({bind: '#captchaBox'});">刷新验证码</button>02 弹窗式// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script>// 初始化kg.captcha({ // 绑定弹窗按钮 button: "#captchaButton",});</script> <a id="captchaButton">点击弹出验证窗口</a> // 刷新验证码<button onclick="kg.reload({button: '#captchaButton'});">刷新验证码</button>03 通用式// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script>// 初始化kg.captcha();</script> <div id="captchaDiv"></div>// 刷新验证码<button onclick="kg.reload(kg.param);">刷新验证码</button>04 param对象为缺省值(嵌入式或触发式)// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script>// 初始化kg.captcha();</script> <div id="captchaDiv"></div>// 刷新验证码<button onclick="kg.reload({});">刷新验证码</button>05 param对象为缺省值(弹窗式)// 引入js<script src="captcha.js?appid=XXX" id="KgCaptcha"></script><script>// 初始化kg.captcha();</script> <a id="captchaButton">点击弹出验证窗口</a>// 刷新验证码<button onclick="kg.reload({});">刷新验证码</button>最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

May 5, 2023 · 1 min · jiezi

关于验证码:基于Nuxtjs框架实现滑动拼图验证码

前言NuxtJS 让你构建你的下一个 Vue.js 应用程序变得更有信念。这是一个 开源 的框架,让 web 开发变得简略而弱小。 我的项目目录 具体代码page/index.vue <template> <div id="app"> <!--自定义组件、内容--> <form id="form"> token: <input name="token" id="token"> <!--凯格行为验证码组件--> <div id="captchaBox"></div> <!--凯格行为验证码组件--> <button type="submit">提交</button> </form> <!--自定义组件、内容--> </div> </template> <script>export default { name: 'IndexPage ', head() { return { script:[ { type: 'text/javascript', src: 'captcha.js?appid=xxx', body: true } ] } }, beforeCreate () { //初始化凯格行为验证码 kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox", // 验证胜利事务处理 success: function(e) { console.log(e); kg.$('#token').value = e['token'] }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); } }); }}</script>成果展现 ...

April 24, 2023 · 1 min · jiezi

关于验证码:基于Nodejs实现图形验证码

成果展现 我的项目目录 index.html我的项目根目录index.html文件,头部援用KgCaptcha的js。 <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><!--引入凯格行为验证码js--><script id="KgCaptcha" src="captcha.js?appid=xxx"></script><!--引入凯格行为验证码js--></head><body> <!--vue主体--> <div id="app"></div> <!--vue主体--></body></html>main.jssrc/main.js文件中,配置路由。 import Vue from 'vue'import App from './App'import router from './router'Vue.config.productionTip = false// 配置全局路由、组件new Vue({ el: '#app', router, components: { App }, template: ''})App.vuesrc/App.vue文件中,定义html。 <template> <div id="app"> <!--自定义组件、内容--> <form id="form"> token: <input name="token" id="token"> <!--凯格行为验证码组件--> <div id="captchaBox"></div> <!--凯格行为验证码组件--> <button type="submit">提交</button> </form> <!--自定义组件、内容--> </div></template> <script>export default { name: 'App', beforeCreate () { //初始化凯格行为验证码 kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox", // 验证胜利事务处理 success: function(e) { console.log(e); kg.$('#token').value = e['token'] }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); } }); }}</script>总结SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

April 24, 2023 · 1 min · jiezi

关于验证码:一款漂亮的Java行为验证码

前言Java图形验证码,反对自定义图片、中文、算术等类型,可用于Java Web、JavaSE等我的项目。真香! 截图展现 我的项目集成package com.kyger;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.Map;public class demo extends HttpServlet { private static final long serialVersionUID = 1L; public demo() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");; response.setContentType("text/html; charset=utf-8"); // 后盾解决 if (request.getMethod().equals("POST")){ String html, appId, appSecret; // 设置 AppId 及 AppSecret,在利用治理中获取 appId = "xxx"; appSecret = "xxx"; KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret); // 前端验证胜利后颁发的 token,有效期为两分钟 KgRequest.token = request.getParameter("kgCaptchaToken"); // System.out.print(KgRequest.token); // 填写应用服务域名,在利用治理中获取 KgRequest.appCdn = "xxx"; // 申请超时工夫,秒 KgRequest.connectTimeout = 5; // 用户登录或尝试帐号,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:request.getParameter("username"),可拦挡同一帐号屡次尝试等行为 KgRequest.userId = "kgCaptchaDemo"; // request 对象,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 KgRequest.request = request; // java 环境中无奈提供 request 对象,请别离定义:clientIp|clientBrowser|domain 参数,即: // KgRequest.clientIp = "127.0.0.1"; // 填写客户端IP // KgRequest.clientBrowser = ""; // 客户端浏览器信息 // KgRequest.domain = "http://localhost"; // 你的受权域名或服务IP // 发送验证申请 Map<String, String> requestResult = KgRequest.sendRequest(); if("0".toString().equals(requestResult.get("code"))) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert('验证通过');history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.get("msg") + " - " + requestResult.get("code") + "\");history.back();</script>"; } response.getWriter().append(html); } else { response.sendRedirect("index.html"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

April 24, 2023 · 1 min · jiezi

关于验证码:C-滑动拼图验证码

前言网上大部分验证码都是PHP的,基于C# .Net开发的很少,举荐一款很漂亮且实用的C#图形验证码,能够自定义背景图库,性能还是挺弱小的。 前端接入脚本<script src="captcha.js?appid=xxx"></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><div id="captchaBox">载入中 ...</div>C# 代码using System;using KgCaptchaSDK;public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { // 后端解决 string html, appId, appSecret, Token; if (Request.Form.ToString().Length > 0){ // 有数据处理 // 填写你的 AppId,在利用治理中获取 appId = "appId"; // 填写你的 AppSecret,在利用治理中获取 appSecret = "appSecret"; var request = new kgCaptcha(appId, appSecret); // 前端验证胜利后颁发的 token,有效期两分钟 request.token = Request.Form["kgCaptchaToken"]; // 填写应用服务域名,在利用治理中获取 request.appCdn = "https://cdn.kgcaptcha.com"; // 当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:Request.Form["username"]),可拦挡同一帐号屡次尝试等行为 request.userId = "kgCaptchaDemo"; // 申请超时工夫,秒 request.connectTimeout = 5; // 发送验证申请 var requestResult = request.sendRequest(); if (requestResult.code == 0) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert(´验证通过´);history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.msg + " - " + requestResult.code + "\");history.back();</script>"; } // 输入后果 Response.Write(html); } Response.Redirect("index.html"); }}最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

April 23, 2023 · 1 min · jiezi

关于验证码:好看免费的Python验证码

前言在提交表单的时候为了避免机器操作或者是歹意的攻打,在填写表单的时候个别都用验证码来过滤掉一些非法提交数据。明天给大家介绍一款超实用超丑陋的Python验证码库:KgCaptcha。 前端接入代码<script src="captcha.js?appid=xxx"></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><div id="captchaBox"></div>Python 接入代码from wsgiref.simple_server import make_serverfrom KgCaptchaSDK import KgCaptchadef start(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() if requestResult.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) # 设置调试端口 httpd.serve_forever()最初SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/ ...

April 23, 2023 · 1 min · jiezi

关于验证码:PHP免费验证码

前言验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动辨别计算机和人类的图灵测试)的缩写,是一种辨别用户是计算机还是人的公共全自动程序。 前端代码<script src="captcha.js?appid=xxx"></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><div id="captchaBox">载入中 ...</div>PHP代码<?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "appId";// 填写你的 AppSecret,在利用治理中获取$appSecret = "appSecret";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}成果展现 ...

April 23, 2023 · 1 min · jiezi

关于验证码:图形验证码图片样式设置

前言在一次我的项目开发中,须要对滑动拼图验证码的宽高、拼图缺口、滑块等款式进行自定义设置,于是我找啊找,终于让我找到了 KgCaptcha,用户能够本人设置验证码尺寸、外框、缺口款式、滑块等。上面就由我来介绍一下如何设置吧! 01 图片宽度验证码的图片宽度,必须与滑动框同步宽度、同步批改,单位 px。 成果如下: 02 图片高度验证码的底图高度,单位 px。 成果如下: 03 图片圆角边框设置底图边框圆角,单位 px 成果如下: 04 小方块旋转角度验证码拼图缺口的旋转角度——不旋转 / 正角旋转 / 随机角度 正角旋转:45|90|180|360 度旋转,图案比拟好看,体验度好 随机角度:随机旋转,体验个别,防御力较强 05 小方块透明度设置拼图小方块透明度,范畴0-1 设置成果如下: 06 小方块形态一般模式:拼图小方块应用规范形态 随机模式:拼图小方块应用随机形态 07 拼图容错值设置拼图容错范畴,单位 px 设置成果如下: 相干链接SDK下载:https://github.com/KgCaptcha 在线体验:https://www.kgcaptcha.com/demo/

April 21, 2023 · 1 min · jiezi

关于验证码:行为验证码安全策略设置

前言在验证码我的项目中,都会遇到验证码被歹意大量高频的调用,给服务造成很多有效的注册或登录,占用大量的系统资源。 而我在想,有没有哪一款验证码产品能够设置黑/白名单限度IP拜访和设置风控异样呢?答案是:有,大海茫茫中让我找到了 KgCaptcha,接下来我就给大家讲讲怎么设置吧! 无感验证开启:当用户通过验证后,再次拜访时,无需验证,间接通过。 敞开:用户每次都需手动验证。 当无感验证开启,验证码显示如下: 局部代码片段 def sense_verify(self): """ 检测以后用户是否为无感免验证用户 """ # 以后利用是否开启无感验证性能 if self.auth.data["sense"] != 1: return 0, self.auth.lang[0] # 反对客户端调时敞开无感验证:$_GET["sence"] = 1 敞开、默认为 0 即开启 <script src="captcha.js?&sence=1"></script> if self.kg["GET"].get("sence", "ON") == "OFF": return 40004, self.auth.lang[40004] # 客户端环境是否反对无感验证,无奈获取/写入客户端 COOKIE if len(str(self.auth.cid)) != 32 or not self.auth.ip: return 40000, self.auth.lang[40000] ....IP限度(黑/白名单)黑名单模式:禁止以下IP拜访 白名单模式:只容许以下IP拜访 通过抉择黑/白名单,填写IP列表来限度指定IP拜访验证码。 当访问者IP在黑名单列表里,验证码显示如下: 相同,当访问者IP在白名单列表里,验证码失常显示: 局部代码片段 # 客户端IP检测 ip_list = self.auth.ip_list() if ip_list == 1: message = "%s : %s" % (self.auth.lang[40010], self.kg["HTTP_ADDR"]) if ip_list == 2: message = "%s : %s" % (self.auth.lang[40011], self.kg["HTTP_ADDR"])# 服务器黑名单检测if self.auth.client_blacklist(): message = self.auth.lang[40020] # 服务器黑名单风控异样设置一级:实用于开发调试及对平安要求个别的利用 ...

April 21, 2023 · 1 min · jiezi

关于验证码:KgCaptcha验证的那些事

01 前言针对KgCaptcha验证码,当用户点击实现验证,零碎进行危险评估,依据危险水平进行验证,并返回后果。上面是我对前/后端验证的剖析。 02 代码接入HTML代码 <script src="captcha.js?appid=xxx"></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><div id="captchaBox">载入中 ...</div>PHP代码 <?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "xxx";// 填写你的 AppSecret,在利用治理中获取$appSecret = "xxx";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}03 验证/验签剖析工夫监测 ...

April 19, 2023 · 2 min · jiezi

关于验证码:KgCaptcha验证码实现笔记

背景闲来无聊,在网上发现了一个验证码产品KgCaptcha,上面是我用KgCaptcha开发验证码的记录。 开发过程Web接入 拜访官网,注册账号后登录控制台,创立利用,零碎会调配一个惟一的AppId、AppSecret。 引入JS这里的appid在用户控制台获取。 <script src="captcha.js?appid=xxx"></script>JS接入代码<script>kg.captcha({ // 绑定元素,验证框显示区域 bind: "#captchaBox", // 验证胜利事务处理 success: function(e) { console.log(e); }, // 验证失败事务处理 failure: function(e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function(e) { console.log(e); }});</script> Python后盾验证from wsgiref.simple_server import make_serverfrom KgCaptchaSDK import KgCaptchadef start(environ, response): # 填写你的 AppId,在利用治理中获取 AppID = "xxx" # 填写你的 AppSecret,在利用治理中获取 AppSecret = "xxx" 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() if requestResult.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()JS刷新验证码<script>kg.reload(kg.param);</script>成果展现 ...

April 19, 2023 · 1 min · jiezi

关于验证码:PHP短信验证码防刷方案

前言短信验证码是通过发送验证码到手机的一种无效的验证码零碎。利用短信验证码来注册会员,大大降低了非法注册的数据。 上面是我在我的项目开发中,对避免歹意或者无心刷新验证码做的解决方案笔记。 工夫限度例如30秒后能力再次发送。点击发送短信验证码后,客户端开始30秒倒计时,限度用户在这工夫内屡次的发送获取短信验证码的申请。尽管这种办法比广泛,但通过特定形式能够绕过这个限度,间接发送短信验证码。 手机号限度针对同一个手机号进行注册或其它发送短信验证码的操作时,零碎能够对该手机号进行限度。例如指定工夫内只能发送5条短信验证码,超出则提醒请稍后再试。 接入图形验证码客户端发送短信验证码前,接入图形验证码,让用户验证。向服务端提交一个Token参数,服务端对这个Token参数进行验证,验证通过之后,再向申请发送短信的接口向用户手机发送短信。 前端接入代码 <script src="captcha.js?appid=xxx"></script><script>kg.captcha({ // 绑定弹窗按钮 button: "#captchaButton", // 验证胜利事务处理 success: function (e) { // 验证胜利,间接提交表单 // form1.submit(); kg.$("#kgCaptchaToken").value = e["token"]; console.log(e); }, // 验证失败事务处理 failure: function (e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function (e) { console.log(e); }});</script><a id="captchaButton">点击弹出验证窗口</a><input type="hidden" name="kgCaptchaToken" value="" />PHP代码 <?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "AppId";// 填写你的 AppSecret,在利用治理中获取$appSecret = "AppSecret";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "appCdn";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}短信预警当短信验证码申请达到肯定数量时,向管理员发送预警音讯,管理员能够立刻进行监控和爱护。 ...

April 19, 2023 · 1 min · jiezi

关于验证码:验证码-KgCaptcha风险监测方法

前言“拜访过于频繁,请先实现验证”,置信大家对这句话应该不生疏。当咱们拜访一个网站过于频繁时,就会弹出这样的提醒,甚至于让咱们先通过滑动验证码。 开发过程1、模仿以后为新闻列表。 2、前台接入KgCaptcha <script src="captcha.js?appid=xxx"></script><script type="text/javascript">kg.captcha({ // 绑定弹窗按钮 button: "#captchaButton", // 验证胜利事务处理 success: function (e) { // 验证胜利,间接提交表单 console.log(e); document.cookie = "sNum=1"; document.cookie = "sTime="+Math.round(new Date().getTime()/1000); document.getElementById('kgCaptchaToken').value = e['token'] form1.submit(); }, // 验证失败事务处理 failure: function (e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function (e) { console.log(e); } </script> <a id="captchaButton" style="display: none;">点击弹出验证窗口</a><form method="post" id="form1" name="form1"> <input type="hidden" name="action" value="captcha" /> <input type="hidden" name="kgCaptchaToken" id="kgCaptchaToken" value="" /></form> 3、要求 通过cookie监测以后页面拜访,指定工夫内拜访次数超出,则弹出验证码,要求用户验证。若为首次拜访,弹出验证码,要求用户验证。// 设置cookiewindow.onload = function() { // 以后工夫 var cTime = Math.round(new Date().getTime()/1000) // 以后cookie的拜访次数 var sNum = get_cookie2('sNum') // 以后cookie的上一次拜访工夫 var sTime = get_cookie2('sTime') // 判断cookie是否设置 if (sNum==undefined && sTime==undefined) { document.getElementById('captchaButton').click() } else { // 判断拜访次数和上一次拜访工夫 if (parseInt(sTime)+10 <= cTime && sNum>9) { document.getElementById('captchaButton').click() } else { if (cTime - sTime < 10) { document.cookie = "sNum="+(parseInt(sNum)+1); document.cookie = "sTime="+sTime; } else { document.cookie = "sNum=1"; document.cookie = "sTime="+cTime; } } }}// 获取cookie的办法function get_cookie2(val) { var arr = document.cookie.split(';'); for(var i = 0; i < arr.length; i++){ var arr2 = arr[i].split('='); arr2[0] = arr2[0].replace(/\s*/g,""); if(arr2[0] == val){ return arr2[1] } }}4、后端验证 ...

April 18, 2023 · 2 min · jiezi

关于验证码:使用验证码拦截爬虫和机器人实践分享

背景在很多时候咱们都会遇到验证码的多种场景,不同的产品也会应用不同的登录验证形式。 在我的项目开发中,我将KgCaptcha利用到搜寻和分页中,上面是我写的的记录。 开发过程1、页面创立一个搜寻表单 <form name="search" method="post" id="searchForm"> <input type="hidden" name="page" value="" /> <ol class="word"><input type="text" name="word" value="" maxlength="30" /></ol> <ol class="submit"><input type="submit" name="" value="" /></form>2、接入KgCaptcha <script src="captcha.js?appid=xxx"></script><script>kg.captcha({ // 绑定弹窗按钮 button: "#captchaButton", // 验证胜利事务处理 success: function (e) { // 验证胜利,间接提交表单 console.log(e); $('#kgCaptchaToken').val(e["token"]) setTimeout(() => { $('form[name=search]').submit() }, 500); }, // 验证失败事务处理 failure: function (e) { console.log(e); },});</script><a id="captchaButton" hidden>点击弹出验证窗口</a><input type="hidden" name="kgCaptchaToken" id="kgCaptchaToken" value=""/>3、弹出验证窗口按钮 将表单提交绑定到id为captchaButton的弹出验证窗口按钮,当点击搜寻,表单提交时,弹出验证窗口,待用户验证胜利显示搜寻后果。 4、分页限度 首次搜寻,须要弹出验证;第一页和第三页之后,须要弹出验证;其余不须要验证的页码,间接显示搜寻后果; if (page=='' || page=='1' || page > '3') { $('#captchaButton').click()} 5、后端代码 后端依据以后页码,对提交的kgCaptchaToken进行验证,验证通过显示搜寻后果; <?php if ($_POST['page']=='' || $_POST['page']=='1' || $_POST['page'] > '3') { include "KgCaptcha/KgCaptchaSDK.php"; // 填写你的 AppId,在利用治理中获取 $appId = "xxx"; // 填写你的 AppSecret,在利用治理中获取 $appSecret = "xxx"; $request = new kgCaptcha($appId, $appSecret); // 填写应用服务域名,在利用治理中获取 $request->appCdn = "https://cdn.kgcaptcha.com"; // 前端验证胜利后颁发的 token,有效期为两分钟 $request->token = $_POST["kgCaptchaToken"]; // 当安全策略中的防控等级为3时必须填写 $request->userId = "kgCaptchaDemo"; // 申请超时工夫,秒 $request->connectTimeout = 10; $requestResult = $request->sendRequest(); if ($requestResult->code === 0) { // 验签胜利逻辑解决 // 输入搜寻后果 ... } else { // 验签失败逻辑解决 // 失败,提醒谬误并跳转页面 msgbox("验证失败,错误信息:{$requestResult->msg}",'search.php'); return false; } } else { // 输入搜寻后果 ... }?>最初SDK开源地址:KgCaptcha (KgCaptcha) · GitHub,顺便做了一个演示:凯格行为验证码在线体验 ...

April 18, 2023 · 1 min · jiezi

关于验证码:KgCaptcha接入汇总

结尾的话最近有在用一款好玩的验证码产品,乐于摸索的我,决定从不同的语言去摸索这款验证码。 KgCaptcha反对PHP、Python、Java、C#的接入。上面是我接入过程记录中的代码。 HTML<script src="captcha.js?appid=xxx"></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><div id="captchaBox">载入中 ...</div>PHP<?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "xxx";// 填写你的 AppSecret,在利用治理中获取$appSecret = "xxx";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}Pythonfrom wsgiref.simple_server import make_serverfrom KgCaptchaSDK import KgCaptchadef start(environ, response): # 填写你的 AppId,在利用治理中获取 AppID = "xxx" # 填写你的 AppSecret,在利用治理中获取 AppSecret = "xxx" 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() if requestResult.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()Javapackage com.kyger;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.Map;public class demo extends HttpServlet { private static final long serialVersionUID = 1L; public demo() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");; response.setContentType("text/html; charset=utf-8"); // 后盾解决 if (request.getMethod().equals("POST")){ String html, appId, appSecret; // 设置 AppId 及 AppSecret,在利用治理中获取 appId = "xxx"; appSecret = "xxx"; KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret); // 前端验证胜利后颁发的 token,有效期为两分钟 KgRequest.token = request.getParameter("kgCaptchaToken"); // 填写应用服务域名,在利用治理中获取 KgRequest.appCdn = "https://cdn.kgcaptcha.com"; // 申请超时工夫,秒 KgRequest.connectTimeout = 5; // 用户登录或尝试帐号,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:request.getParameter("username"),可拦挡同一帐号屡次尝试等行为 KgRequest.userId = "kgCaptchaDemo"; // request 对象,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 KgRequest.request = request; // java 环境中无奈提供 request 对象,请别离定义:clientIp¦clientBrowser¦domain 参数,即: // 发送验证申请 Map<String, String> requestResult = KgRequest.sendRequest(); if("0".toString().equals(requestResult.get("code"))) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert(´验证通过´);history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.get("msg") + " - " + requestResult.get("code") + "\");history.back();</script>"; } response.getWriter().append(html); } else { response.sendRedirect("index.html"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}C#(csharp)using System;using KgCaptchaSDK;public partial class _Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { // 后端解决 string html, appId, appSecret, Token; if (Request.Form.ToString().Length > 0){ // 有数据处理 // 填写你的 AppId,在利用治理中获取 appId = "xxx"; // 填写你的 AppSecret,在利用治理中获取 appSecret = "xxx"; var request = new kgCaptcha(appId, appSecret); // 前端验证胜利后颁发的 token,有效期两分钟 request.token = Request.Form["kgCaptchaToken"]; // 填写应用服务域名,在利用治理中获取 request.appCdn = "https://cdn.kgcaptcha.com"; // 当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:Request.Form["username"]),可拦挡同一帐号屡次尝试等行为 request.userId = "kgCaptchaDemo"; // 申请超时工夫,秒 request.connectTimeout = 5; // 发送验证申请 var requestResult = request.sendRequest(); if (requestResult.code == 0) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert(´验证通过´);history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.msg + " - " + requestResult.code + "\");history.back();</script>"; } // 输入后果 Response.Write(html); } Response.Redirect("index.html"); }}最初SDK开源地址:KgCaptcha (KgCaptcha) · GitHub,顺便做了一个演示:凯格行为验证码在线体验 ...

April 18, 2023 · 3 min · jiezi

关于验证码:关于验证码你不知道的一些问题

结尾的话对于验证码,大家兴许会有很多疑难,上面我总结了一些常见问题。 什么是验证码?验证码(CAPTCHA)全称为:Completely Automated Public Turing test to tell Computers and Humans Apart,全自动辨别计算机和人类的图灵测试,是一种辨别用户是计算机还是人的公共全自动程序。 验证码有什么作用?联合咱们的日常生活,咱们发现验证码通常呈现在登录、注册、领优惠券、购买游戏配备、购票、发帖等场景。 验证码无效避免这种问题对某一个特定注册用户用特定程序暴力破解形式进行一直的登陆尝试,验证码很大水平上是用来判断操作是人为还是机器人。 行为验证码的原理是什么?针对用户产生的行为轨迹数据进行机器学习建模,联合拜访频率、地理位置、历史记录等多个维度信息,疾速、精确的返回人机断定后果,故而机器辨认+模仿则不易通过。 验证码的类型都有哪些?1、数字、字母、中文组合:以图片的模式展现字母、数字、中文混合组合,此类验证码个别由4位组成。 2、短信验证码:比拟常见的验证码类型,用户填好手机号码,单击获取验证码后,手机上就能收到短信验证码。 3、行为验证码:智能无感、滑动拼图、文字点选、语序点选、字体辨认、空间推理等。 怎么避免歹意刷短信验证?歹意短信验证,属于短信轰炸的一种,用户端体现为高频收到验证短信内容,用户体验差。对公司来讲,大量的歹意短信验证,减少公司经营老本,领取额定的短信经营费用。 避免这种歹意行为,形式之一是能够减少验证码校验。发送短信验证码时,可要求通过验证码。同时在验证码申请谬误时,要重置验证码,避免图片验证码辨认软件尝试屡次辨认。 前端代码: <script src="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><a id="captchaButton">点击弹出验证窗口</a>后端代码: <?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "xxx";// 填写你的 AppSecret,在利用治理中获取$appSecret = "xxx";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}最初SDK开源地址:KgCaptcha (KgCaptcha) · GitHub,顺便做了一个演示:凯格行为验证码在线体验 ...

April 17, 2023 · 1 min · jiezi

关于验证码:干货验证码的常见类型总结

前言验证码是一种辨别用户是计算机和人的公共全自动程序。简略来说,验证码就是验证操作是人还是机器。上面我就总结一下常见的验证码类型都有哪些? 数字、字母组合这种模式最为常见,也很简略。有的是独自应用这两种,也有的是数字、字母混合而成,为了进步辨认难度,有的会增加烦扰线,如在背景中增加烦扰线。 <?php// 抛弃输入缓冲区的内容 **ob_clean();// 创立画布$image = imagecreatetruecolor(110, 30);// 设置红色底$bgColor = imagecolorallocate($image, 255, 255, 255);imagefill($image, 0, 0, $bgColor);// 增加四个随机数字字母for($i=0;$i<4;$i++) { $fontSize = 6; // 随机调配色彩 $fontColor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120)); // 生成内容 $data = "abcdefghijkmnpqrstuvwxy3456789"; // 如果内容为空,从新输入1个 do { $fontCont = substr($data, rand(0, strlen($data)), 1); } while ($fontCont == ''); // 设置范畴 $x = ($i*110/4)+rand(5, 10); $y = rand(5, 10); // 图片退出数字 imagestring($image, $fontSize, $x, $y, $fontCont, $fontColor);} // 增加烦扰点元素for($j=0;$j<200;$j++) { // 点色彩 $pointColor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200)); imagesetpixel($image, rand(1, 99), rand(1, 29), $pointColor);}// 增加烦扰线元素for($z=0;$z<4;$z++) { // 生成色彩线 $lineColor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220)); imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $lineColor);}header("Content-type:image/png");// 输入图片imagepng($image);// 销毁内存中的图片imagedestroy($image);?>短信验证码随着手机的遍及,很多APP都是用手机号注册的。为了验证手机号码的真实性,避免歹意注册,通常会向手机发送验证码。网上有专门的短信发送平台,向电信运营商领取短信费用,接入即可应用。 ...

April 17, 2023 · 1 min · jiezi

关于验证码:总结Java实现短信验证码

背景Java是一种风行的编程语言,验证码是一种罕用的网络安全技术。Java倒退至今,网上也呈现了各种各样的验证码,自己初学Java,上面是我用Java实现短信验证码的总结。 截图展现 实现代码后盾接管前台的kgCaptchaToken进行验证,验证胜利执行胜利解决,验证失败返回错误代码及信息。 package com.kyger;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServlet;import jakarta.servlet.http.HttpServletRequest;import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.Map;public class demo extends HttpServlet { private static final long serialVersionUID = 1L; public demo() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");; response.setContentType("text/html; charset=utf-8"); // 后盾解决 if (request.getMethod().equals("POST")){ String html, appId, appSecret, Token; // 设置 AppId 及 AppSecret,在利用治理中获取 appId = "appId"; appSecret = "appSecret"; // 填写你的 AppId 和 AppSecret,在利用治理中获取 KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret); // 前端验证胜利后颁发的 token,有效期为两分钟 KgRequest.token = request.getParameter("kgCaptchaToken"); // System.out.print(KgRequest.token); // 填写应用服务域名,在利用治理中获取 KgRequest.appCdn = "https://cdn.kgcaptcha.com"; // 申请超时工夫,秒 KgRequest.connectTimeout = 5; // 用户登录或尝试帐号,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 // 能够填写用户输出的登录帐号(如:request.getParameter("username"),可拦挡同一帐号屡次尝试等行为 KgRequest.userId = "kgCaptchaDemo"; // request 对象,当安全策略中的防控等级为3时必须填写,个别状况下能够疏忽 KgRequest.request = request; // java 环境中无奈提供 request 对象,请别离定义:clientIp|clientBrowser|domain 参数,即: // KgRequest.clientIp = "127.0.0.1"; // 填写客户端IP // KgRequest.clientBrowser = ""; // 客户端浏览器信息 // KgRequest.domain = "http://localhost"; // 你的受权域名或服务IP // 发送验证申请 Map<String, String> requestResult = KgRequest.sendRequest(); if("0".toString().equals(requestResult.get("code"))) { // 验签胜利逻辑解决 *** // 这里做验证通过后的数据处理 // 如登录/注册场景,这里通常查询数据库、校验明码、进行登录或注册等动作解决 // 如短信场景,这里能够开始向用户发送短信等动作解决 // ... html = "<script>alert('验证通过');history.back();</script>"; } else { // 验签失败逻辑解决 html = "<script>alert(\"" + requestResult.get("msg") + " - " + requestResult.get("code") + "\");history.back();</script>"; } response.getWriter().append(html); } else { response.sendRedirect("index.html"); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}后端检测后盾接收数据,同时对起源及利用进行检测。 ...

March 31, 2023 · 2 min · jiezi

关于验证码:验证码防薅羊毛技术的解读

薅羊毛这三个字大家都十分相熟了,典故出自 1999 央视春晚小品《昨天 明天 今天》中的“薅社会主义羊毛”。 而当初的薅羊毛次要产生在互联网上,尤其集中在电商平台、P2P网贷平台等。 无利不起早,正是因为这些平台有显著的利益可图,很多网站和商家对羊毛党的行为都很苦楚,同时又感觉很羊毛党神秘,如同羊毛党有什么深不可测的技术,有力抵制。 所以本文的目标就是在网站上,如何杜绝羊毛党的薅羊毛行为。 我要介绍的办法之一就是接入验证码—— KgCaptcha 行为式验证码,颠覆传统辨认验证码。基于生物行为特色即剖析验证中的行为轨迹来区别人与机器程序,用户只须要拖动滑块实现验证即可。 行为式验证码的诞生将验证码推向改革,更好的用户体验和安全性使其成为利用最为宽泛的验证。很多网站开始效仿行为式验证码拖动滑块的模式,相继开发了本人的滑动验证码。 平安验证的同时,升高用户的操作难度。行为验证创始的全新无感验证,在一点即过的背地有着弱小AI和宏大的数据,通过学习人类的行为形式,辨别人与机器的区别。验证不仅仅是答案,更重要的是过程。 其实验证码的诞生是很了不起的一件事件,你看见它只是一个小小的验证码,厌恶的家伙,你看不见它已经如何四两拨千斤,在网络中抵御着黑产的千军万马。 然而,你看不见它,并不代表着没有,更加繁冗简单的零碎藏匿在简略的表面之下,以期可能润物而无声。 验证码曾经不再是当年的那个丑八怪,它成为了更好的本人。 相干链接SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

March 13, 2023 · 1 min · jiezi

关于验证码:一个非常好的行为验证码项目

我的项目介绍KgCaptcha 联合了设施指纹、行为特色、拜访频率、地理位置等多项技术,无效的拦挡歹意登录、批量注册,阻断机器操作,拦挡非正常用户。较传统验证码相比,用户无需再通过思考或输出操作,只需微微一滑即可进行验证。 通过智能甄别为失常的用户,在肯定工夫内无需再进行滑动操作,既为企业提供了平安保障也让用户无感知通过,极大晋升用户体验。 成果展现 交互流程 接入示例前端成果调用代码 <script src="https://cdn.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><div id="captchaBox">载入中 ...</div>后端验签示例代码(以PHP为例) <?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "94dATYQa";// 填写你的 AppSecret,在利用治理中获取$appSecret = "6u2BhEgORjQPkO1c69mpg2z5lLTLHf6a";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}最初KgCaptcha超级丑陋,简略,品种也非常丰盛,而且反对多种接入形式,举荐给各位小伙伴! ...

March 13, 2023 · 1 min · jiezi

关于验证码:验证码在各行各业的应用竟然这么广泛

随着市场需求逐步变大,验证码平台越来越多,其利用范畴不断扩大,所笼罩的业务范围也逐步宽泛,在不同工作环境下不同单位需要对应的利用场景也不同。小编为大家介绍一下吧!营销平安连锁店发展线上营销流动,后果收集到大量机器注册虚伪用户信息并支付了优惠礼品,导致流动资金被白白耗费。 部署KgCaptcha后,流动网站的新增注册用户中,虚伪注册量升高 91%,营销成果更加精准。 账户平安银行利用后盾零碎检测到大量撞库、暴力破解、垃圾注册等呈现、弱口令嗅探和短信验证码接口滥刷。 部署KgCaptcha后,利用一周内拦挡仿冒登录、撞库、暴力破解数十万次,账户安全性进一步晋升。 防信息盗用公司继续遭逢到歹意网络爬虫的攻打,B2C网站和App的航班信息遭疯狂盗用。不仅造成航班信息泄露,更耗费航空查问费用和航空公司带宽资源。 部署KgCaptcha后,99.3%的歹意爬虫申请被间接拦挡,每年节俭89%的查问资源,用户拜访效率进步10倍以上,用户体验满意度回升 防爬虫热门论坛网站频繁受到歹意网络爬虫,大量原创文章和优质视频内容被盗取盗用,知识产权得不到保障,给企业带来微小经济损失。 部署KgCaptcha后,98%的歹意爬虫被拦挡,文章和视频内容失去良好爱护,被盗用状况逐步打消。 适老化体验银行一直收到用户投诉,因为无奈失常输出、拖动验证码,造成大量用户(尤其是老年人)理财购买失败、转账汇款不胜利。 部署KgCaptcha后,平安用户,免验证即可通过;对于异样用户,进行二次验证或间接拦挡。既保障平安,又晋升操作体验,实在用户无奈操作验证码的问题隐没,用户好感度晋升。 相干链接SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

March 13, 2023 · 1 min · jiezi

关于验证码:图形验证码水印Logo修改

前言还在苦恼怎么让你的验证码显示Logo吗,KgCaptcha 这个验证码产品,你能够得心应手地设置你想要的Logo图片、链接地址、地位等。上面我就给大家介绍一下如何设置吧? 01 水印Logo透明度设置水印Logo透明度,范畴:0-1之间小数,设置0时将不显示。 设置成果如下: 02 图片水印Logo设置底图水印Logo,最佳规格:75x15px。 设置成果如下: 03 Logo 链接URL设置验证码中Logo点击跳转到的链接地址,为空时无链接。 设置成果如下: 04 水印Logo地位设置水印Logo地位,可抉择左上/右上/左下/右下,并填写偏移值。 左上角 右上角 左下角 右下角 相干链接SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

March 10, 2023 · 1 min · jiezi

关于验证码:图形验证码图片样式设置

前言在一次我的项目开发中,须要对滑动拼图验证码的宽高、拼图缺口、滑块等款式进行自定义设置,于是我找啊找,终于让我找到了 KgCaptcha,用户能够本人设置验证码尺寸、外框、缺口款式、滑块等。上面就由我来介绍一下如何设置吧! 01 图片宽度验证码的图片宽度,必须与滑动框同步宽度、同步批改,单位 px。 成果如下: 02 图片高度验证码的底图高度,单位 px。 成果如下: 03 图片圆角边框设置底图边框圆角,单位 px 成果如下: 04 小方块旋转角度验证码拼图缺口的旋转角度——不旋转 / 正角旋转 / 随机角度 正角旋转:45|90|180|360 度旋转,图案比拟好看,体验度好 随机角度:随机旋转,体验个别,防御力较强 05 小方块透明度设置拼图小方块透明度,范畴0-1 设置成果如下: 06 小方块形态一般模式:拼图小方块应用规范形态 随机模式:拼图小方块应用随机形态 07 拼图容错值设置拼图容错范畴,单位 px 设置成果如下: 相干链接SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

March 10, 2023 · 1 min · jiezi

关于验证码:行为验证码安全策略设置

前言在验证码我的项目中,都会遇到验证码被歹意大量高频的调用,给服务造成很多有效的注册或登录,占用大量的系统资源。 而我在想,有没有哪一款验证码产品能够设置黑/白名单限度IP拜访和设置风控异样呢?答案是:有,大海茫茫中让我找到了 KgCaptcha,接下来我就给大家讲讲怎么设置吧! 无感验证开启:当用户通过验证后,再次拜访时,无需验证,间接通过。 敞开:用户每次都需手动验证。 当无感验证开启,验证码显示如下: 局部代码片段 def sense_verify(self): """ 检测以后用户是否为无感免验证用户 """ # 以后利用是否开启无感验证性能 if self.auth.data["sense"] != 1: return 0, self.auth.lang[0] # 反对客户端调时敞开无感验证:$_GET["sence"] = 1 敞开、默认为 0 即开启 <script src="captcha.js?&sence=1"></script> if self.kg["GET"].get("sence", "ON") == "OFF": return 40004, self.auth.lang[40004] # 客户端环境是否反对无感验证,无奈获取/写入客户端 COOKIE if len(str(self.auth.cid)) != 32 or not self.auth.ip: return 40000, self.auth.lang[40000] ....IP限度(黑/白名单)黑名单模式:禁止以下IP拜访 白名单模式:只容许以下IP拜访 通过抉择黑/白名单,填写IP列表来限度指定IP拜访验证码。 当访问者IP在黑名单列表里,验证码显示如下: 相同,当访问者IP在白名单列表里,验证码失常显示: 局部代码片段 # 客户端IP检测 ip_list = self.auth.ip_list() if ip_list == 1: message = "%s : %s" % (self.auth.lang[40010], self.kg["HTTP_ADDR"]) if ip_list == 2: message = "%s : %s" % (self.auth.lang[40011], self.kg["HTTP_ADDR"])# 服务器黑名单检测if self.auth.client_blacklist(): message = self.auth.lang[40020] # 服务器黑名单风控异样设置一级:实用于开发调试及对平安要求个别的利用 ...

March 10, 2023 · 1 min · jiezi

关于验证码:图形验证码

一、图形验证码是什么?图形验证码是一些没有规定的图文的组合,参考下图 二、图形验证码有什么用?避免歹意攻击者采纳歹意工具批量注册账号或大量频繁调用某些申请,给服务器造成压力,占用大量的系统资源。 三、图形验证码怎么实现?后盾代码 <?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在利用治理中获取$appId = "94dATYQa";// 填写你的 AppSecret,在利用治理中获取$appSecret = "6u2BhEgORjQPkO1c69mpg2z5lLTLHf6a";$request = new kgCaptcha($appId, $appSecret);// 填写应用服务域名,在利用治理中获取$request->appCdn = "https://cdn.kgcaptcha.com";// 前端验证胜利后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 申请超时工夫,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签胜利逻辑解决 echo "验证通过";} else { // 验签失败逻辑解决 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";}前端代码 <script src="https://cdn.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><div id="captchaBox">载入中 ...</div> ...

March 10, 2023 · 1 min · jiezi

关于验证码:滑动拼图行为验证码KgCaptcha快速入门

凯格行为验证码 - 滑动拼图验证码 行为验证码采纳嵌入式集成形式,接入不便,平安,高效。摈弃了传统字符型验证码展现-填写字符-比对答案的流程,采纳验证码展现-采集用户行为-剖析用户行为流程,用户只须要产生指定的行为轨迹,不须要键盘手动输出,极大优化了传统验证码用户体验不佳的问题;同时,疾速、精确地返回人机断定后果。 Web接入环境要求兼容IE9+,Chrome,Firefox,360浏览器,QQ浏览器等支流浏览器。 获取appId请先进入KgCaptcha控制台(或点击右上角控制台按钮)中的“利用治理”或“利用配置”模块,并下图指引地位找到appId。 示例代码以下列举 Javascript 接入示例代码: 假如页面上有一个 <div id="captchaBox"></div>,则能够像上面这样初始化验证码。 <script src="https://cdn.kgcaptcha.com/captcha.js?appid=xxx"></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><div id="captchaBox"></div>格调设置进入KgCaptcha 控制台设置款式: KgCaptcha 相干链接SDK开源地址:https://github.com/KgCaptcha,顺便做了一个演示:https://www.kgcaptcha.com/demo/

March 10, 2023 · 1 min · jiezi

关于验证码:非常不错的国内国外在线免费短信接收平台

当初不论是注册什么平台,还是应用一些APP,都会要求实名制,接下来就会收到一些莫名其妙的骚扰电话,十分让人厌恶,通过偶尔的机会,我得悉了一种能够在线接管短信并注册app的形式,能够不必应用本人的手机号就能够打到注册的目标。 在偶尔的机会下,我应用google搜寻 云短信 赫然失去了一大批后果,我随机点击一个进去,看到了很多号码,在花了2分钟工夫浏览应用帮忙当前,我尝试着本人注册一下 抖音APP,点击了一个短信较少的手机号码当前,我在app上输出了该手机号,而后在页面上等了一会儿,刷新了一下网页,我震惊的发现抖音的注册验证码呈现了,而后我立刻注册了一番,体验还算不错。 接着我想看看能不能注册一个微信小号,又尝试应用了该号码,却迟迟不来短信,可能是被封了把,在尝试了5-6个号码当前也是终于注册胜利了。在此分享一下我的经验,谢谢大家。 ===== 很多网友私信我用的什么平台:我贴在上面了哈 https://smswudi.com

July 10, 2022 · 1 min · jiezi

关于验证码:如何优雅的破解HCaptcha验证码

HCaptcha介绍HCaptcha是国外出名的验证码服务商,其次要性能就是为网站提供验证码服务,防止网站被歹意爬虫肆意爬取信息。相比于HCaptcha,大家可能更加相熟Google reCaptcha(Google提供的验证码服务),但因为某些起因,国内是无奈应用Google reCaptcha的,所以HCaptcha便成为少数国际型网站更优的一个抉择。 本文会介绍一种优雅的形式来冲破HCaptcha验证码,在介绍冲破形式前,先简略介绍与体验一下HCaptch。 HCaptcha的交互模式如下,首先咱们须要点击复选框,如下图: 点咱们点击复选框时,验证码会先通过其危险剖析引擎判断以后用户的危险,如果是低危险用户,便能够间接通过,反之,验证码会弹出对话框,让你答复对话框中的问题,如下图: HCaptcha验证码会给你一个问题,比方上图的问题是【请点击每张蕴含火车的图片】,咱们须要从上面的九张图中抉择出含有火车的图片,如果九张图片中,没有火车,则点击【跳过】按钮,如果有,则将所有带有火车的图片都抉择上,跳过按钮会变成【查看】按钮,如下图: 通过验证后,便会呈现如下后果: 体验HCaptcha为了防止历史数据的影响,倡议应用Chrome的无痕模式来拜访该网站,如下图所示: 点击图中的HCaptcha,便能够体验HCaptcha验证码的残缺流程了。 至此,HCaptcha的大体状况咱们曾经相熟了,那么咱们要怎么冲破该验证码呢?当然是应用机器学习相干的技术啦,上面咱们介绍一款简略好用的平台。 解决方案对于HCaptcha验证码,咱们能够应用YesCaptcha服务来破解,该服务应用起来非常简单,通过邮箱注册一个账户。 YesCaptcha不止反对HCaptcha,还反对Google reCaptcha V2/V3版本的破解,这里咱们先关注其对HCaptch的破解。 注册完YesCaptcha后,会取得一个clientKey,基于该clientKey便能够应用YesCaptcha提供的破解服务了。 对于HCaptcha相干破解,须要在YesCaptcha中创立破解验证码服务的API。 浏览文档后,发现只须要构建出上面表格中的参数并申请创立工作的API,便能够实现验证码的破解了。 属性类型必须阐明typestring是HCaptchaClassification 10 点数querieslist[string]是Base64 编码的图片,不要蕴含 "data:image/*;base64,"以列表模式拼合1到9张图片:[base64, base64,base64,……] questionString是问题 ID, 请查表,反对中英文,其余语言请自行转换代码实现通过文档可知,咱们须要HCaptcha验证码九宫格中图片对应的Base64以及验证码中的问题,通过Chrome的Network可知,HCaptcha取得验证码图片,该接口会返回JSON格局的数据,其中就蕴含了验证码的问题以及九宫格中的图片,如下图所示: 通过Selenium自动化浏览器,取得上图所示的数据,随后配合requests库和base64库,将图片转为相应的base64编码,具体代码如下: headers = {    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36'}def get_as_base64(url):    return base64.b64encode(requests.get(url).content)def get_captcha_image_base64(data):    image_result = []    for d in data:        img_base64 = get_as_base64(d['datapoint_uri'])        img_base64 = img_base64.decode('utf-8')        image_result.append({            'url': d['datapoint_uri'],            'task_key': d['task_key'],            'base64': img_base64        })    return image_result有了验证码九宫格图片对于的base64后,联合取得的问题,便能够申请YesCaptcha创立破解工作的服务了,代码如下: def create_task(question, queries):    url = 'https://api.yescaptcha.com/createTask'    data = {        "clientKey": clientKey,        "task": {            "type": "HCaptchaClassification",            "question": question,            "queries": queries,        }    }    r = requests.post(url, json=data, timeout=60)    return r.json()将上述代码整合起来,便可失去一个残缺的流程: if __name__ == '__main__':    with open('data.json', encoding='utf8') as f:        data = f.read()    data = json.loads(data)    question = data.get('requester_question', {}).get('zh')    tasklist = data.get('tasklist')    images = get_captcha_image_base64(tasklist)    queries = [d['base64'] for d in images]    result = create_task(question=question, queries=queries)    pprint.pprint(result)以下图为例,通过上述代码进行破解。 运行上述代码后,取得后果如下: {'errorCode': '', 'errorId': 0, 'solution': {'objects': [True,                          True,                          True,                          True,                          False,                          False,                          True,                          True,                          True]}, 'status': 'ready', 'taskId': '13463c20-d031-11ec-b16d-c664134fc872'}其中solution便是此次破解工作的后果,它的程序与你申请时queries参数的程序统一,基于solution的后果,利用Selenium便可实现相应的点击操作,如下图所示 点击【查看】按钮,实现HCaptcha验证码的破解 因为本文侧重于如何破解HCaptcha,所以没花篇幅探讨如何应用Selenium去自动化浏览器取得数据,但这个内容非常简单,网上相干内容也比拟多,就不破费笔墨介绍了。 最近整顿了一套编程学习材料分享给大家,全是干货内容,蕴含教程视频、电子书、源码笔记、学习路线图、实战我的项目、面试题等等,关注gzh【Python编程学习圈】就能收费获取,回复关键词【学习材料】即可,抓紧时间吧!

May 29, 2022 · 1 min · jiezi

关于验证码:验证码CAPTCHA的演变史

验证码作为人机交互界面经常出现的要害因素,是身份核验、危险防备的重要部件,也是用户交互体验的第一关口,广泛应用在视频、教育、金融、电商、航旅、互联网、公共服务等行业的网站和App上。 验证码的全名是“全自动辨别计算机和人类的图灵测试”,利用“人类能够用肉眼轻易辨认图片里的文字信息”,以辨别出操作者的真伪,在注册、登录、交易等各类场景中施展着巨大作用。可能避免操作者利用机器软件程序化的垃圾注册、仿冒登录、盗取信息、虚伪支付福利、虚伪兑换奖品、破解账户明码等,从而保障企业资金平安、营销平安和信息安全。 验证码已诞生20年 验证码诞生于20年前。2002年,路易斯·冯·安(Luis von Ahn)斯和他的小伙伴在卡内基梅隆第一次提出了“验证码(CAPTCHA)”这样一个程序概念。该程序基于重要假如:提出的问题要容易被人类解答,并且让机器无奈解答。 晚期的验证码就是网站提出一些问题,随着平安防护与破解入侵两方面的抗衡日益降级,验证码的难度在减少,模式也在多样化。从简略的字母数字、算术题,到扭曲的字符、含糊的图片,这些被归类为知识性验证码。从第三代的验证码开始,已开始向无知识型进化,操作者只须要点击或拖动滑条就实现验证。而第四代验证码,甚至不须要任何操作,就可能主动实现验证,良好解决平安和体验的矛盾。 第一代验证码:图文展现类 第一代验证码的外围是图文辨认的判断。操作者只须要辨认扭曲、含糊、混同的图文,并输出正确的内容即通过验证。 第一代验证码设计简略、展示清晰,然而随着技术倒退,很容易被攻击者破解。网上搜寻“验证码破解”,有几十万条相干的内容。 2018年12月,西北大学颁布一项钻研后果,“文本验证码”存在微小安全漏洞,人工智能技术最快0.05秒内可破解。团队基于最新的人工智能技术,建设了一套新型验证码求解器,可轻松破解热门网站的文本验证码,包含谷歌、eBay、微软、维基百科、淘宝、百度、腾讯、京东等网站,破解率超过50%。 验证码的设立很大水平上是为了反抗高频的暴力破解,阻挡好人的自动机防御的步调,所以验证码本身的安全性十分必要的。 第二代验证码:常识问答类 第二代验证码的外围是对相干问题的计算或判断。操作者计算或判断展现的各类问题、异类选项,并抉择后输出正确答案即通过验证。 第二代验证码的展现的内容比较复杂,可能无效避免惯例的惯例的暴力破解。然而也是因为验证码设计简单,导致操作应用不便。不仅影响失常操作与体验,更耗费操作者工夫,由此被用户疯狂吐槽。 第二代验证码过于强调验证码的安全性,导致验证越来越简单,从而重大影响了失常用户的利用体验。 第三代验证码:行为轨迹类 第三代验证码的外围是行为轨迹的辨认与操作。操作者依照需要,通过拖动、点击、拼接等形式,将图文残缺合成或挪动到指定地位即通过验证。 第三代验证码补救了此前两代验证码的有余,展现的内容简略,验证又很简单。因为强调操作者的入手能力,防止动态展现内容屡遭解的问题。不过,因为操作灵敏度和精细化的要求,对老年人的视觉和操作要求比拟高,很容易操作失误,导致流程中断或退出。 既平安又易用,孰前孰后?这不仅是技术人员翻新的需要,也是经营人员须要均衡的事实问题。企业需要一种可能可能满足平安验证需要,晋升操作体验,节俭操作者工夫,更满足老年人操作习惯的验证码。 第四代验证码:智能验证类 第四代验证码的外围是不再依赖繁多维度进行验证,而是依据操作者环境进行智能剖析与综合判断。操作者进入服务后,验证码首先对设施、行为、频率、网络环境等综合剖析,而后给出综合后果断定,如果断定是非法用户则免验证,间接放行;如果断定为异样用户,则依据危险呈现相应验证内容,要求操作者进行二次验证。 第四代验证码重点解决后面三代验证码有余。通过一直进步免验群体,免去失常用户分别验证码、操作验证码的苦恼,大大晋升用户体验;通过数据分析和人工智能判断,升高验证码遭破解的可能,持续保障业务的平安爱护能力。 第四代验证码尽管不能齐全做到全副免验证,但最大限度升高了用户被打搅的可能性,实现了易用性与安全性的均衡,让鱼与熊掌兼得。

April 26, 2022 · 1 min · jiezi

关于验证码:拥有11种验证方式的无感验证

验证码“作为人机交互界面经常出现的元素,其本质是为了避免用户利用机器人程序主动注册、登录、歹意投票、发送垃圾邮件、歹意尝试明码等登陆尝试,保障网络安全。” 据统计,寰球所有人每天须要填写2亿个验证码。而输出一次验证码大略10秒,那全人类每天在验证码上破费50多万个小时。顶象智能无感验证,11种验证形式不仅省钱还能够省时。 技术推动验证码一直改革2000年之前,验证码并不存在。随着垃圾邮件、批量评论、歹意信息以及脚本的呈现,过后最大的电子邮箱和新闻网站雅虎深受其害,于是分割到了卡内基梅隆大学的计算机科学系来寻求帮忙,心愿可能“无效分清真人用户和机器”。 卡内基梅隆大学一名21岁的学生路易斯·冯·安恩(Luis Von Ahn)针对这个目标有了思路:要让注册的用户提供“证据”来证实本人是一个人类,例如做一些只有人类能做,而机器做不到的事件。什么事件是在过后只有人类能做而机器做不到的?答案是浏览图片。人类能够很轻松的读出图片中的信息,但过后的机器并没有这样的能力。如果通过程序来提供一些稍加扭曲的图片,而后让注册者答复图片中的内容,便能很轻易地将机器拒之门外。 这正是即便在当初咱们也很常看到的验证码模式之一。 2002年左右,这名学生路易斯·冯·安恩创造了验证码这一概念,他将其命名为CAPTCHA。 CAPTCHA是Completely Automated Public Turing test to tell Computers and Humans Apart的简写,意为“全自动辨别计算机和人类的图灵测试”。也是从这一刻开始,一场继续数十年的,人与机器之间,围绕着图灵测试的反抗也开始了。 晚期的验证码就是网站提出一些图文,随着平安防护与破解入侵两方面的抗衡日益降级,验证码的难度在减少,模式也在多样化。从简略的字母数字、算术题,到扭曲的字符、含糊的图片。 随着人工智能技术的倒退,特地是大数据推动下的人工智能技术的倒退,曾经使得机器的感知能力达到甚至超过了人类的程度,这个技术趋势的间接后果就是基于感知能力的人机验证的形式未然生效。机器在某些方面的感知能力方面曾经达到甚至超过了人类程度。比方微软在图像识别方面的准确率达到 96.43%,高于人类 94.9%的辨认度。攻击者在利用人工智能技术自动化破解验证码,由此给企业带来新的危险挑战。 验证码的设立很大水平上是为了反抗高频的暴力破解,阻挡非法的操作,所以验证码本身的安全性十分必要的。以顶象无感验证为代表的产品,充分考虑了验证码安全性和操作便捷性需要,不再依赖繁多维度进行验证,而是依据操作者环境进行智能剖析与综合判断,不仅保障验证码的安全性,更晋升了用户的体验,实现了易用性与安全性的均衡。 无感验证的11种验证形式顶象无感验证反对Android、iOS、Web(H5)、微信小程序等,满足业务多平台须要。通过数据分析和人工智能判断,升高验证码遭破解的可能,保障业务的平安;通过进步免验群体,免去失常用户分别验证码、操作验证码的苦恼,晋升用户体验。 当操作者进入服务后,顶象无感验证首先对设施、行为、频率、网络环境等综合剖析,而后给出综合后果断定,如果断定是非法用户则免验证,间接放行;如果断定为异样用户,则依据危险呈现相应验证内容,要求操作者进行二次验证。 具体来看,顶象无感验证领有11种验证形式 智能随机验证: 依据操作者可疑水平,调用对应难度的验证形式。平安用户无感知通过,晋升体验,升高散失。 滑动拼图验证: 智能人机辨认,微微一滑即可实现验证。 文字点选验证: 平安用户依序点击文字即可实现验证。 图标点选验证: 依照指定程序点击正确的图标,即可实现验证。 语序点选验证: 需依照常用语的程序点击正确的文字,即可实现验证。 刮刮卡验证: 需刮开残缺指定图案,即可可通过验证。 空间语义验证: 需依照提示信息点击正确的内容,即可实现验证。 乱序拼图验证: 需拖动图块将乱序的图片还原为正确,即可实现验证。 旋转验证: 拖动图块将图片旋转还原为正确,即可实现验证。 面积验证: 需点击面积最大的区域,即可实现验证。 差别点击验证: 需点击与其余同类型具备差别的文字或图案,即可实现验证。 验证码常见的四类利用场景随着通信行业以及智能化时代的倒退,挪动利用正在出现爆发式增长。而依据中国互联网络信息中心公布的第四十八次《中国互联网络倒退情况统计报告》显示,截至往年6月,我国网民规模达10.11亿。“验证码”被广泛应用在挪动社交、挪动领取以及日常生活类、工具类等各种挪动利用及互联网产品中,不仅用于注册、登录,还是账户平安、数据保护的关键技术,是身份核验、危险防控的第一关口。 账号爱护: 验证码可能无效抵挡自动机歹意注册(如利用注册机批量注册小号),防备机器注册、垃圾注册、抵挡撞库登录、暴力破解、验证账号敏感信息的批改,保障失常用户的注册、登录。 某银行企业网银此前频繁受到歹意网络爬虫,试图爬取网银隐衷信息和重要数据。部署顶象智能无感验证码后,批量登陆、机器登陆升高 67%,安全性进一步加强。 营销反欺诈: 营销流动是企业重要的经营伎俩。“羊毛党”频繁刷取处分,导致实在用户无奈获取处分,业务方经营流动成果降落、经济利益受损。顶象无感验证实用于抢购、秒杀、优惠券等流动场景,无效抵挡“羊毛党”疯抢本来属于用户的福利和优惠,保障营销流动价值。 例如,某电商遭逢到羊毛党和垃圾注册骚扰,部署顶象无感验证后,不仅反对多个不同场景的对立风控接入和动静拓展,并可能依据客户需要为客户布局自动化建模,进步危险辨认成果。 避免刷帖刷票: 歹意用户用小号在 UGC 社区歹意发帖、刷票,使经营方无奈取得实在用户反馈,影响流动发展。顶象无感验证用于论坛、投票等场景,无效抵挡自动机刷赞和水军刷帖,解决批量垃圾内容、广告导流、批量刷榜单、投票、点赞、歹意爬取外围数据与内容。 某投票服务托管平台,为了解决扰乱失常经营秩序的“刷票”问题,始终在寻找和调优平台防刷票伎俩。通过顶象无感验证码业余的防刷票解决方案,无效避免不良投票、刷票、薅羊毛景象的呈现,最大限度的保障平台流动的偏心公正,保障营销流动衰弱运行和客户体验。 避免数据泄露: 文章、图片、音频、视频、报告、课件、商品、评估、用户信息等数据是企业重要资产,网络爬虫的爬取盗用,不仅造成信息泄露,更给企业微小业务损失。验证码可能无效防备网络爬虫的歹意爬取行为,保障企业数字平安。 在某高流量内容平台,短时间内被上传大量垃圾广告,更有甚者借此流传黄赌毒等有害信息。依靠顶象无感验证码,该内容平台无效拦挡各类垃圾广告和违禁信息的公布。 除此外,顶象无感验证还能够用于避免电商刷单炒信、避免虚伪账户注册、避免航空机票虚伪占座、避免水军刷榜刷评论等利用场景,无效预防各类欺诈行为,保障企业的业务平安。 ...

April 11, 2022 · 1 min · jiezi

关于验证码:在茅台集团新发布的电商App上抢茅台酒-体验线上线下的业务安全服务

3月28日,茅台官网发表电商平台“i茅台”将于3月31日正式上线,自即日起可进行下载。 3月29日,茅台电商平台“i茅台”App登陆苹果App Store当天就冲上收费下载榜第一名,即下载量最高、热度最高。 3月31日,茅台电商平台“i茅台”App正式开始申购。 上午9点至10点,实名认证的账号,能够在“i茅台”App上申购1款商品,在确认申购胜利后,将取得一个提货码,而后到指定线下门店提货即可。 目前,“i茅台”上提供申购商品只有4款,别离为:53度500ml贵州茅台酒(壬寅虎年)、53度500ml茅台1935、53度375ml*2(壬寅虎年)、53度500ml贵州茅台酒(珍品)。 不过,“i茅台”不提供53度飞天茅台的申购,消费者能够通过“i茅台”内嵌的页面间接跳转至第三方电商平台进行申购。 社交平台上有数网友示意,筹备通过“i茅台”去抢茅台酒。暗藏在黑灰产也在蠢蠢欲动。消费者是否能抢到商品呢?“i茅台”在防备黑灰产上做了哪些措施呢? 亲自体验,在“i茅台”买茅台酒数字化、新批发是茅台营销改革的重要一环。“i茅台”是茅台打造数字化营销平台的重要体现,也非常重视业务平安。 注册环节。消费者须要填写手机号、姓名(与身份证统一)、身份证号码。通过实名认证后,身份证号码不能批改。 “i茅台”未提供账号密码设置,也不提供明码批改,通过手机短信验证码实现登录。 在多重验证成为支流的情景下,“i茅台”将短信验证码作为惟一伎俩略显薄弱。倡议减少集行为、环境、设施等辨认的网络验证码(如,顶象无感验证),以进一步晋升注册、登录安全性,防备机器程序注册登录等。 账号治理。“i茅台”的账号治理只提供了一个选项“登记账号”,不提供账户名、用户名和手机号的批改。由此能够避免虚伪注册、申购后更换身份等状况的产生。 在线申购。第一步,抉择商品。目前“i茅台”提供了53度500ml贵州茅台酒(壬寅虎年)、53度500ml茅台1935、53度375ml*2(壬寅虎年)、53度500ml贵州茅台酒(珍品)4款酒供申购。每天上午9点-10点,通过“i茅台”实名认证的消费者能够间接进行申购,不过,每一场每个种类只可能申购一次。 第二步,开启定位。申购前,“i茅台”首先申请开启手机定位受权,通过地理位置确定商品提货范畴,优化配送和供应,同时也避免代理IP、近程操作等异样行为。 第三步,抉择门店。基于手机的LBS定位,“i茅台”列出以后市级区域的门店、间隔、定位、投放量。申购并不能代表肯定能胜利,申购失败率比拟大。据理解,申购的先后顺序与成功率无关联。 申购实现零碎弹窗提醒“申购实现,请于今日18:00查看预约申购后果”。点击“查看详情”按钮,能够看到申购的商品、提货门店地址、门店定位、申购人信息等。 第四步,后果公示。18点之后,颁布今日申购后果。不出所料,三款酒全副申购失败。 点开其中一个申购单的“后果公示”,底部列出申购成功者的局部信息以及抉择门店当日投放数量与申购数量:投放6瓶,7232人申购,比率为1:1205,能够说相当炽热。 “后果公示”中同时列出该款酒今日全国投放量。全国今日投放3526瓶,有140万2254人通过“i茅台”申购该款酒。 第五步,领取。有门店领取和线上领取两种,抉择线上领取形式后,不能更改为门店领取。不过抉择线上领取后,能够更换为不同的线上领取渠道。 通过申购流程的体验发现,“i茅台”的业务安全措施绝对紧密,不仅应用了大量业务平安技术,还有多轮的线下真人核验,可能无效防备虚伪注册、薅羊毛等常见业务危险。当然,业务平安防护上还有更多晋升空间。 黑灰产又看到“新商机”“i茅台”暂不提供53度飞天茅台的申购,然而能够通过“i茅台”内嵌的页面间接跳转至第三方平台。点击相干电商平台前面的“去参加”按钮,主动跳转调用相干电商平台App。如果手机未下载相干电商App,则提醒须要下载。 第三方平台的退出让更多消费者购买到茅台酒,加重“i茅台”业务平安压力,是一种兼顾多重的经营策略。黑灰产却发现一种新的赚钱形式——代抢购。 2020年底,53度飞天茅台在多个电商平台大量上架。同时,某网购平台呈现大量“茅台代抢服务”,消费者花几百元就可能参加。 顶象业务平安专家剖析发现,“茅台代抢服务”其实是黑灰产团伙用来进行批量薅羊毛的工具。该工具集成破解性能,能破解各电商平台下单协定,绕过图片验证码,主动更换IP地址,伪造设施编号等。 消费者拍下服务后,须要提交电商平台账户明码。黑灰产将消费者的电商账号密码等信息填写工具里,设置好运行工夫,抉择和平台和抢购商品,电商平台开售后,软件即主动代替消费者抢购。 电商平台的抢购须要拼速度。人抢购商品靠的是神经反馈,而软件自动化运行速度远远超过人的操作,因而抢购成功率高于一般消费者。

April 1, 2022 · 1 min · jiezi

关于验证码:老龄化社会免验的验证码更重要

CNNIC第48次《中国互联网络倒退情况统计报告》显示,截至2021年6月,60岁及以上网民占比为12.2%,较2020年6月增长1.9个百分点。随着老年群体规模的不断扩大,其在网民中所占比例将进一步提高。网民的增长主体由青年群体向未成年和老年群体转化的趋势日益显著。 一方面,越来越多老年人退出网民大军,享受数字业务带来的生存便当;另一方面,越来越多的公共服务从线下搬到线上,对老年人无障碍纯熟应用提出更高要求。帮忙老人逾越“数字鸿沟”是紧迫且要害的须要。 验证码成老年人应用数字金融服务的拦路虎验证码作为人机交互界面经常出现的要害因素,是身份核验、防备危险的重要组成,也是用户交互体验的第一关口,广泛应用电子银行、网上银行、手机银行上。而后因为很多验证码图文字体小、辨认简单、操作不不便、频繁弹出等成为老年人应用数字金融服务的第一道拦路虎。 日前公布的《验证码“适老化”白皮书》系统分析了验证码给老人带来的三重困扰: 1、图文字体小、操作不不便:多验证码是歪斜的字母汉字、简单的图形、转瞬即变内容,老年人看不清、记不住,常常而且无奈拖到指定地位、无奈点中指标区域。 2、设计简单,辨认艰巨:为了避免被机器绕过或破解,很多平台和服务采纳了非常复杂的验证码。以12306为例,截止2015年底,12306上的图形验证码多达靠近600种。再通过排列组合,总共有多达300000种。一次性输出精确的比例仅仅是8%,两次输出精确比例27%,三次以上输出精确的比例才勉强超过60%。 3、频繁弹出,烦扰失常操作:企业为了保障信息安全、账户平安,会一直进在各种利用场景上行平安验证。注册登录须要输出验证码,浏览查阅须要输出验证码,审核确认须要输出验证码,甚至,在屏幕上停留几十秒后再流动后也须要输出验证码。每一步操作验证一次,频繁弹出的验证码,诚然保障了业务平安,却重大烦扰失常操作,给用户带来很坏的体验。 多部门推动业务适老化降级革新验证码的适老化革新越来越具备紧迫性。监管部门屡次发文要求,在保障严格认证身份并明确老年人办理志愿的根底上改良验证形式,晋升老年人应用体验。 2020年11月,国务院办公厅印发《对于切实解决老年人使用智能技术艰难实施方案的告诉》,要求推动金融机构、非银行领取机构、网络购物平台等优化用户注册、银行卡绑定和领取流程,打造大字版、语音版、民族语言版、简洁版等适老手机银行APP,晋升手机银行产品的易用性和安全性,便当老年人进行网上购物、订餐、家政、生存缴费等日常生产。 2021年3月,人民银行对于印发《挪动金融客户端 应用软件无障碍服务建设计划》特地提到,对于非文本验证码,应提供可被不同类型感官(视觉、听觉、触 觉等)承受的代替表现形式。 2021年3月,银保监会公布《对于银行保险机构切实解决老年人使用智能技术艰难的告诉》,要求各银行保险机构要依据老年人的应用习惯,在用户注册、银行卡绑定和领取流程等环节,在保障严格认证身份并明确老年人办理志愿的根底上改良验证形式,晋升老年人应用体验。 2021年4月,工信部公布《挪动互联网利用(APP)适老化通用设计规范》,对APP革新作出字体大小、色彩用处、手势管制、验证码操作等13项具体技术要求,并特地提到,如果挪动利用中存在非文本验证码(如拼图类、选图类验证形式)等老年人不易了解的验证形式,则应提供可被不同类型感官(视觉、听觉等)承受的代替表现形式,例如文字或语音模式,以适应老年人的应用需要。 “免验”的顶象无感验证,让老年人应用更便当《验证码“适老化”白皮书》零碎介绍“免验”操作的顶象无感验证,良好满足金融业务需要,更省去用户简单辨认、频繁操作的懊恼。 顶象无感验证集设施指纹、行为校验、操作校验、地理位置校验等多项性能与一身,基于设施、工夫、拜访频率、操作轨迹等信息,智能剖析与事后断定操作者是非法用户还是仿冒者,进而判断是否须要弹出验证码:对于非法用户,免验证即通过;对于异样用户,依据潜在危险等级进行二次验证或间接拦挡。既保障平安,又晋升操作体验。顶象无感验证不仅对视觉验证码进行了大幅视觉优化,并提供语音验证码供选择,还反对键盘快捷键实现语音验证码的从新播放、切换等操作。同时,无感验证还提供视觉验证与短信验证的组合出现,让操作者抉择适宜的验证形式。 无感验证通过一直进步免验群体,免去失常用户分别验证码、操作验证码的苦恼,大大晋升用户体验;通过数据分析和人工智能判断,升高验证码遭破解的可能,持续保障业务的平安爱护能力。最大限度升高了用户被打搅的可能性,实现了易用性与安全性的均衡,让鱼与熊掌兼得。因而基于平安、易用及适老化的需要的顶象无感曾经不是一个繁难工具,而是具备智能交互、实时计算、模型剖析、决策判断等能力综合性平安零碎。 顶象是国内当先的业务平安公司,旨在帮忙企业构建自主可控的业务平安体系,实现业务的可持续增长。截止目前,已为中国银联、中国银行、交通银行、中信银行、安全银行、江苏银行、宁波银行、南京银行等数十家金融机构提供业余服务。

March 29, 2022 · 1 min · jiezi

关于验证码:分析|无感验证应用适老化与业务反欺诈的守门员

近日,话题“爷爷用原价给我买了四个蛋挞”登上了热搜。一网友称爷爷去肯德基买蛋挞的时候,店员没有告知其29.9元8个蛋挞的流动,且因为爷爷不太会用智能手机,在现场也没有看到流动介绍,所以用原价买了4个蛋挞。此事在微博上引发了大家对适老化服务的一系列探讨。该话题的浏览量已超过4.1亿,探讨达到3.7万。 随着我国人口老龄化加剧,老年人面临的“数字鸿沟”问题已引发社会宽泛关注。依据中国互联网络信息中心公布的第四十八次《中国互联网络倒退情况统计报告》显示,截至往年6月,我国网民规模达10.11亿,其中12.2%为60岁以上的“银发族”。此外,我国还有4.02亿非网民,其中城镇地区非网民占比为 49.1%,农村地区非网民占比为 50.9%。 基于此,2020 年 12 月,工业和信息化部印发《互联网利用适老化及无障碍革新专项口头计划》,着力解决老年人、残疾人等非凡群体在应用互联网等智能技术时遇到的艰难。 通过为期一年的适老化与无障碍革新专项口头,已有104家网站和互联网利用(App)初步实现了适老化革新,获得了阶段性功效。尽管适老化革新给老年人带来不少便当,但仍存在一些问题亟待解决。 问题一:为老年用户筹备的“营销礼包”,被“羊毛党”抢走。相干报道显示,一些 网站和App在适老化和无障碍革新中,为老年人筹备了多种折扣、返券、促销等等优惠活动,本意是为老年用户提供专有福利。但实际上大量优惠福利老年用户并没有享受到,却成为了“羊毛党”的“盘中餐”。 问题二:验证码频繁弹出,给老年人操作带来烦扰。局部App在革新后,浏览、校验、下载等应用过程中,频繁的弹出验证码进行验证,重大影响老年人应用。 利用适老化与业务反欺诈的“守门员”在适老化和业务平安双重需要下,顶象无感验证提供了良好的解决方案。无感验证联合了设施指纹、行为特色、拜访频率、地理位置等多项信息,无效的拦挡歹意登录、批量注册,阻断机器操作,拦挡非正常用户,较传统验证码相比,用户无需再通过思考或输出操作,只需微微一滑即可进行验证。通过智能甄别为失常的用户,在肯定工夫内无需再进行滑动操作,既为企业提供了平安保障也让用户无感知通过,极大晋升用户体验。 在适老化方面,顶象无感验证将体验蹩脚的传统字符验证码进行降级替换为更容易被用户承受的滑块验证,并反对配适合老化工具或浏览器进行对立放大,大幅用户老年用户体验。并且无感验证提供语音验证能够作为滑块验证等视觉验证形式的备选优化,满足在不同场景上应用时的优化诉求。 同时,无感验证通过智能剖析与事后断定操作者是非法用户还是仿冒者,对于非法用户,免验证即通过;对于异样用户,依据潜在危险等级进行二次验证或间接拦挡,缩小验证码的频繁弹出,升高对老年用户的打搅。 在营销反欺诈方面,顶象无感验证验证码可能实时判断注册登录用户是否异样,及时发现并拦挡程序化的批量注册、歹意登录等欺诈危险,将“羊毛党”挡在里面,让营销更加精准无效。 某银行通过 Wap 站发展线上营销流动,后果收集到大量虚伪注册信息。部署顶象无感验证码后,流动网站的新增注册用户中,虚伪注册量升高 91%,营销成果更加精准。 顶象是国内当先的业务平安公司,自主研发了全链路的风控中台产品矩阵体系,包含设施指纹、无感验证、实时决策平台、端加固、数据采集爱护、工业零碎爱护、模型平台、关联网络平台、常识图谱等风控、平安和人工智能产品,无效保障了企业的业务利用和基础设施平安。截至目前,已为10多个行业2000多家企业提供业余服务。下一步,顶象将着力解决老年人及非凡群体在应用互联网和智能技术时遇到的艰难,同时满足企业的业务平安需要与用户的体验。

December 16, 2021 · 1 min · jiezi

关于验证码:一年后的今天验证码又被骂上热搜

被吐槽上热搜的验证码,图源:秋名山车神 这一次,刚过19点就收到小伙伴发来的问候: 来自基友们的关(chao)怀(feng) 来自客户爸爸的关注 所以,你们都不睡觉的吗 原本想低(zhuang)调(si),原本也没极验啥事,切实是耐不住大家的「激情」。每次验证码上热搜,网民吃瓜,程序猿祭天,经营狗负责生火疏导舆论。 互联网公司日常节目——「祭天」 不过,这次开发有话说了,前端图没切好。前端也有话说了,啥事都能扯前端, 图库都有问题。不管怎样,这个验证码确实出了问题。 其实,这个事件,就如一部分网友说的,不是啥小事,真没必要把话说这么好听: 因为,没有这些验证码,就像@阿个嘞 说的那样,互联网将被垃圾流量所霸占: 原本图一乐的事件,然而,居然曾经起来码字了,有些话咱们还是心愿跟圈里的搭档们聊一聊: 是的,极验又一次被CUE,间隔上次刚好1年:2020年9月20日:是猛男,挑战1.3秒 | 极验被《脱口秀大会》第三季翻牌 咱们颠覆了传统的字符验证码,让大家在面对人机校验的时候,有了更多的抉择。咱们也很开心,「验证通过:1.3秒的速度超过 95% 的用户」,受到大家的关注。 早在2012年,极验寰球独创「行为式验证」技术,心愿通过翻新,探寻人机的边界,让所有人享受互联网交互之美。从第一代行为式验证码到现在的第四代适应型验证码,咱们用了9年的工夫,一直的夯实根底,指标只有一个,谋求极致体验与巩固平安的完满交融。 咱们心愿在这样一个细分畛域,大家可能共同努力,在寰球「验证码」市场,打上「中国智造」的标签。而不是这么多年过来,仍然是「变化无穷的模拟」。 咱们并不强求被每一位用户所通晓,但咱们更不心愿,极验人用了9年的工夫,好不容易才经营起来的口碑,就因为这些「变化无穷的模拟」,变成笑话。 想到会有好多小伙伴,跟@范妮维亚 一样,认为只有是滑块验证,就是极验家的 被反对信赖极验的用户误会,比被骂更好受 目前,极验在 20 个细分行业的头部企业覆盖率达到47%,涵盖航空、电商、游戏、金融、地产、教育、政务等多个畛域。与 Airbnb、华为、小米、KFC、东方航空、高德地图等寰球 32万 家企业达成单干,每天提供超过 14亿 次的平安防护。 随着业务范围的不断扩大,2018年,极验放慢了出海步调。即使遭逢2020年新冠疫情,即使身处疫情核心的武汉,咱们仍然在与谷歌reCAPTCHA等泛滥海内厂商的强势竞争中,取得了海内市场的关注与认可。 图源:Gartner《To CAPTCHA or not to CAPTCHA?》 咱们的致力,正在一直的被验证,咱们的指标也变得更加清晰。于是,在往年,咱们率先在全国提出可信流量治理的翻新实践,并先后推出行为验、设施验、身份验的可信流量三要素解决方案。 其中,行为验的第四代验证码刚上线,就受到了市场的强烈关注。而这其中,就有这位「老朋友」: 说真的,这么些「名企」,在业务百忙之中,俯下身子在「验证码」这样一个垂直畛域,如此「用心经营」,必定也是花了不少心理吧...... 只是,各位「名企」们,咱们能不能发挥下精力,别专盯着一只羊「用心经营」。 深夜码字,让咱们再次用这种形式,记录下2021年,互联网又一黑色幽默时刻。心愿这些文字能成为激励极验人持续驰骋疆场的轰鸣战鼓,面对这些「名企」的追随,咱们唯有放慢翻新,能力不负行业创领者之身份。 最初,给大家送上中秋的祝愿,图里的五子棋的新玩法,大家也能够关注下,极验第四代验证码也将引入更多乏味元素,打造更便捷更平安更具智慧的行为验解决方案。登录极验官网,即可预约体验。

September 20, 2021 · 1 min · jiezi

关于验证码:混沌与新生从流量收割到可信流量治理

在流量经济新察看系列专栏中,不难发现,过来的二十年,不论是新生产,游戏短视频这些互联网新兴力量,还是银行、汽车、能源重工等传统霸主,流量经济未然浸透至每一个行业。随着寰球人口红利的逐步隐没,经验过疯狂的中国互联网,从新回归感性。将来十年,企业之间的博弈,将从疯狂的流量抢夺,进入到「可信流量治理」工夫。 一、流量收割的黄金时代2014年7月,CNNIC公布第34次《中国互联网络倒退情况统计报告》数据显示,中国手机网民规模5.27亿。网民上网设施中,手机使用率达83.4%,首次超过传统PC整体80.9%的使用率。随着挪动互联网浪潮的到来,中国企业迎来了互联网流量的黄金时代。 图源:互联网女皇报告 同年10月,在面对媒体采访时,滴滴打车CEO程维示意,在过来的两年工夫,公司已烧掉15亿元。过后的互联网环境绝对简略,对于过后的企业而言,15亿只是一串数字,背地是流量直线向上的走势,市场占有率上减少的百分点,以及行业的相对话语权。 图源:《北国早报》南宁的大巷上,滴滴打车与快的打车推广人员争夺着市场份额 企业获取流量的老本也绝对较低,在过后的北京,从「宇宙O2O核心」的望京SOHO,到人潮攒动的地铁站,再到冷落的商业街,一溜的扫码领赠品,获客成本低至一块钱。 某公司地推物料:装App就送一块钱 这种近乎疯狂的流量收割形式,在过后并不被看好。但也就在这种砸钱赚吆喝之下,头条系发明了流量神话,滴滴出行,美团外卖也在白刃战中胜利解围,成为行业巨头。事实证明,彼时的互联网获客老本极低,近乎疯狂的流量收割模式下,最为实在的流量红利被疾速瓜分。等到众人缓过神来,互联网流量红利曾经隐没,少量「独角兽」陷入虚伪流量之中,最终吞没在数据泡沫之中。 二、迷失在流量困局之中2.1 流量焦虑Quest Mobile在《中国移动互联网2019半年大报告》中指出,挪动互联网用户同比增长从2018年到2019年第二季度,曾经从6.2%下滑到2.8%。2019年第二季度中国移动互联网用户净减约200万,这是挪动互联网用户月活首次呈现了负增长。 图源:Quest Mobile 从2019年流量红利跌破警戒线后,流量红利逐步见底。事实是,负增长迟早会到来,它是一个必然的后果。现如今,中国的网民数量已超10亿,简直达到中国人口总数,流量增长空间简直触顶,十几年的高速增长未然完结。越来越多企业面临增长乏力,业务膨胀,狼多肉少的场面越发显著。 2.2 获客老本剧增,增长乏力2019年6月,新京报在618前夕,公布一篇名为《电商获客新变局:老本3年增10倍,博弈拼购与新批发》的文章。文章指出,在2016年-2018年期间,电商行业获客老本三年增10倍,其中,拼多多更是在两年的工夫里,获客老本翻了近20多倍。 图源:《新京报》 挪动互联网用户总量简直无增长,网络批发市场增量放缓,然而竞争越来越强烈,用户可抉择的越来越多,天然每家都要付出更高的费用抢夺用户,获客老本就这样被拉高了。获客老本的上涨不仅会减少企业的营销老本,还会升高企业利润,甚至会影响投资。而当问询企业家,大家感觉获客老本会降下来吗?答案简直都是统一的——不可能。 2.3 互联网烧钱时代完结2019年10月,WeWork母公司We Company公布申明,正式撤回了招股说明书。WeWork上市失敗,估值从最高的470亿美元缩水不到37亿。 图源:Dow Jones Venture Capital 正如摩根士丹利首席美国股票策略师迈克·威尔逊所说,WeWork首次公开募股的失败,标记着一个时代的完结。投资者正在远离动量股,回归价值股。这表明,他们不再违心为适度投资买单。 投资人为没有实现盈利的企业提供慷慨资金的日子曾经完结。 三、破局:从流量收割到可信流量治理3.1 流量思维到流量价值思维凋敝的曲线没有看到衰败的时候,大家都对将来比拟乐观,即便是继续亏损的企业,只有能对外讲述一个流量高速增长的故事,都不难从市场上取得资金反对。但一旦有各种因素造成凋敝崩塌,资本必将回归感性,跑马圈地式的流量扩张将变得不堪一击。 流量经济陷入「马尔萨斯陷阱」 疫情的冲击下,这种矛盾更加凸显:流量一旦无奈变现,在指数级增长的经营老本下,宏大的有效流量数据非但一文不值,还会继续耗费企业资源,最初成为压死企业的最初一根稻草。当流量红利期涨潮,流量经济未然发生变化,从粗放的增量扩张到精益的存量经营,从最后的流量思维到现在的流量价值思维,从流量收割到可信流量治理。 3.2 私域流量不是救命稻草从最后星散的会员电商,再到拼多多的社交电商,最初阿里正式提出私域流量,激励商家经营私域空间。随着流量红利的隐没,局部企业逐步淡出疯狂的流量扩张赛道,进而瞄准存量经营。 作为显著的分水岭,疫情期间局部企业开始扭转固思维,从「流量思维」转变成「流量价值思维」,并开始聚焦存量经营,胜利享受到了私域流量带来的红利。而少量坐拥「亿万」流量的独角兽,受制于少量不可信流量,难以实现营收冲破,而逐步落伍,最终一败涂地。 私域流量仿佛成为企业解脱流量困局的救命稻草,一时间重金砸向主播,拉起「粉丝群」就开干。然而,随着虚伪流量,刷单翻车,数据造假事件的频发,企业仿佛意识到,抛开流量品质谈私域流量的舆论,基本经不起市场的考验,横蛮经营的「私域流量」不是救命稻草。 图源:显微故事 那么,是私域流量的问题吗?不是,问题的源头还是出在流量上。并不是所有的流量都能称之为私域流量,百度百科对于私域流量的断定规范中注明,合乎「AIE规范」的流量才是私域流量。而其中首当其冲的指标就是可自在触达。 然而在理论的营销场景中,企业投入大笔估算进行推广时,往往只关注数据的增长,而漠视了数据背地,对于流量品质的把控。而这正中黑灰产下怀,市场上万亿计的黑卡,配合脚本与群控设施,「生产」出亿计的僵尸用户,歹意流量轻松浸透至平台每一个角落。 更为可怕的是,黑灰产通过对企业外围业务场景的钻研,将万亿计的「黑卡账户」,养成粘性强、活跃度强的「优质」用户。一旦企业投入估算,进行营销流动推广之时,这批「优质」用户利用外挂脚本,胡作非为的抢占企业线上资产,掠夺稀缺资源,严重破坏了平台环境,更极大减少了企业的经营老本,甚至引发少量实在用户的散失,给企业带来巨大损失。 3.3 可信流量治理的价值所有的流量都是可信的吗?据相干材料统计,2020年51.8%的流量为不可信流量。2021年不可信流量占比回升为61.5%,也就是说全网流量中可信的流量其实仅为38.5%。 目前全国有超过200万黑产从业人员,他们的目标是晋升获取互联网资产的效率,更多更快的获取互联网上的资产,这些资产包含红包、信息、隐衷等等等等。而后将这些资产进行变卖获利。黑产获取资产的速度是普通用户的近800倍。黑产的存在就如同企业的蛀虫不仅汲取了企业大量利润,同时还大大影响着失常用户的应用。 与此同时极验发现,作为寰球不可信流量占比最高的国家,以及面对寰球规模最大的黑灰色产业链,我国企业针对不可信流量的治理率居然不到10%,而其中90%都是企业将来能进行改善的空间,同时也将成为企业与竞争对手拉开差距的新战场。 在 Gartner 近期两次无关流量治理的相干文章中,极验成为国内首家被关注的流量治理服务商,并成为 Gartner 2020 年在 OFD 畛域具备代表性的流量治理厂商。极验行将公布行业首个《可信流量治理白皮书》,以及全新的产品解决方案,让咱们刮目相待吧。

August 19, 2021 · 1 min · jiezi

关于验证码:CAPTCHA之去与留

以下文章来源于《To CAPTCHA or not to CAPTCHA?》 ,作者是 Gartner高级剖析总监Akif Khan,他长期专一于数字欺诈检测和身份验证畛域,对captcha 十分有钻研。近日,他在Gartner网站上撰文发表了对 CAPTCHA之去与留的认识,前半段回顾了CAPTCHA的历史倒退,其中极验 GeeTest 就作为创建于中国并胜利在海内市场构建品牌影响力的CAPTCHA服务商成为第五阶段最典型代表。后半段从正反两方面的视角,十分精彩的分享了对这个问题的认识。 我常和客户探讨数字欺诈检测和身份验证畛域各种乏味的话题,其一便是机器流量检测和缓解。每当谈及于此,咱们总会围绕CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart)进行一番热切探讨。我留神到他们对CAPTCHA的态度区别相当显著,一派反对应用,另一派则坚定拥护。拥护的一方不仅打心眼里冲突应用CAPTCHA,还旗帜鲜明地坚定拥护它。 因为我自己对CAPTCHA十分感兴趣,先茬个话题简要介绍一点CAPTCHA的倒退历程(如果你对追根溯源没有太大趣味,也能够跳过这一节)。 一、CAPTCHA的倒退历程第一阶段二十世纪九十年代,CAPTCHA首次投用。彼时的搜索引擎Alta Vista饱受垃圾邮件困扰,为缓解该问题而引入了字符验证码这个概念。 第二阶段reCAPTCHA的诞生,reCAPTCHA的验证界面设计为一对词组,起初用于辅助训练人工智能技术,具体来说就是训练古籍的扫描和复原零碎。扫描过程中,零碎可能辨认了第一个单词,却无奈识别第二个单词。一旦一部分用户在验证时正确输出了第二个单词,就相当于帮图书扫描零碎解决了无奈识别的问题。谷歌起初收买了reCAPTCHA。 第三阶段reCAPTCHA 2.0问世,该版本减少了勾选验证的模式。谷歌验证码从一开始只检测用户行为,到依据用户危险等级判断是否二次检测,再倒退到现在的饱受诟病的图片抉择的验证模式。这也是谷歌利用CAPTCHA训练机器视觉技术的又一案例,简略来说是基于对交通场景下物体的辨认训练机器视觉技术,广泛猜想将利用于无人驾驶汽车我的项目。同时,学术界对机器视觉的关注及其商业化的倒退为不法分子提供了可趁之机,通过利用学术研究成绩和商业利用案例,他们进行零碎开发反过来破解机器视觉技术。实际上谷歌云自身就在发售机器学习零碎,这样一来状况就变成了谷歌一部分业务在制作CAPTCHA,另一部分业务却正在瓦解它。 第四阶段谷歌推出reCAPTCHA 3.0,仍然是勾选验证模式,采取的用户行为剖析工具看来与其余支流机器流量检测供应商没有不同。 第五阶段谷歌不再是惟一玩家,随着许多供应商在自家产品上投入的激增,CAPTCHA一直演变进化。有的商家声称他们有十分高的人类验证通过率和极低的机器流量通过率;有的商家则专一于机器视觉验证技术,不仅人类能轻松通过,而且它不同于谷歌的机器视觉技术,暂无商业化利用,因而不法分子无奈利用学术界的钻研、商业化案例、以及开源钻研来制作破解这类CAPTCHA的工具。 二、反对和拥护案例回到开始探讨的,为什么局部企业违心应用CAPTCHA?逻辑很简略,如果机器流量检测零碎认定某用户是机器流量,就能够阻挡这个有潜在威逼的用户。然而机器流量检测零碎并不完满,如果用户不是机器流量呢?它就阻挡了一个失常人类用户的拜访。所以说CAPTCHA代表着一个机会,或一种冀望,如果该用户的确是实在人类用户,他/她是能够通过CAPTCHA以自证并持续失常拜访。 为什么有些企业拥护应用CAPTCHA?因为实在人类用户的验证码解答率可能会非常低,从而导致这些用户无奈通过,对于那局部通过验证的用户,这个过程也可能是一次蹩脚的用户体验,然而不法分子的验证码破解率有时却奇高。当然这种差异十分轻微,因为有时是机器进行CAPTCHA破解,也有些状况是不法分子雇佣人类来破解验证码,这背地有一个蓬勃发展的人工打码产业——在经济不发达地区,黑产以微薄的工资雇佣一批人专门破解验证码,每人每天能够破解上千个。 三、到底是否应该应用CAPTCHA?我的答案是必定的,只是防止用谷歌那种“请选出所有带交通信号灯的图片” 的CAPTCHA。目前市面上有泛滥更先进的CAPTCHA供应商可供选择,如Arkose Labs、GeeTest 、PerimeterX,各家领有独特的形式和一些细小差别,但都比可怕的交通九宫格好用。数字商务业务广泛对升高假阳性有很高要求,因而须要给用户机会自证身份,而不是一刀切地挡住,这是一个十分值得摸索的方向。现在不法分子大量雇佣打码工人以壮大机器流量,当打码工人通过验证速度过快时(代表他们日复一日地在破解这些验证),你还是须要足够智能的CAPTCHA监测这种异样。当监测到异样,CAPTCHA应主动为其减少难度,以遏制和进步打码行为的经济老本。应用CAPTCHA是在可控范畴内减少用户交互,以获取更多用户和其人类特色等级的监测数据。 防止应用CPATCHA作为所有会话的默认进攻,还是须要依附机器流量检测产品来发现和阻挡大部分机器流量,再在难以界定人类行为的灰色地带部署CAPTCHA。我置信这种灰色地带的占比不会多于5%。 进行AB测试,先将须要监测的流量分区,在其中一处应用CAPTCHA,再比照后果,依据实在数据和指标决定是否应用,不要因为对那些掉队的验证形式(比方交通九宫格)有偏见而放弃CAPTCHA。 我对各种CAPTCHA产品的应用体验都很感兴趣,欢送读者们分享你们的经验。 最初说一个乏味的题外话,Amazon于2017年尝试申请一项专利,一种新型CAPTCHA产品,它对于机器来说很容易破解,然而对人类展现十分难解答的视觉验证。不出所料,这个过程被叫停了,由此可见人类易出错的特质可能才是将来反抗机器的关键点。 翻译:洪云霜校对:海内市场经营小分队原文链接:https://blogs.gartner.com/aki...

July 2, 2021 · 1 min · jiezi

关于验证码:GitHub-热门项目射击小游戏进化成验证码让验证不再无聊

咱们大多数人每天都会遇到各种验证码,登陆验证、身份验证,有时候很恼火但还是不得不以此来证实咱们不是机器人,但如果将这种验证的模式换一下呢? 国外的一位开发者创造出了一款 DOOM 验证码,验证画面与以往的公共汽车/消防栓/标记等方块不同,他设计出的内容是更乏味的相似《覆灭兵士》的小游戏验证界面。 GitHub地址: https://vivirenremoto.github.... Miquel Camps Orteza 发明了《DOOM CAPTCHA》并将其公布到他的 Github 页面上。它的验证形式就是让用户在指定的工夫内应用十字准星干掉4个《覆灭兵士》的小怪物即可。 《覆灭兵士》验证码不是一张动态图,而且还有音效和倒计时的设计,毫无疑问,它比一般的验证码更乏味。 Orteza 示意他是在周五想到了这个留神的,并在周六早上开发了第一个版本、早晨公布,之后在周日在 Github 上上线。事实证明,它十分受欢迎,其成为了 Product Hunt 网站上的热门产品。 代码: `<form action="success.html">    <p>        Your Email<br>        <input name="email">    </p>    <script src="https://vivirenremoto.github.io/doomcaptcha/script.js?version=11" sound="on" countdown="on" label="Captcha" enemies="4"></script>    <p>        <button type="submit">Unsubscribe</button>    </p></form>` 有网友说这很酷,但也有网友示意:这工夫也太快了,用触控板基本来不及点。 也有敌人示意,不论什么模式,都比传统的验证码要好,因为他切实不能在那些颗粒状物中分清它们是否是人行横道、自行车、消防栓、红绿灯、公共汽车或者是一些其余讨人厌的货色,他常常在一次又一次的试错中节约很多工夫。 有敌人说,就是这些没有什么用的货色让他对编程爱的死心塌地。 尽管 DOOM 验证码的代码很简略,但这也同时阐明了它的平安性能不高并且存在破绽,开发者还是很谨严的,他在免责申明里示意: 不要太认真哦,这就是一个小游戏,如果你也会编程的话,很容易就能破解它。 Disclaimer: Don't take this too seriously, this is a little project for fun, if do you know how to code it's pretty easy to break the security of this.参考链接: https://www.reddit.com/r/prog...

May 26, 2021 · 1 min · jiezi

关于验证码:人类每在验证码上浪费一天就有一只孙悟空从五行山下被释放

验证码英文叫做 CAPTCHA,是 Completely Autcomated Public Turingtest to tell Computers and Humans Apart 的缩写,直译就是“全自动辨别计算机和人类的图灵测试”。 图灵测试是人工智能圈一个驰名的试验,实验者询问一台机器和一个人类一些问题,如果实验者无奈分辨他俩的差异,那么这台机器便通过了图灵测试。验证码就是图灵测试的反向和变种。 自验证码创造的这二十一年来,验证码的模式和品种越来越繁冗多样,从起初的单纯输出数字字母,演变成图标点选验证,再到更加简单的旋转乱序图片验证。随着时间推移,验证码也越来越常呈现在咱们的生存中,最近就有一篇博客,计算了人类每天节约在验证码上的工夫,而博客上写的计算结果是: 五百年。 依据数据,用户均匀须要 32 秒能力实现验证码的验证,寰球有 46 亿互联网用户,假如一个典型的互联网用户每 10 天收到一个验证码。 计算结果示意,人类每天破费 500 年的工夫只是为了来证实咱们不是机器。 除此之外,验证码也给互联网用户带来了一些真正的问题: 效率:在咱们验证时,工夫也在不经意间流逝。 辅助性能:用户被一律假设为具备解决测试所需的物理和认知能力,但状况可能并非如此。例如,视力阻碍可能使图片验证工作变得不可能。 文化常识:地球上看过消防栓的人是多数,说英语的人数也是多数。每个不同城市的出租车色彩也是不一样的,所以那些要求你点选消防栓和出租车的图片也不太正当。 挪动设施上的交互:手机和挪动设施是世界大部分地区互联网接入的次要伎俩,而且通常是惟一的伎俩。验证码除了在小屏幕上的执行更加艰难,并且对其数据打算和电池应用造成了压力。 500 年的后果听起来很不堪设想吧?有网友在看到数据后提议应该勾销验证码,但也有网友感觉,这比起网站带给的利益基本不算啥,毕竟人类每天早上起床找袜子的工夫加起来也不过如此。 人们曾经在蹩脚的用户界面和谬误的代码上节约了许多年,这过于夸张了普通人理论破费的老本,而疏忽了咱们从没有被机器人大量涌入的网站取得的利益。 人们一共节约了多少年在挠鼻子和寻找失落的袜子上?这是个愚昧的指标。 也有网友想要“以其人之道还治其人之身” 我想向那些给我手机发送垃圾邮件的主动拨号软件也发送验证码,在我的手机触动之前,它要先答复我的问题,“往年是哪一年”。

May 18, 2021 · 1 min · jiezi

关于验证码:验证码与人工智能的激荡二十年成为对手

在上篇中,咱们介绍了验证码在2000年左右时诞生,而人工智能在平行世界中曾经倒退了40多年。作为验证码(CAPTCHA)概念的提出者,Luis von Ahn 认为 CAPTCHA 的设计应该基于尚未解决的人工智能难题[1],具体到字符验证码而言,过后面对的次要挑战就是 OCR(Optical Character Recognition,光学字符识别)。因而,理论开发出的验证码个别是退出了烦扰之后的字符,OCR技术难以辨认,而人类则能够比拟轻易地在泛滥烦扰中精确地认出残缺的词汇或者字符序列,这也合乎CAPTCHA中「人类能够轻易通过,然而很难写出一个程序达到较高通过率」的定义。例如2001 年Luis von Ahn和雅虎(Yahoo)网站合作开发出 EZ-Gimpy 字符验证码就长这样: 也就是说,早在验证码刚诞生的时候,就不得不面对人工智能这个对手,特地是曾经倒退多年的OCR技术。因而,本文首先简要介绍OCR技术,随后会重点去论述OCR技术原理中经典的Shape context算法,最初回到事实中的反抗状况,主观剖析过后OCR技术对字符验证码的破解辨认状况。 一、OCR 简介OCR 是指对文本材料的图像文件进行剖析辨认解决,获取文字及版面信息的过程[2]。其历史最早能够追溯到电报时代,同时其在帮忙视力阻碍人士浏览等方面的利用也极大地推动了晚期 OCR 技术的提高。倒退到当初,OCR 更多的是模式识别,人工智能和计算机视觉的综合钻研畛域。 而在字符验证码诞生之初的 2000 年左右,那时的 OCR 的支流实现伎俩在当初看来还比较简单,比拟有代表性的有基于卷积神经网络(convolutional neural networks)的 LeNet[3]、基于反对向量机(support vector machines)的4,以及上面将要重点介绍的经典计算机视觉算法「形态上下文」(shape context)[6]等,这也是最早用于辨认字符验证码的 OCR 算法之一。 二、Shape Context 算法2.1 算法原理 Shape Context 是一种形容物体形态的办法,用于测量形态之间的类似度以及还原形态上点之间的对应关系,因而该算法人造地就能够用来实现 OCR 工作:计算出已知字符和待辨认形态的 shape context,通过比对 shape context 之间的间隔找到最有可能的形态和字符对应关系,从而达到辨认字符的目标。 算法的基本思路如下: 算法的思路看起来并不简单,而且每一步的具体实现都在论文中解释得很分明: 最初,下图简要形容了 shape context 的计算和匹配过程。 2.2 代码实现这里联合一份开源的 shape context 的 Python 实现[7]对算法细节和匹配成果做个演示: 设置对数极坐标系角度(弧度)和半径的切分参数(依照论文的预设值):nbins_r=5nbins_theta=12r_inner=0.1250r_outer=2.0计算每个点间的间隔,并标准化。计算出间隔最远的两个点以备后用:t_points = len(points)# distancer_array = cdist(points, points)# getting two points with maximum distance to norm angle by them# this is needed for rotation invariant featuream = r_array.argmax()max_points = [am / t_points, am % t_points]# normalizingr_array_n = r_array / r_array.mean()把间隔切分 bin 并计算区间内点呈现的次数:r_bin_edges = np.logspace(np.log10(r_inner), np.log10(r_outer), nbins_r)r_array_q = np.zeros((t_points, t_points), dtype=int)# summing occurences in different log space intervals# logspace = [0.1250, 0.2500, 0.5000, 1.0000, 2.0000]# 0 1.3 | -> 1 0 | -> 2 0 | -> 3 0 | -> 4 0 | -> 5 1# 0.43 0 | 0 1 | 0 2 | 1 3 | 2 4 | 3 5for m in xrange(self.nbins_r): r_array_q += (r_array_n < r_bin_edges[m]计算每个点之间的角度,标准化,而后都变换到 0 - 2 的区间:theta_array = cdist(points, points, lambda u, v: math.atan2((v[1] - u[1]), (v[0] - u[0])))norm_angle = theta_array[max_points[0], max_points[1]]# making angles matrix rotation invarianttheta_array = (theta_array - norm_angle * (np.ones((t_points, t_points)) - np.identity(t_points)))# removing all very small values because of float operationtheta_array[np.abs(theta_array) < 1e-7] = 0# 2Pi shifted because we need angels in [0, 2Pi]theta_array_2 = theta_array + 2 * math.pi * (theta_array < 0)把角度切分 bin 并计算区间内点呈现的次数:theta_array_q = (1 + np.floor(theta_array_2 / (2 * math.pi / self.nbins_theta))).astype(int)对每个半径和角度区间的点进行计数,失去 shape context 描述符:fz = r_array_q > 0nbins = self.nbins_theta * self.nbins_rdescriptor = np.zeros((t_points, nbins))for i in xrange(t_points): sn = np.zeros((self.nbins_r, self.nbins_theta)) for j in xrange(t_points): if (fz[i, j]): sn[r_array_q[i, j] - 1, theta_array_q[i, j] - 1] += 1 descriptor[i] = sn.reshape(nbins)其余局部联合论文都很好了解,这里只解释两个有可能被疏忽然而十分重要的点:1) r_array_n = r_array / r_array.mean() 这一句的作用是把所有的间隔都标准化,标准化的形式是转换为这个间隔绝对于均匀间隔的比值。也就是 r_array 是轮廓上每个点之间的欧氏间隔,是绝对值;r_array_n 是转换之后的比值矩阵,是相对值: ...

May 13, 2021 · 3 min · jiezi

关于验证码:互联网保险流量之战下获客成本暴增极验无感本机认证如何破局

依据《90后保险大数据报告》显示,90后人均持有4张保单,随着新一代生产主力的崛起,我国互联网保险行业行将迈入万亿级市场。与此同时,科技巨头放慢扩张浸透,行业获客老本暴涨。流量稀缺的当下,仍有不少企业因为注册登录环节简单繁琐,导致流量大量散失,遭逢「流量荒」。 竞争加剧,获客老本暴增据相干数据显示,以众安、泰康、安心、易安为代表的互联网保险公司,仅去年上半年营收规模已冲破130亿元,同比增长44.22%,整个互联网保险市场极速扩张中。 而随着互联网巨头以及新玩家的急速涌入,行业的流量红利正在丢失。据互联网保险某我的项目工作人员走漏,为了争夺线上流量,各家甚至不惜赔本赚吆喝。「一款产品售价399元,获客老本就要去掉200-300元。」当然,这还不包含保费交到一半,忽然停缴而散失的用户。 以后,各大互联网保险公司均匀老本率高达142 %,被推高的流量老本已成为互联网保险企业除赔付外最大的收入。 传统短信验证成为妨碍流量转化的要害一环在各家互联网保险公司为了抢夺流量,倾尽巨资投放广告拉新引流促活时,在业务的末端,却因为漠视用户体验流量不升反降。 ORACLE在《实在互联网用户的体验治理》的资料曾强调:每节约用户1秒钟的工夫,将造成11%的流量损失,而流量损失将带来微小的业务收入缩小。因而,像亚马逊这类巨头,更是将用户体验晋升到以毫秒计量,因为产品造成对用户工夫的节约,哪怕是毫秒级,全年下来给它们带来的损失也高达16亿美元。相同,通过继续着力晋升产品用户体验的企业,业绩增长均匀超过10%。 用户留存曲线 在过来的很长一段时间里,作为流量入口的注册登录环节,大多数互联网保险企业依然应用的是传统的短信验证码。然而短信验证,时常会呈现校验工夫较长、短信下发不稳固、短信接口容易被刷等问题,这将间接导致企业花真金白银争夺下来的用户因为蹩脚的体验而散失。因而,短信验证的差劲体验已成为破费微小老本获取的价值流量进行胜利转化的要害妨碍,亟待全新的计划。 极验神器助力流量高效转化 极验「无感本机认证」 针对上述业务痛点,极验「无感本机认证」联合三网运营商独有的网关平安认证能力,通过获取用户SIM卡中的手机号码,代替短信验证码,简化用户操作流程,用户体验更加顺畅,无效进步转化率。极验「无感本机认证」是现有短信验证形式的优化,能打消现有短信验证模式等待时间长、操作繁琐、容易泄露等问题,帮忙企业优化认证流程,助力拉新、留存、促活。 该产品蕴含几大劣势: 三大运营商间接单干,接入一家享受三网能力;进阶模式下,「无感本机认证」SDK主动解决预取号和失败状况下的重试逻辑,接入工作量缩小40%以上,成功率晋升5%以上;反对高并发主动扩容,日解决认证申请过亿,服务稳固有保障;过滤机器流量,保障流量平安,极验「无感本机认证」反对和行为验证的联合应用,在保障体验的同时帮忙企业阻绝恶意程序带来的业务损失。助力H5营销场景高效转化 H5的营销场景,是流量转化的最大战场。目前极验「无感本机认证」在H5场景中体现为将用户以后应用数据流量的手机号与待校验号码进行比对,从而代替传统的短信验证码,间接简化用户操作流程。在兼顾用户体验与业务场景平安的前提下,保障了最大的流量转化率。 极验H5「无感本机认证」全新降级 以后H5的「无感本机认证」相比短信认证已做了优化,然而依然存在输出手机号步骤较繁琐、无奈获取用户实在手机号等问题。因而极验联结运营商在H5页面上再次降级,推出新一代「无感本机认证」,用户仅需手动补齐两头4位号码后,即可实现校验。在注册登录、领取确认、营销流动等场景都能无效利用以进步用户体验。 降级后场景示例: 某互联网保险利用,在旗下产品流动页面优惠支付场景,将降级后的极验H5的「无感本机认证」代替了之前的传统短信验证码。 部署前,「短信验证码」流程: 传统的「短信验证码」,用户须要实现包含:输出手机号码、获取短信验证码、期待验证码、输出验证码等操作,以上这些用户须要进行多大19次的点击。过多的环节设置,减少了产品体验门槛,造成每一次点击都存在流量散失的危险。 部署后,「无感本机认证」流程: 极验H5的「无感本机认证」用户仅需填充4位号码,即可实现优惠支付。极大优化了中间环节,帮忙企业真正实现H5营销场景的高效转化。 领先体验 以后,针对H5全新优化降级的「无感本机认证」已凋谢收费体验申请。前50个胜利实现预申请的用户,还将取得此次首发的专享冷遇。 流量之争,体验为王 随着互联网保险行业逐步成熟与欠缺,产品体验必将成为企业流量之争的要害。越来越多翻新企业开始器重旗下产品体验优化,兼顾交互体验与业务平安的极验「无感本机认证」翻新解决方案,正在代替传统的短信验证码,助力互联网保险行业的疾速倒退。

March 18, 2021 · 1 min · jiezi

腾讯滑块验证码识别和加速度模拟1

腾讯滑块验证码识别腾讯滑块验证码识别,识别凹槽的x轴位置,mock滑块的加速度。该项目公开API,提供识别和加速度模拟部分,第二部分模拟滑动进行识别返回数据请求 项目地址:https://github.com/zhaojunlik... 原文地址:https://segmentfault.com/a/11... 安装python环境参考:https://janikarhunen.fi/how-t... sudo yum install https://centos7.iuscommunity.org/ius-release.rpmsudo yum install python36upython3.6 -Vsudo yum install python36u-pipsudo yum install python36u-devel创建环境 Creating a virtualenvpython3.6 -m venv venv. venv/bin/activatepip install [package_name]# 安装依赖pip install -r requirements.txt daemonize 运行# 参考 https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-uswgi-and-nginx-on-ubuntu-18-04# Install the latest stable release:pip install uwsgi# ... or if you want to install the latest LTS (long term support) release,pip install https://projects.unbit.it/downloads/uwsgi-lts.tar.gz# 创建ln cp captcha.service /etc/systemd/system/captcha.servicesystemctl enable captcha.servicesystemctl start captcha.serviceuwsgi --ini /usr/local/nginx/html/myblog/uwsgiconfig.ini#后台运行uwsgi --ini /usr/local/nginx/html/myblog/uwsgiconfig.ini --daemonize /usr/local/nginx/html/myblog/myblog.out是用nginx做代理在nginx部分做一个代理 ...

October 9, 2019 · 1 min · jiezi

日常划水短信验证码开发实例

前言我一生的文章都会放在这里,我的博客,我希望每一行代码,每一段文字都能帮助你。https://github.com/CrazyCodes...大家好,我是CrazyCodes,在日常开发中有没有遇到过发送短信验证码的接口需要开发?你是如何处理短信验证码发送的呢?本篇我分享下短信验证码发送的设计。 初学者以聚合数据为例,初学者会酱紫做 百度 找到一串既熟悉又陌生的代码 (咋整也记不住的代码) //初始化$curl = curl_init();//设置抓取的urlcurl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');//设置头文件的信息作为数据流输出curl_setopt($curl, CURLOPT_HEADER, 1);//设置获取的信息以文件流的形式返回,而不是直接输出。curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设置post方式提交curl_setopt($curl, CURLOPT_POST, 1);//设置post数据$post_data = array( "username" => "coder", "password" => "12345" );curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);//执行命令$data = curl_exec($curl);//关闭URL请求curl_close($curl);//显示获得的数据print_r($data);官方也给出了一段维护性略差的代码 <?php/* ***聚合数据(JUHE.CN)短信API服务接口PHP请求示例源码 ***DATE:2015-05-25*/header('content-type:text/html;charset=utf-8'); $sendUrl = 'http://v.juhe.cn/sms/send'; //短信接口的URL $smsConf = array( 'key' => '*****************', //您申请的APPKEY 'mobile' => '1891351****', //接受短信的用户手机号码 'tpl_id' => '111', //您申请的短信模板ID,根据实际情况修改 'tpl_value' =>'#code#=1234&#company#=聚合数据' //您设置的模板变量,根据实际情况修改); $content = juhecurl($sendUrl,$smsConf,1); //请求发送短信 if($content){ $result = json_decode($content,true); $error_code = $result['error_code']; if($error_code == 0){ //状态为0,说明短信发送成功 echo "短信发送成功,短信ID:".$result['result']['sid']; }else{ //状态非0,说明失败 $msg = $result['reason']; echo "短信发送失败(".$error_code."):".$msg; }}else{ //返回内容异常,以下可根据业务逻辑自行修改 echo "请求发送短信失败";} /** * 请求接口返回内容 * @param string $url [请求的URL地址] * @param string $params [请求的参数] * @param int $ipost [是否采用POST形式] * @return string */function juhecurl($url,$params=false,$ispost=0){ $httpInfo = array(); $ch = curl_init(); curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 ); curl_setopt( $ch, CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22' ); curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 30 ); curl_setopt( $ch, CURLOPT_TIMEOUT , 30); curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true ); if( $ispost ) { curl_setopt( $ch , CURLOPT_POST , true ); curl_setopt( $ch , CURLOPT_POSTFIELDS , $params ); curl_setopt( $ch , CURLOPT_URL , $url ); } else { if($params){ curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params ); }else{ curl_setopt( $ch , CURLOPT_URL , $url); } } $response = curl_exec( $ch ); if ($response === FALSE) { //echo "cURL Error: " . curl_error($ch); return false; } $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE ); $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) ); curl_close( $ch ); return $response;}这样看,“也不是不好,就是想再改改,至于改什么,不知道,就是想再改改” ...

July 2, 2019 · 2 min · jiezi

开发中使用-容联-云通信获取短信验证码的-Javascript-接口

开发中使用 【容联 云通信】获取短信验证码的 Javascript 接口注册账号:https://www.yuntongxun.com/,注册后送8元,开发试用可以用很久了。在平台应用列表添加应用。在测试号码中绑定测试手机号码,只有这个号码能接收验证短信。在项目中绑定配置:将控制台首页的开发者主账号信息粘贴复制进下列接口代码的相应位置。一个前后台分离的应用,在后台项目目录下建立 util文件夹,建立util/sms_util.js文件,文件内写使用 【容联 云通信】平台获取短信验证码的 Javascript 接口代码: // 容联云通信 短信验证码接口var md5 = require('blueimp-md5')var moment = require('moment')var Base64 = require('js-base64').Base64;var request = require('request');/*生成指定长度的随机数 */function randomCode(length) { var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; var result = ""; //统一改名: alt + shift + R for (var i = 0; i < length; i++) { var index = Math.ceil(Math.random() * 9); result += chars[index]; } return result;}// console.log(randomCode(6));exports.randomCode = randomCode;/*向指定号码发送指定验证码 */// 将控制台首页的开发者主账号信息粘贴复制进下列接口代码的相应位置function sendCode(phone, code, callback) { var ACCOUNT_SID = ''; var AUTH_TOKEN = ''; var Rest_URL = ''; var AppID = ''; //1. 准备请求url /* 1.使用MD5加密(账户Id + 账户授权令牌 + 时间戳)。其中账户Id和账户授权令牌根据url的验证级别对应主账户。 时间戳是当前系统时间,格式"yyyyMMddHHmmss"。时间戳有效时间为24小时,如:20140416142030 2.SigParameter参数需要大写,如不能写成sig=abcdefg而应该写成sig=ABCDEFG */ var sigParameter = ''; var time = moment().format('YYYYMMDDHHmmss'); sigParameter = md5(ACCOUNT_SID + AUTH_TOKEN + time); var url = Rest_URL + '/2019-6-16/Accounts/' + ACCOUNT_SID + '/SMS/TemplateSMS?sig=' + sigParameter; //2. 准备请求体 var body = { to: phone, appId: AppID, templateId: '1', "datas": [code, "1"] } //body = JSON.stringify(body); //3. 准备请求头 /* 1.使用Base64编码(账户Id + 冒号 + 时间戳)其中账户Id根据url的验证级别对应主账户 2.冒号为英文冒号 3.时间戳是当前系统时间,格式"yyyyMMddHHmmss",需与SigParameter中时间戳相同。 */ var authorization = ACCOUNT_SID + ':' + time; authorization = Base64.encode(authorization); var headers = { 'Accept': 'application/json', 'Content-Type': 'application/json;charset=utf-8', 'Content-Length': JSON.stringify(body).length + '', 'Authorization': authorization } //4. 发送请求, 并得到返回的结果, 调用callback // callback(true); request({ method: 'POST', url: url, headers: headers, body: body, json: true }, function (error, response, body) { console.log(error, response, body); callback(body.statusCode === '000000'); // callback(true); });}exports.sendCode = sendCode;/*sendCode('13716962779', randomCode(6), function (success) { console.log(success);})*/5.在后台路由文件/routes/index.js中引入,使用: ...

June 17, 2019 · 2 min · jiezi

API-交互中怎么做好图片验证码

前言在传统的 Web 开发过程中,处理图形验证码很简单,只需要在后台用随机字符串生成一个图片,将验证码内容放进 Session 即可,用户提交表单时从 Session[1] 取出判断即可。 但是现如今,越来越推崇 API 交互,无状态,在 Session 这一块,虽然默认配置是不支持了,但是还是有很多曲线救国的方法。 基于 Session 实现在 API 开发中,我们也可以给前端签发 SessionID ,并且通过 PHP 的内置方法,来实现这一切。比如 我们与前段约定,当在请求中包含有 X-Session-Id ,且不为空时,表示这个会话已经注册过 SessionID ,否则就颁布一个 SessionID 并返回在 Response Header 中的 X-Session-Id 让前段记录这个 SessionID ,下面简单实现一下。 // code_session.phpsession_start();// 这里假设已经通过 Header 获取到了 SessionID,并保存到了 $sessionId 变量中。// 当 SessionID 不存在,或者 为空 则创建新的 SessionID 。if(!isset($sessionId) || empty($sessionId)){ $sessionId = session_create_id(); // 因为前台还没有 SessionID ,所以下发一个,通知前端保存。 header('X-Session-Id: '.$sessionId);}// 设置当前会话的 SessionID 。session_id($sessionId);// 这里我们就可以自由的读写 Session 了。// 生成验证码$code = mt_rand(1e3 ,1e4-1);// create_image 请自行实现 或者使用现有的图形验证码库生成。$image = create_image($code);// 存储进去 Session$_SESSION['code'] = $code;// 输出一张图片$image->output();上面基本实现了生成图片,前端需要根据 只需要再提交表单时,在 headers 中带上 X-Session-ID 即可。 ...

June 15, 2019 · 2 min · jiezi

OpenCV搞定腾讯滑块验证码

前言废话滑块验证码破解是一直都想搞的项目,毕竟多数网站都会采用滑块验证码,于是最近在修改论文的闲暇之余把这事儿给解决了。要搞现在的滑块验证码绕不开图像处理,图像处理当然是首推OpenCV-Python啦!当然我的OpenCV非常菜(P.S.两天速成不敢保证代码质量),发现问题就直接指出嘛,不用走流程啦! 环境首先需要一个python,然后安装opencv的python库,如下:pip install opencv-python然后测试一下是否可用,如下: import cv2 as cvimport numpy as npif __name__ == '__main__': img = np.ones((200, 200, 3), np.uint8) * 255 cv.rectangle(img, (50, 50), (150, 150), (0, 0, 255), 2) cv.imshow('test', img) cv.waitKey(0) cv.destroyAllWindows()正常的话就会如下显示: OpenCV的使用相关的API我也是边用边查的,用得也是相当生疏!具体的常用方法大家只好自行百度了,我就不献丑了! 实现原理及方法腾讯滑块验证这次搞得目标就是腾讯滑块验证码,调用腾讯滑块这个接口的网站还是挺多的,比如非常好用的在线画图网站ProcessOn,其中滑块验证部分类似这样子的: 抓个包发现只有滑块图和带缺口的图,如下:破解滑块验证码最为关键的地方在于找到滑块缺口的位置,找到缺口位置后就可以利用Selenium模拟拖动滑块到指定位置实现破解,之前的老办法就是将完整图的像素点和带缺口图的像素点进行比较从而得到缺口位置,但是现在一般不会将完整图暴露给我们,所以只有在带有缺口的图上进行处理。我这里一共有两种方案进行缺口位置识别,一种是基于模板匹配的,另一种是基于轮廓检测的,下面会细讲两种方案的实现方法。 模板匹配识别缺口具体是实现过程如下:1.处理滑块的图片 灰度化滑块图片处理一下滑块图中滑块的外圈使用inRange二值化滑块图使用开运算去除白色噪点运行结果如下所示(左侧为原始滑块,右侧为处理后的滑块): 2.处理带缺口的图片 先来个高斯滤波去噪灰度化带缺口图使用阈值二值化该图运行结果如下所示(左侧为原始图,右侧为处理后的图): 3.进行模板匹配调用模板匹配API并圈出匹配上的区域,结果如下所示: 警告警告警告这种方法的缺口识别率在50%左右,很大一部分原因是滑块图的背景为纯白色,这在匹配时会产生很大的干扰,要是能将滑块图的背景变为透明,正确的匹配率可以达到90%以上 如果大家有任何将滑块图的背景变为透明的办法,可以留言到评论区,我真的万分感谢!!!下面是现阶段的实现代码: # encoding:utf-8import cv2 as cvimport numpy as np# 对滑块进行二值化处理def handle_img1(image): kernel = np.ones((8, 8), np.uint8) # 去滑块的前景噪声内核 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) width, heigth = gray.shape for h in range(heigth): for w in range(width): if gray[w, h] == 0: gray[w, h] = 96 # cv.imshow('gray', gray) binary = cv.inRange(gray, 96, 96) res = cv.morphologyEx(binary, cv.MORPH_OPEN, kernel) # 开运算去除白色噪点 # cv.imshow('res', res) return res# 模板匹配(用于寻找缺口有点误差)def template_match(img_target, img_template): tpl = handle_img1(img_template) # 误差来源就在于滑块的背景图为白色 blurred = cv.GaussianBlur(img_target, (3, 3), 0) # 目标图高斯滤波 gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) ret, target = cv.threshold(gray, 127, 255, cv.THRESH_BINARY) # 目标图二值化 # cv.imshow("template", tpl) # cv.imshow("target", target) method = cv.TM_CCOEFF_NORMED width, height = tpl.shape[:2] result = cv.matchTemplate(target, tpl, method) min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result) left_up = max_loc right_down = (left_up[0] + height, left_up[1] + width) cv.rectangle(img_target, left_up, right_down, (0, 0, 255), 2) cv.imshow('res', img_target)if __name__ == '__main__': img0 = cv.imread('./demo/3/hycdn_3.jpg') img1 = cv.imread('./demo/3/hycdn_3_2.png') template_match(img0, img1) cv.waitKey(0) cv.destroyAllWindows()轮廓检测识别缺口基于轮廓检测缺口的思路简单很多,加上合理的条件识别率在95%以上,实现过程如下: ...

May 18, 2019 · 2 min · jiezi

遭受刷验证码攻击后的企安建设规划感想

背景公司上市不到两周,便遭受到了黑客攻击,其中笔者团队的验证码比较容易识别,攻击者通过ORC识别刷了10几万的短信,除了造成一笔资金开销外,也给服务器带来了很大的压力;并且在阿里云的控制台当中每天都能看到很多攻击信息,却没有拦截,原因是没有购买WAF防火墙,售后也频繁催促购买其安全设施;所以技术负负责人也开始重视起安全问题来,笔者因为懂一些安全技术,所以老大希望笔者在这方面做一些规划指导,周末花了点时间根据公司的现状做了一下规划设想,下文便是当时的口述汇报,后来整理成了文字版,给读者做一些参考吧。一、网络安全威胁提到安全可能直觉上会想到安全漏洞,代码安全等问题,不过安全一般比直觉上的范围更广泛,主要有来自于六个方面:网络安全、主机安全、应用安全、数据安全、运维安全、法律风险等。1.1 网络层拒绝服务攻击,分布式拒绝服务攻击(DDoS),是最暴力、血腥、有效的攻击方式,可直接导致企业云上业务系统带宽堵塞。DDOS攻击防御有两个核心点,首先是识别谁是恶意攻击,另外就是要有足够的带宽和服务器性能来处理这些请求,DDOS攻击是在太野蛮,应对的方法也比较被动,可以使用云平台的防DDOS产品,但也会有误伤,所以遇到这种攻击也只能使用这种无奈的处理来应对。1.2 主机层云主机入侵攻击,云主机是企业云上业务系统的重要承载,攻击者通过暴力破解或配置漏洞等缺陷入侵云主机,用以构建僵尸网络、窃取数据及敲诈勒索等。主机层的风险通常是一些通用漏洞的风险,比如2016年心脏滴血事件全球的服务器都会受到此影响,因此到相对好处理,我们可以使用阿里云的安骑士产品,一键修复系统中的安全漏洞。1.3 应用层Web应用漏洞攻击,企业云上业务系统对外提供服务的诸多系统采用HTTP/S应用协议(Web),攻击者利用Web服务可能存在的诸多漏洞进行攻击,窃取业务系统数据或权限等。应用层变更最为频繁,每家的应用特点都有一些差异,所以通常应用层受攻击的可能性最大,要防御此风险需要持续不断的进行跟进,比如对开发的安全意识,安全开发进行培训,对项目上线前的测试增加安全测试部分。1.4 数据层数据窃取或篡改云上业务系统数据在传输过程中经过互联网,可能被中途窃取或篡改,造成数据完整性和机密性受到影响。数据层相对范围比较广,比如代码是否泄漏,是否有数据泄漏,以及页面挂马,网站的留言的黄赌毒关键词筛选等,因为这些数据泄漏的途径会随着应用层的变化而变化,因此数据层也同样需要持续跟进。1.5 运维层运维人员违规风险操作企业云上业务系统需要内部人员进行运维操作,如何防范高风险的运维操作至关重要。不过运维层的操作风险倒也是各个厂家的一些通用风险,因此解决方案也相对较多,比如使用堡垒机在可视化界面上分配权限,这个权限可以让一个账户指定开启多长时间,并且还可以全程监控,以及操作记录回查,因此风险不大。1.6 合规层国家等级保护2017年6月,国家网络安全法开始实施,企业安全建设不仅仅是内部驱动,同时也有法律驱动。包括实名制,以及日至留存,制定相应的企业安全防护策略等。二、安全制度大多数人可能想到安全是从安全技术上来解决,实际上安全问题不仅仅靠的是技术层面,更多的是从制度上去解决的;2.1 安全工程化这里提一下SDL,SDL是英文字母的缩写,中文名称是安全开发生命周期,他是一套安全的生成流程。最开始来自于微软,在微软2004年以前windows系统和office中存在大量安全漏洞,为了解决这些问题提出了SDL,当使用了SDL之后office、windows的安全漏洞大量降低,后来被各个厂商推广。SDL从 安全培训-》需求分析-》设计-》实施-》安全验证-》发布-》响应 这7个方面入手,每一个环节有相应的安全标准,不过微软标准版的SDL推广并不是很顺利,原因很多,但标准版SDL比较繁重是一个重要的因素,因此各家都有自己的一套SDL标准,在这方面我们也可以进行一些借鉴,制定一套自己的SDL标准,这个标准的制定一定要符合可执行可落地来为依据,可以参考我下面的落地实施部分。2.2 对外沟通2016年前以前,白帽子发现漏洞在乌云网报告,乌云网通知到各个公司,2016年7月之后乌云网关闭,一批白帽子被抓,导致白帽子发现漏洞不敢报告;不过后来各家开始组建自己的漏洞报告平台,2017年6月安全法出来之后,大部分公司要合规,因此大一些的公司通常都有自己的安全团队,比如教育行业好未来的应急响应中心;现在大家发现漏洞通常会报告给对应的平台的SRC;比如教育行业的好未来SRC:http://src.100tal.com/瓜子二手车的SRC:https://security.guazi.com/以及更多的SRC平台,如下图2.3 安全落地上面提到了安全工程化,不过SDL的标准对于我们现阶段太过于理想,所以需要针对实际情况制定一些可落地的方案安全编程规范将一些可能带来安全风险的操作写入规范当中去,比如参数的输入输出,服务器的安全配置,以及代码的安全发布流程等。安全培训很多时候开发者并不重视安全,又或许对安全缺乏了解,比如系统中有哪些安全漏洞,漏洞的危害和原理是什么样的,怎么去防止这些漏洞等等,大部分开发者的安全意识还是很弱,和互联网技术不重视安全也有关系,可能一些开发者知道一些SQL注入、XSS,但是一深入去问一下,就不知所以然,而开发者对安全起了至关重要的作用,所以很有必要对开发者进行安全意识和安全基础技术的培训,这样才能从源头解决安全问题。代码审计这个不管是对于安全的角度还是对于减少BUG的角度都是很有必要的一个环节,对每个项目设定一个代码审计人员,可以对此这些审计人员组织一次代码审计指导;安全测试目前我们项目上线做了充足的功能测试,但是安全测试相对偏少,或者说并不全面,可以专门针对测试的人进行一些安全工具的测试的指导。三、安全产品阿里云提供的安全产品比较齐全,不过价格比较贵,而目前我们没有专门负责安全的人来维护,因此选择的安全产品方向为能直接提升安全,这样才能发挥最大价值,否则便成了手有宝刀,却无刀法,下面是三个必要的安全产品:1. 安骑士前面提到了主机安全,主机安全不会经常变动,因此应对的是一些通用风险,安骑士提供一键修复通用主机漏洞的能力,可以快速修补主机安全,避免人工去修复并不知道如何去修,或者修复不及时。2. WAF防火墙WAF防火墙对应的是应用层安全,可以针对一些代码级的安全漏洞做一些安全防护,应用层变化最大,因此必要性比较大,不过要注意的是WAF防火墙只能处理代码级的漏洞,而逻辑层的却无能为力,比如上次的刷验证码,防火墙则只能将频率非常高的IP封锁,但无法阻挡刷验证码的漏洞问题。3. CA证书CA证书的作用是HTTPS,是用来对传输过程加密,比如服务器提交数据到服务器过程不被攻击者拦截,又或者我们服务器的数据不被一些网络运营商插入广告等,因此重要性也是十分重要。另外针对阿里云的安全产品较贵的,可以参考也可以参考其他家的安全产品,比如百度的云加速,就带有了WAF防火墙和防DDOS功能,地址为 su.baidu.com四、新书推荐如果对笔者的实战文章较为感兴趣,可以关注笔者新书《PHP Web安全开发实战》,现已在各大平台上架销售,封面如下图所示作者:汤青松日期:2018-11-13微信:songboy8888

November 13, 2018 · 1 min · jiezi