产品文档 > 智能风控 > 智能无感验证_FAQ

无感验证 FAQ

一、通用

验证码有时候无需滑动,自动通过?

验证码验证模式分为无感验证和强校验模式。用户可在无感验证管理控制台->安全配置页面按需设置。

  • 无感验证模式:用户首次滑动通过后,短时间内,系统采集环境信息并自动帮助进行验证,安全用户无需任何操作,减低用户打扰。
  • 强校验模式:适用于安全指数要求较高场景,强制用户每次需要完成验证方可通过。

验证码出现白边,View宽高如何设置?

验证码渲染的宽高大小为300px X 200px,可以根据需求进行宽高=3:2 进行缩放调整。

加载验证码出现 “加载失败/数据异常,请点击重试”?

  • 检查接入AppID跟apiSrever是否正确
  • 检查网络是否正常

验证成功之后,如何重新加载验证?

需要重新实例化 DXCaptchaView 初始化后,调用startToload

验证返回事件这么多,怎么用?

一般业务开发,只需要关注两个事件:验证成功DXCAPTCHA_SUCCESS,验证失败DXCAPTCHA_FAIL,其他事件根据不同需求进行接入。

如何获取token?

验证成功后,会返回事件DXCAPTCHA_SUCCESS,通过map.get("token") 方式获取。

验证码支持React Native方式接入吗?

Android: https://cdn.dingxiang-inc.com/files/10062/DXCaptcha-SDK-for-Android-RN.pdf

验证码,一直显示在“加载中”如何处理?

首先建议清缓存,排查是否是 index.js 没有更新到最新版本导致的。

案例:如 验证码服务更新了一个js文件,部分手机由于缓存机制还在沿用旧版本的js文件,文件版本不一致导致验证码一直处于“加载中”的状态,解决办法是把app端的缓存清理掉即可正常。

验证码 captchaStatus 报server_success,但是result 报false?

首先确认token的传值是否正常, 网络降级情况下是 sl 开头的字符串;

若token 正常,请确认前后端传入的Appid 是否一致;

请注意 验证码 token 只能校验一次,不要多次校验。

以下是校验验证码token的错误码说明:

image.png

验证码在某一手机上加载不出来,其他手机可正常加载?

请确认该手机是否挂了代理,若挂了代理,会导致js拉取不成功。 若没有代理请确认网络是否正常,切换4G再试下。

验证码滑动位置正确后,也一直验证不过怎么回事?

验证码结合了设备指纹、行为特征、访问频率、地理位置等多项技术,能识别风险行为,并进行拦截。如您是在测试 短时间高频访问验证码,或者设备多开、挂代理等都会命中验证码的风险检测。

滑动验证码各样式(style)demo地址

滑块验证码一共有四种样式(style),embed 嵌入式(默认)、inline 内联式、popup 弹出式以及oneclick 触发式。 详细demo体验地址:https://cdn.dingxiang-inc.com/ctu-group/captcha-ui/demo/

验证码静态资源转发时需要配置跨域头吗?有什么限制?

验证码静态资源转发的时候需要跨域头,跨域头只能配置一次,再经过其他负载转发的时候需要检查是否重复配置。

为什么验证码显示的缺口很小,图片变形了?

请前端同学查看是否传入了height选项,目前验证码不支持自定义高度。传入height会影响样式布局。

什么是降级?如何判断服务是否降级?

降级是针对网络异常,前端会出现如下图片(特征:方形缺口图片)时说明服务发生了降级,验证码降级则后端校验无法通过:

也可以通过开发者工具(或者通过wireshark、fiddler等抓包工具)确认api/a接口请求是否正常。

如何不显示Logo?

请联系客服开通自定义Logo权限,权限开通后可在调用验证码SDK的初始化配置选项中开启_noLogo选项,例如:

