用户
 找回密码
 入住 CI 中国社区
搜索
查看: 488|回复: 0
收起左侧

KgCaptcha接入汇总

[复制链接]
发表于 2023-4-10 11:05:40 | 显示全部楼层 |阅读模式

开头的话

最近有在用一款好玩的验证码产品,乐于探索的我,决定从不同的语言去探索这款验证码。
KgCaptcha支持PHP、Python、Java、C#的接入。下面是我接入过程记录中的代码。


1.PNG


HTML
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
PHP复制代码
<?php
include "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}";
}
复制代码



Python
  1. from wsgiref.simple_server import make_server
  2. from KgCaptchaSDK import KgCaptcha
  3. def start(environ, response):
  4.     # 填写你的 AppId,在应用管理中获取
  5.     AppID = &quot;xxx&quot;
  6.     # 填写你的 AppSecret,在应用管理中获取
  7.     AppSecret = &quot;xxx&quot;
  8.     request = KgCaptcha(AppID, AppSecret)
  9.     # 填写应用服务域名,在应用管理中获取
  10.     request.appCdn = &quot;https://cdn.kgcaptcha.com&quot;
  11.     # 请求超时时间,秒
  12.     request.connectTimeout = 10
  13.     # 用户id/登录名/手机号等信息,当安全策略中的防控等级为3时必须填写
  14.     request.userId = &quot;kgCaptchaDemo&quot;
  15.     # 使用其它 WEB 框架时请删除 request.parse,使用框架提供的方法获取以下相关参数
  16.     parseEnviron = request.parse(environ)
  17.     # 前端验证成功后颁发的 token,有效期为两分钟
  18.     request.token = parseEnviron[&quot;post&quot;].get(&quot;kgCaptchaToken&quot;, &quot;&quot;)  # 前端 _POST[&quot;kgCaptchaToken&quot;]
  19.     # 客户端IP地址
  20.     request.clientIp = parseEnviron[&quot;ip&quot;]
  21.     # 客户端浏览器信息
  22.     request.clientBrowser = parseEnviron[&quot;browser&quot;]
  23.     # 来路域名
  24.     request.domain = parseEnviron[&quot;domain&quot;]
  25.     # 发送请求
  26.     requestResult = request.sendRequest()
  27.     if requestResult.code == 0:
  28.         # 验证通过逻辑处理
  29.         html = &quot;验证通过&quot;
  30.     else:
  31.         # 验证失败逻辑处理
  32.         html = f&quot;{requestResult.msg} - {requestResult.code}&quot;
  33.     response(&quot;200 OK&quot;, [(&quot;Content-type&quot;, &quot;text/html; charset=utf-8&quot;)])
  34.     return [bytes(str(html), encoding=&quot;utf-8&quot;)]

  35. httpd = make_server(&quot;0.0.0.0&quot;, 8088, start)  # 设置调试端口  http://localhost:8088/
  36. httpd.serve_forever()
复制代码



