ByPass 定义

ByPass Mode(宕机模式或旁路模式)是极验为了确保在任何极端状况下都能及时、可控地实现服务降级,作为对客户业务流程保障的最终兜底机制。极验设置了一个独立于行为验证通讯流程之外的服务可用性监控接口,利用心跳检测查询极验服务,通过接口返回的状态标识确认当前验证服务可用性。当无法获取到极验服务器的响应时,该模式可及时进行降级处理暂时绕过极验服务,避免客户正常业务流程受到影响,保障客户业务流程的流畅性和稳定性。

部署 ByPass 的意义

通过我们线上实际调研客户部署情况发现,部分客户会忽略部署 ByPass 模式,这对于应对网络中断、服务器宕机等不可预见的风险十分不利,为了确保您的业务安全,强烈建议您尽快进行部署,并进行全面的测试。以下是 ByPass 模式的通讯流程图:

geetest_bypass_networking

部署步骤

第一步:下载包含 ByPassDemo 的项目文件

为了更好的协助您进行ByPass模式的部署,我们在官网提供了包含 ByPassDemo 的新版项目文件,可访问验证-服务端部署-java — geetest进行获取。您可查看项目文件中的 README.MD,并参照该Demo便捷地接入ByPass模式。

ByPass

第二步:配置 ByPass 模式

客户通过 ByPass 监控接口可获取到当前极验服务的 ByPass 状态标识(success: 极验云服务正常/fail: 极验云服务异常),对于如何使用该状态标识,有两种方式:

方法1:轮询监控接口将服务状态进行存储,向极验发送请求之前,从数据库中读取 ByPass 状态标识,获取服务可用性

当客户能够提供数据存储条件时,在 SDK 的 Demo 中通过轮询机制向极验 ByPass 接口发送请求,将获取的 ByPass 状态存入数据库中( Demo 示例中使用的是 Redis,可自行设计存储架构)。当客户端向 SDK 服务器发起请求时,从数据库中取出状态标识字段,根据状态标识字段来决定后续向极验发起请求还是进入宕机模式不与极验发生任何交互。点击查看示例代码

方法2:每次向极验发送请求之前,先向极验监控接口发送请求获取当前验证服务的可用性

当实际部署环境无法满足 ByPass 状态标识字段存储条件时,可以在 SDK 每次向极验发送请求之前,先向极验监控接口发送请求获取当前验证服务的可用性,再根据验证服务的可用性来判断后续将向极验发起请求还是进入宕机模式不与极验发生任何交互。这种方法适用于无法提供额外数据库来存储服务状态以及担心定期检查状态会造成资源消耗的用户。点击查看示例代码

第三步:调用 ByPass 模式

当完成 ByPass 配置后,可分别在验证初始化(/register.php) 和二次验证(/validate. php)过程中进行调用。

  • 在验证初始化(/register.php) 中,可调用 gt lib 中的 localRegister() 方法并设置结果。
if(bypasscache === "success") {
result = await gtLib.register(digestmod, params);
} else {
result = await gtLib.localRegister();
}
res.set('Content-Type', 'application/json;charset=UTF-8')
return res.send(result.data);
  • 在二次验证(/validate. php)过程中,可调用 failValidate() 方法并设置结果。
if(bypasscache === "success") {
result = await gtLib.successValidate(challenge, validate, seccode, params);
} else {
result = gtLib.failValidate(challenge, validate, seccode);
}

在以上两个过程中前端都会得到通知,按钮会在右上角呈现一个橙色的标志来指示离线模式。验证码服务此时即处于离线模式。

Bypass_pic

第四步:测试 ByPass 模式

在完成部署工作后,请务必进行严格的测试,保障在异常情况下 ByPass 模式能够成功切换。测试方式包括以下两种:

程序自动实现降级

当极验服务出现无法通讯时,ByPass 模式自动生效,验证流程走降级模式,实现一点即过,不阻碍业务。模拟测试方法如下:

  1. 配置文件中将 ID 改成错误账号

例如geetest_config文件中将GEETEST_ID的值改成1234567890

  1. 配置文件中将极验云监听接口改成错误链接
    例如geetest_config文件中将BYPASS_URL的值改成http://www.google.com
  2. 修改服务器 Hosts,将极验云监听接口域名绑定错误ip
    例如: 修改服务器 Hosts 配置文件:127.0.0.1 bypass.geetest.com

人工强制进行降级

客户可联系极验客服提供 ID 号,由极验工作人员操作将云端接口状态修改返回 Fail,程序接收 Fail 参数后实现降级,验证服务实现一点即过。

ByPass 心跳接口详细说明