> >

简介

极验提供智能、风控融合、无感探针三种验证模式选择,来适配不同的场景需求。

智能模式

验证形式配置

极验共提供一键通过、滑动、消消乐、五子棋、文字点选、语序点选、九宫格、图标点选八种验证形式,依据用户验证难度程度和安全对抗能力可分为三类:

验证类型 验证形式说明
I类:一键通过 无需图形验证码校验,无法拦截异常请求,无感模式下推荐使用
II类:滑动、消消乐、五子棋 用户体验较好,但受制于形式因素,安全对抗能力较弱
III类:文字点选、语序点选、九宫格、图标点选 安全对抗能力强,其中以图标点选为最,但对真人也有一定验证难度

配置说明

配置类型 配置示例 验证逻辑
单选验证 滑动 指定弹出单选的验证形式如滑动
多选验证 滑动+文字+图标 在多选的验证形式中随机分配
智能验证 一键通过+图标 未命中策略规则的请求直接一键通过无需验证,
命中规则策略的请求弹出图形验证码交互验证

风控融合模式

适配场景

企业自有风控规则判断,能够对流量做出业务层面的风险分级,可依据企业风控判断的风险等级来接入指定不同的验证形式,例如无风险一键通过,低风险滑动,高风险图标点选。

时序图

风控融合模式流程时序图如下:

风控融合模式流程时序图

部署流程

1、选择风控融合模式

选择【配置管理】->【验证模式配置】,打开风控融合模式开关

选择风控融合模式

2、服务端签名

当服务端对请求流量分配验证形式后,需要对风控融合参数进行签名后下发到客户端调用验证码,避免客户端验证形式被篡改伪造,签名后的风控融合参数示例为

(risk_type=slide|1653448724.8026078|aa0b7984de7b43d8a754fa6224bb18ab|9fd37764cdec43abf04e152c75b86ec97d6a280c8bfa924985bf66989af058eb)

,只有格式正确并且签名匹配时才能调起风控参数指定的验证,否则会校验失败返回异常信息。

签名流程:

  • 初始化签名元信息,包括验证类型、时间戳、随机字符串
  • 用符号 | 按顺序将验证类型、时间戳、随机字符串进行拼接作为原始信息,使用验证ID对应的秘钥进行hmac sha256签名
  • 将原始消息和对应的签名用 |进行拼接得到最终的风控参数

代码示例:

captcha_type = 'slide'
timestamp = str(time.time())
random = uuid.uuid4().hex
captcha_key = '7618a1cfd379b9c7ef753c2a24cdf02b'
msg = "|".join((captcha_type, timestamp, random))
sign = hmac.new(captcha_key.encode(), msg.encode(), digestmod='SHA256').hexdigest()
risk_type = '|'.join((msg, sign))

3、客户端接入

客户端初始化 init 时,通过配置参数 riskType 传入不同的验证形式参数,不同端侧配置示例如下:

Web

initGeetest4({
// 省略其他参数
riskType:'slide|1653448724.8026078|aa0b7984de7b43d8a754fa6224bb18ab|9fd37764cdec43abf04e152c75b86ec97d6a280c8bfa924985bf66989af058eb'
})

Android

将风控标识参数 riskType 添加在 setParams 接口中的 Map 集合中

HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("riskType", "slide|1653448724.8026078|aa0b7984de7b43d8a754fa6224bb18ab|9fd37764cdec43abf04e152c75b86ec97d6a280c8bfa924985bf66989af058eb");
GTCaptcha4Config build = new GTCaptcha4Config.Builder()
.setParams(hashMap)
.build();

iOS

在初始化验证会话时,指定 riskType

- (GTCaptcha4Session *)captchaSession {
if (!_captchaSession) {
NSString *captchaID = @"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"; // 配置后台申请的 captchaId

NSMutableDictionary *additionalParameter = [@{} mutableCopy];
[additionalParameter setValue:@"slide|1653448724.8026078|aa0b7984de7b43d8a754fa6224bb18ab|9fd37764cdec43abf04e152c75b86ec97d6a280c8bfa924985bf66989af058eb" forKey:@"riskType"]; // 根据需要设置指定的 riskType

GTCaptcha4SessionConfiguration *config = [GTCaptcha4SessionConfiguration defaultConfiguration];
config.additionalParameter = additionalParameter;
// 根据需要设置其他参数

_captchaSession = [GTCaptcha4Session sessionWithCaptchaID:captchaID configuration:config];
_captchaSession.delegate = self;
}
return _captchaSession;
}

4、注意

  • 接入风控融合模式请联系我们开启风控融合强校验,强校验后risk_type参数不传、传空、传非法字符,验证流程会返回错误码及错误信息
  • 签名需要在后端进行,后端生成签名参数后再下发到客户端
  • riskType 枚举值说明:
参数 验证形式
ai 一键通过
slide 滑动拼图验证
match 消消乐验证
winlinze 五子棋验证
nine 九宫格验证
word 文字点选验证
phrase 语序点选验证
icon 图标点选类验证

无感探针模式

适配场景

不论是正常用户还是机器脚本的请求,客户端均不会弹出任何图形验证码,仅保留风险识别能力,并将风险识别结果通过 validate 请求返回至客户服务端,服务端可根据风险标签结果,再处理业务逻辑。

部署流程

1、打开无感探针模式

选择【配置管理】->【验证模式配置】,左上角选择对应的ID,打开无感探针模式开关

无感探针模式

2、打开风险结果返回开关

配置管理->验证安全配置->高级安全配置,打开【端侧检测结果返回配置】、【模拟器检测结果返回配置】,【IP检测配置】如图:

风险开关

打开参数配置开关后,极验会在二次校验validate请求的返回中增加相关返回信息,包括:

参数 类型 说明
model_probability int 0/1 极验模型分析得出的机器脚本的识别结果;
1 代表该验证请求极有可能由机器脚本产生;
0 代表未识别出机器脚本特征
web_simulator int 0/1 极验模型分析得出的web模拟器的识别结果;
1代表该验证请求极有可能由web模拟器产生;
0代表未识别出web模拟器特征
ip_overtime int 0/1 后台检测IP频次检测结果;
1代表已超过设定的时间频次限制;
0代表未超过设定的时间频次限制

3、业务处理

再完成验证码二次校验 validate 请求后,根据请求结果和其内的上述参数结果,针对model_probability和web_simulator返回为 1 的请求可视为机器脚本请求,业务层进行权限降级、封禁、拦截等业务处理即可。