后端接入(业务应用集成)

SDK文件参数说明

参数名 数据类型 描述
appId String 填写你的 AppId,在应用管理中获取
appSecret String 填写你的 AppSecret,在应用管理中获取
appCdn String 填写应用服务域名,在应用管理中获取
token String 前端验证成功后颁发的 token,有效期为两分钟,需自行在前端发送颁发的token传递到后端进行验证
userId String 当安全策略中的防控等级为3时必须填写,指定userId
connectTimeout Number 请求超时时间,秒

token验证api返回数据

字段名 数据类型 描述
code String 验证返回code
msg String 验证结果信息

code说明

code 描述
0 OK
20000 请求超时,SDK 文件请求超时
20001 参数错误
20002 不合法的AppId
20003 无效的签名
20004 无法获取来源
20005 域名设置错误,应用设置的域名与当前域名不匹配
20006 应用授权未开始
20007 授权时间已结束
20008 当前域名/应用被禁用
20009 SDK错误,缺少 clientIp 参数
20010 SDK错误,缺少 clientBrowser 参数
20011 SDK错误,当前风控等级必须设置 userId 参数
20012 可疑行为,建议拒绝
20013 服务器时间不正确
20014 无效的IP,黑名单IP
20015 无效的IP,非白名单IP
20016 验证失败,token 参数错误或请求已超时
20018 浏览器指纹验证失败
20019 验证失败,缺少 token 参数
20020 每小时验签次数超出限制
20021 每日验签次数超出限制
20022 每月验签次数超出限制

SDK-PHP版

<?php
include "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}";
}

SDK-Python版

from wsgiref.simple_server import make_server
from KgCaptchaSDK import KgCaptcha


def 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-Java/JSP版

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 = "AppId";
            appSecret = "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 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-.Net 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");
    }
}