_dx.Captcha(document.getElementById('demo', {
  appId: 'xxxx',
  _nologo: true
})

弹出式验证码在屏幕上显示过小如何解决?

假如出现如上图所示的情况,可以通过在初始化选项中配置scale参数来解决,例如:

var demo = _dx.Captcha(el, {
   // appId 等配置项
   scale: Math.floor(document.body.clientWidth / 300) // 根据屏幕宽度适配
});

style等于inline时样式问题

原因定位,请确认下_dx.Captcha(el ,options)el的样式,例如使用了margin: 0 auto会导致发生上面的定位偏移。

二、Android

Android集成SDK后,运行闪退?

检查assets文件是否集成,混淆配置是否正确。 如日志显示:I/libjdi sdk init cache failed,如有请检查 SDK的assets文件是否集成。

如何更改“验证成功”的文案

Map<String, Object> customLanguage = new HashMap<String, Object>();
customLanguage.put("verify_success", "验证成功");
config.put("customLanguage", customLanguage);
dxCaptcha.initConfig(config);

如何更改“智能检测中”的文案

Map<String, Object> customLanguage = new HashMap<String, Object>();
customLanguage.put("smart_checking", "智能检测中");
config.put("customLanguage", customLanguage);
dxCaptcha.initConfig(config);

不依赖指纹,直接用验证码要怎么设置

验证码版本1.7.2以上的可以如下设置

config.put("DXKeyRiskEnable", false);
dxCaptcha.initConfig(config);

http地址无法访问,logcat报错Cleartext HTTP traffic to xxx not permitted

请在AndroidManifest的Application中新加一句:

<application
    ...
android:usesCleartextTraffic="true"
    ...
/>

SDK lib中的so有那么多版本,需要都放进去么?

我们提供了各种架构的so,具体使用还是要看您原来项目lib用了哪些架构。比如原项目中有v7a和x86目录,那您只需要选择这两个对应的so就行。

三、iOS

如何更改“验证成功”的文案

NSMutableDictionary *config = [NSMutableDictionary dictionary];
[config setObject:@{@"verify_success": @"验证成功",@"xxx": @"xxx"} forKey:@"customLanguage"];

如何更改“智能检测中”的文案

NSMutableDictionary *config = [NSMutableDictionary dictionary];
[config setObject:@{@"smart_checking": @"智能检测中",@"xxx": @"xxx"} forKey:@"customLanguage"];

不依赖指纹,直接用验证码要怎么设置

[config setObject:@"false" forKey:@"DXKeyRiskEnable"];

四、小程序

生产控制台配置的是图文点选方式,微信小程序里显示的为什么还是滑块方式?

答:若接入微信小程序插件版本号是v1.2.13 之前的,则首次验证码类型只支持滑块验证,二次验证方式只支持图文点选验证。 若接入微信小程序插件版本号为 v1.2.13,则首次验证码类型支持滑块验证和图文点选验证,二次验证只支持图文点选验证。 如有权限,请确认小程序的配置验证方式正确,可在 控制台->无感验证->场景管理页面 ,选择对应的场景(你所接入的小程序名)来编辑验证方式。 如没有权限可联系售后确认。

微信小程序接入的ConstIDServer地址?

答:小程序ConstIDServer地址以 /udid/ w1 结尾,如https://host/udid/w1。

返回 INVALID_APP_ID 是什么问题?

答:是传入的Appid 错误,应填写在顶象控制台创建的产品Appid。 可以登录控制台,在系统管理菜单下进入产品管理页面,查看对应产品的Appid。

小程序的版本号如何修改?

答:在app.json中声明插件时,修改版本号即可

{
  "plugins": {
    "captcha": {
      "version": "1.2.8",
      "provider": "wxbf8483dfc5ac6817"
    }
  }
}

一直显示“智能加载中”,怎么办?

答:请检查当前网络连接是否正常。

微信小程序插件v1.2.13版本,首次验证选择了图文点选验证,为什么验证成功触发不了回调?

答:新版插件对captchaShow这个参数做了判断,当captchaShow=true,才支持回调。

五、React接入

引入 JS

<script src="https://cdn.dingxiang-inc.com/ctu-group/captcha-ui/index.js" crossorigin="anonymous"></script>

注意:由于验证码 JS 会不定期升级更新,请直接引用顶象 CDN 上的资源,以便及时获得最新安全防护。不要将 JS 文件下载到自己服务器使用

初始化

假设页面上有一个 <div id="demo"></div>,则可以像下面这样初始化验证码:

// 类组件使用componentDidMount
useEffect(() => {
    (_dx || window._dx).Captcha(document.getElementById('demo'), {
      // appId, 在控制台应用管理或应用配置模块获取
      appId: "12610a3853150e888ccd0c6d4c415626",
      success: token => {
        // 获取验证码token,用于后端校验,注意获取token若是sl开头的字符串,则是前端网络不通生成的降级token,请检查前端网络及apiServer地址。
        console.log(token);
      }
    });
}, [])
// 类组件方式
class App extends React.Component {
  componentDidMount() {
    (_dx || window._dx).Captcha(document.getElementById('demo'), {
      // appId, 在控制台应用管理或应用配置模块获取
      appId: "12610a3853150e888ccd0c6d4c415626",
      success: token => {
        // 获取验证码token,用于后端校验,注意获取token若是sl开头的字符串,则是前端网络不通生成的降级token,请检查前端网络及apiServer地址。
        console.log(token);
      }
    });
  }
}

初始化完成后,验证码组件会被插入到 <div id="demo"</div>中。

完整实例演示地址 包含类组件和函数式组件写法

六、Vue接入

引入 JS

<script src="https://cdn.dingxiang-inc.com/ctu-group/captcha-ui/index.js" crossorigin="anonymous"></script>

注意:由于验证码 JS 会不定期升级更新,请直接引用顶象 CDN 上的资源,以便及时获得最新安全防护。不要将 JS 文件下载到自己服务器使用

初始化

假设页面上有一个 <div ref="demo"></div>,则可以像下面这样初始化验证码:

  mounted() {
    _dx.Captcha(this.$refs.demo, {
      // appId, 在控制台应用管理或应用配置模块获取
      appId: "appId",
      apiServer: 'https://xxx.dingxiang-inc.com',
      success: token => {
        // 获取验证码token,用于后端校验,注意获取token若是sl开头的字符串,则是前端网络不通生成的降级token,请检查前端网络及apiServer地址。
        console.log(token);
      }
    });
  }

初始化完成后,验证码组件会被插入到 <div ref="demo"</div>中。

完整实例演示地址

完整演示项目地址:https://gitee.com/noscripter/vue-captcha

七、Uniapp接入微信小程序插件示例

请参考Demo示例:https://cdn.dingxiang-inc.com/files/15284/demo.tgz


文档版本: 9fa02a45

加入社群

扫码进群领
【业务安全】资料礼包

在线咨询
400-878-6123