网易易盾智能风控web端接入文档
适用于SDK版本从 2.3.0 开始以及后续版本号不带-pro 的版本
接入步骤
引入/安装js SDK
Web
建议直接通过 script 引入, 将放在初始化代码之前
<script src="./YiDunProtector-Web.js"></script>
uni-app(H5)
import createNEGuardian from './YiDunProtector-Web.js'
初始化SDK
执行SDK初始化。
const neg = createNEGuardian({ productId: '<PRODUCT_ID>', timeout: 6000 }, function (code, msg) {
})
其中:
productId 是应用标识,对应易盾控制台中的产品编号,YD开头
timeout 数据上报超时时间,单位 ms,默认 6000
callback 异步流程回调。
| code | msg | 说明 |
|---|---|---|
| 200 | Success | 流程内token获取成功 |
| 109 | Init Repeat | 重复初始化 |
| 199 | ProductId invalid | 产品ID错误 |
注:不可用的productId会导致服务端鉴权接口失败,请确保productId是正常可用的。
私有化初始化SDK
执行SDK初始化。
const neg = createNEGuardian({ productId: '<PRODUCT_ID>', apiServer:'https://xxxxx.xxxx.xxxx', timeout: 6000 }, function (code, msg) {
})
其中:
productId 是应用标识,对应易盾控制台中的产品编号,YD开头
apiServer 私有化服务器地址,私有化的客户需要通过该接口设置服务器地址,其他客户可以忽略
timeout 数据上报超时时间,单位 ms,默认 6000
callback 异步流程回调。
| code | msg | 说明 |
|---|---|---|
| 200 | Success | 流程内token获取成功 |
| 109 | Init Repeat | 重复初始化 |
| 199 | ProductId invalid | 产品ID错误 |
注:不可用的productId会导致服务端鉴权接口失败,请确保productId是正常可用的。
同步获取 Token
const {code, token} = neg.getToken()
| code | token说明 |
|---|---|
| 200 | 正常模式,数据正常上报到设备指纹服务端,token 长度固定 |
| 201 | 离线模式,数据上报过程中出现异常,比如网络抖动/超时等,token 长度不固定 |
| 202 | 当前获取过程异常,此时 token 为空字符串 |
缓存 token 在缓存时长内二次加密后立即返回;无缓存或缓存已过期时返回降级 token,效果与短 token 一致,正常送检即可。并同时触发后台异步刷新。
注意:此时 token 可能因为初始化回调未完成而导致错误码202,为保证 token 完整获取,请保证同步获取的时候初始化回调是完成状态。
异步获取 Token
neg.getTokenAsync().then(result => {
if (result.code === 200) { // 正常情况
alert('get token:', result.token)
}
if (result.code === 201) { // 离线模式
alert('get token:', result.token)
}
})
每次实时采集数据并上报,完成后返回最新 token,属于耗时操作。
getTokenAsync 返回有两种模式:
- 正常模式,数据正常上报到设备指纹服务端,token 长度固定
- 离线模式,数据上报过程中出现异常,比如网络抖动/超时等,token 长度不固定,效果与短 token 一致,正常送检即可
校验结果
前端获取到 token 后,将 token 上传到业务服务器。
业务服务器根据 token 向智能风控服务器发起校验,查询结果
更多接入细节见智能风控服务端接入文档。
协议保护
通过数据签名与数据加密/数据解密,防止通信数据被分析,被篡改,被攻击,保护应用/游戏的通信安全。
对应的irisk_bg.wasm文件,请联系易盾获取详细说明文档。
协议模块集成
获取协议文件irisk_bg.wasm与智能风控文件YiDunProtector-Web.js。
协议集成代码
node环境下,执行以下内容。
const fs = require('fs');
// irisk_bg.wasm文件的绝对路径
const wasm_path = 'irisk_bg.wasm';
// 智能风控文件的绝对路径
const web_sdk_path = 'YiDunProtector-Web.js';
const contents = fs.readFileSync(wasm_path, null);
const base64Encoded = Buffer.from((contents)).toString('base64');
const web_sdk_param = fs.readFileSync(web_sdk_path, null);
fs.writeFileSync(web_sdk_path, web_sdk_param.toString().replace('\'AGFzbQEAAAABfhFgAABgAX8AYAF\'',
'\'' + base64Encoded + '\''));
console.log("替换成功")
数据签名
验证数据来源和完整性。
neg.htpSign('<alg>','<version>','<data>')
.then(result => {
console.log(result)
})
其中:
alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number
version 算法版本。具体值请联系易盾获取详细说明文档。格式为number
data 签名的数据。格式为string
数据加密
保护数据内容的机密性。
neg.safeCommToServer('<alg>','<version>','<data>')
.then(result => {
if (result.code === 200) { // 正常情况
alert('enc:', result.data)
} else { // 异常情况
alert('当前浏览器版本较低')
}
})
其中:
alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number
version 算法版本。具体值请联系易盾获取详细说明文档。格式为number
data 加密的数据。格式为string
数据解密
保护数据内容的机密性。
neg.safeCommFromServer('<alg>','<data>')
.then(result => {
if (result.code === 200) { // 正常情况
alert('dec:', result.data)
} else { // 异常情况
alert('当前浏览器版本较低')
}
})
其中:
alg 签名算法。具体值请联系易盾获取详细说明文档。格式为number
data 解密的数据。格式为string

