Server

极验提供标准的server接口拼接方法,同时提供各版本语言的demo示例。

/gt_verify

该接口用于业务方服务器查询极验模型识别的结果,接口地址为:api.geetest.com/gt_verify

传入参数

参数名称 是否必须 类型 描述
id 必传 string 解决方案对应部署id ,一定要跟前端产生challenge的id对应,否则会进入异常流程。
idType 必传 int 用户标识符的类型:1:手机号,2:邮箱,3:昵称4:UID,用户站内编号0:其他
idValue 必传 string idType 对应的值
seccode 必传 string 私钥+challenge md5的签名
challenge 必传 string 查询结果的凭证, 从前一个接口返回
user_ip 必传 string 用户真实访问网站的ip
timestamp 必传 int 用户发起对应事件交互行为时的时间戳

注意:

  1. challenge是从前端传来的流水号
  2. seccode是 私钥+challenge 整体md5的字符串
  3. id 和 私钥 从极验的后台获取
  4. idchallenge务必是对应关系,前端使用极验id传回的challenge值,在verify校验时一定需要对应的id,否则流程会抛错 ,有可能会导致安全校验失效。

返回参数

极验返回的参数为JSON格式:

参数名称 是否必须 类型 描述
status 必传 string 接口请求的状态是否成功:”success” / “error”/“crash”
captcha 必传 string 说明模型判断的流程是否正常
risk_code 必传 list 风险码(可能会有多个)
risk_level 必传 int 风险等级(只返回最高风险等级)

注意:

因业务方需求不同,验证和风险标识依据对应的id设置返回。

  1. 只有一次流水正常的完成,status才会返回success,否则status会返回error,具体异常原因请参考api文档–> server错误码;
  2. 如果请求流程正常,所有字段均会返回;
  3. 如果账户到期,或者权限异常,所有字段也均会返回统一值”0”。

demo

完整demo下载

极验提供完整的demo部署示例:

  1. Java示例demo下载
  2. Python示例demo下载
  3. Node示例demo下载

java demo


String challenge = request.getParameter("challenge");
String userName = request.getParameter("username");

Date date = new Date();
long timestamp = date.getTime()/1000;
String id = "48a6ebac4ebc6642d68c217fca33eb4d"; //您的id, 在极验后台获取
String privateKey = "4f1c085290bec5afdc54df73535fc361"; //您的私钥, 在极验后台获取
String seccode = "";
try {
seccode = getMD5(privateKey + challenge);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

HashMap<String, Object> params = new HashMap<>();
params.put("id", id);
params.put("seccode", seccode);
params.put("idType", 1);
params.put("idValue", userName);
params.put("challenge", challenge);
params.put("user_ip", "1.2.3.4");
params.put("timestamp", "" + timestamp);
post(params);

php demo

<?php
$challenge = $_POST['challenge'];
$username = $_POST['username'];
$id = "48a6ebac4ebc6642d68c217fca33eb4d";
$privateKey = "4f1c085290bec5afdc54df73535fc361";
$seccode = md5($privateKey . $challenge);
$data = array(
"id"=>$id, # 解决方案对应部署id
"idType"=>1, # 用户标识符的类型:1:手机号2:邮箱3:昵称4:UID,用户站内编号0:其他
"idValue"=>$username, # string idType 对应的值
"seccode"=>$seccode, # 必传 string 私钥+challenge md5的签名
"challenge"=>$challenge, # 必传 string 查询结果的凭证, 从前一个接口返回
"user_ip"=>"127.0.0.1", # 必传 string 用户真实访问网站的ip
"timestamp"=>(int)time() # 必传 int 用户发起对应事件交互行为时的时间戳
);
// var_dump($data);
$data = http_build_query($data);
$url = "http://api.geetest.com/gt_verify";
$opts = array(
'http' => array(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($data) . "\r\n",
'content' => $data,
'timeout' => 2
)
);
$context = stream_context_create($opts);
$res = file_get_contents($url, false, $context);
echo $res;
?>