Java

  1. package com.kyger;
  2. import jakarta.servlet.ServletException;
  3. import jakarta.servlet.http.HttpServlet;
  4. import jakarta.servlet.http.HttpServletRequest;
  5. import jakarta.servlet.http.HttpServletResponse;
  6. import java.io.IOException;
  7. import java.util.Map;
  8. public class demo extends HttpServlet {
  9.     private static final long serialVersionUID = 1L;
  10.     public demo() {
  11.         super();
  12.     }
  13.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  14.         // 编码
  15.         request.setCharacterEncoding(&quot;utf-8&quot;);
  16.         response.setCharacterEncoding(&quot;utf-8&quot;);;
  17.         response.setContentType(&quot;text/html; charset=utf-8&quot;);
  18.         // 后台处理
  19.         if (request.getMethod().equals(&quot;POST&quot;)){
  20.             String html, appId, appSecret;
  21.             // 设置 AppId 及 AppSecret,在应用管理中获取
  22.             appId = &quot;xxx&quot;;
  23.             appSecret = &quot;xxx&quot;;
  24.             KgCaptchaSDK KgRequest = new KgCaptchaSDK(appId, appSecret);
  25.             // 前端验证成功后颁发的 token,有效期为两分钟
  26.             KgRequest.token = request.getParameter(&quot;kgCaptchaToken&quot;);
  27.             // 填写应用服务域名,在应用管理中获取
  28.             KgRequest.appCdn = &quot;https://cdn.kgcaptcha.com&quot;;
  29.             // 请求超时时间,秒
  30.             KgRequest.connectTimeout = 5;
  31.             // 用户登录或尝试帐号,当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
  32.             // 可以填写用户输入的登录帐号(如:request.getParameter(&quot;username&quot;),可拦截同一帐号多次尝试等行为
  33.             KgRequest.userId = &quot;kgCaptchaDemo&quot;;
  34.             // request 对象,当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
  35.             KgRequest.request = request;
  36.             // java 环境中无法提供 request 对象,请分别定义:clientIp¦clientBrowser¦domain 参数,即:

  37.             // 发送验证请求
  38.             Map&lt;String, String&gt; requestResult = KgRequest.sendRequest();
  39.             if(&quot;0&quot;.toString().equals(requestResult.get(&quot;code&quot;))) {
  40.                 // 验签成功逻辑处理 ***
  41.                 // 这里做验证通过后的数据处理
  42.                 // 如登录/注册场景,这里通常查询数据库、校验密码、进行登录或注册等动作处理
  43.                 // 如短信场景,这里可以开始向用户发送短信等动作处理
  44.                 // ...
  45.                 html = &quot;&lt;script&gt;alert(´验证通过´);history.back();&lt;/script&gt;&quot;;
  46.             } else {
  47.                 // 验签失败逻辑处理
  48.                 html = &quot;&lt;script&gt;alert(\&quot;&quot; + requestResult.get(&quot;msg&quot;) + &quot; - &quot; + requestResult.get(&quot;code&quot;) + &quot;\&quot;);history.back();&lt;/script&gt;&quot;;
  49.             }
  50.             response.getWriter().append(html);
  51.         } else {
  52.             response.sendRedirect(&quot;index.html&quot;);
  53.         }
  54.     }
  55.     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  56.         doGet(request, response);
  57.     }
  58. }
复制代码




C#
  1. using System;
  2. using KgCaptchaSDK;
  3. public partial class _Default : System.Web.UI.Page{
  4.     protected void Page_Load(object sender, EventArgs e) {
  5.         // 后端处理
  6.         string html, appId, appSecret, Token;
  7.         if (Request.Form.ToString().Length &gt; 0){  // 有数据处理
  8.             // 填写你的 AppId,在应用管理中获取
  9.             appId = &quot;xxx&quot;;
  10.             // 填写你的 AppSecret,在应用管理中获取
  11.             appSecret = &quot;xxx&quot;;
  12.             var request = new kgCaptcha(appId, appSecret);
  13.             // 前端验证成功后颁发的 token,有效期两分钟
  14.             request.token = Request.Form[&quot;kgCaptchaToken&quot;];
  15.             // 填写应用服务域名,在应用管理中获取
  16.             request.appCdn = &quot;https://cdn.kgcaptcha.com&quot;;
  17.             // 当安全策略中的防控等级为3时必须填写,一般情况下可以忽略
  18.             // 可以填写用户输入的登录帐号(如:Request.Form[&quot;username&quot;]),可拦截同一帐号多次尝试等行为
  19.             request.userId = &quot;kgCaptchaDemo&quot;;
  20.             // 请求超时时间,秒
  21.             request.connectTimeout = 5;
  22.             // 发送验证请求
  23.             var requestResult = request.sendRequest();
  24.             if (requestResult.code == 0) {
  25.                 // 验签成功逻辑处理 ***
  26.                 // 这里做验证通过后的数据处理
  27.                 // 如登录/注册场景,这里通常查询数据库、校验密码、进行登录或注册等动作处理
  28.                 // 如短信场景,这里可以开始向用户发送短信等动作处理
  29.                 // ...
  30.                 html = &quot;&lt;script&gt;alert(´验证通过´);history.back();&lt;/script&gt;&quot;;
  31.             } else {
  32.                 // 验签失败逻辑处理
  33.                 html = &quot;&lt;script&gt;alert(\&quot;&quot; + requestResult.msg + &quot; - &quot; + requestResult.code + &quot;\&quot;);history.back();&lt;/script&gt;&quot;;
  34.             }
  35.             // 输出结果
  36.             Response.Write(html);
  37.         }
  38.         Response.Redirect(&quot;index.html&quot;);
  39.     }
  40. }
复制代码


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






















本版积分规则