数据查询接口V4
2023.05.08 17:12:44
接口说明
本接口的功能是智能风控明细数据查询,主要用于数据同步:从易盾拉取数据场景,以固定时间窗口拉取数据。例如,每次查询1分钟前的数据,时间跨度也是1分钟,则可以按1分钟时间窗口,周期性滑动拉取数据。
鉴权说明
易盾智能风控服务使用签名方法对接口进行鉴权,所有接口每一次请求都需要包含签名信息(signature 参数),以验证用户身份,防止信息被恶意篡改。目前支持MD5,SHA1,SHA256,SM3几种加密算法,详细信息,请参见接口鉴权。
接入须知
-
注意事项:因取证信息场景复杂,为了保障封号依据完备,如需封号,建议结合角色的业务数据进行二次判断或者 和易盾技术人员进行二次确认,以确保准确无误;控制接口调用频率,频率过高,可能会超过频率限制,导致查询失败,建议间隔大于10s。
-
数据时间有效性
- 可以导出最近一个月的所有数据
- 可以导出Open API接入之前的数据
-
导出数据量
- 采用深度分页方式返回数据:如果查询条件返回数据量超过1万条,会以分页形式返回;下一页查询标识,见
startFlag
请求参数说明 - 建议每次查询1分钟前的数据,时间跨度也是1分钟,按1分钟时间窗口,周期性滑动拉取数据。这个时间粒度,很少会超过1万条。
- 采用深度分页方式返回数据:如果查询条件返回数据量超过1万条,会以分页形式返回;下一页查询标识,见
-
示例demo地址
- https://github.com/yidun/irisk-openapi-demo
请求说明
请求地址
名称 | 值 |
---|---|
HTTP URL | http://ir-open.dun.163.com/v4/risk/detail |
HTTP Method | POST |
请求头
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | String | 是 | 固定值:"Content-Type:application/json" |
请求参数
请求参数分为:公共参数,接口参数。其中,公共参数请见公共请求参数;接口参数如下:
参数 | 类型 | 必填 | 描述 |
---|---|---|---|
beginTimestamp | Long | 是 | 开始时间戳,单位: ms, 不能小于30天前 |
endTimestamp | Long | 是 | 结束时间戳,单位: ms, 结束时间戳与开始时间戳的时间间隔不能大于30天 |
startFlag | String | 否 | 用于分页查询的关联标记。第一次查询时,该字段填充空字符串""或不传该字段均可,后续查询时,需要判断上一次查询的返回数据中startFlag值,如果startFlag不为空字符串"",表示需要分页查询。当使用分页查询时,startFlag字段使用上一次返回值填充,其他字段保持不变,继续调用查询接口。如果startFlag为空字符串"",例如返回数据为{"code": 200, "msg": "ok", "data": {"size": 100, "startFlag": "", "detail": [{},...]}},表示不需要分页查询,可以使用新的时间条件查询。 |
account | String | 否 | 用户/玩家的账号 |
roleId | String | 否 | 用户/玩家的角色ID |
riskLevel | Integer | 否 | 风险等级,10-高风险,20-中风险,30-低风险 |
packageName | String | 否 | 包名 |
appVersion | String | 否 | app版本 |
ip | String | 否 | ip地址 |
请求参数示例
{
"businessId": "xxx966f73yyy59440583zzz9bfcc79df",
"secretId": "nnn966f73yyy59440583zzz9bfcc79dc",
"timestamp": ${currentTime},
"nonce": "mmm888f73yyy59440583zzz9bfcc79de",
"version": "400",
"signature": "lll888f73yyy59440583zzz9bfcc79da",
"beginTimestamp": 1667959831798,
"endTimestamp": 1667959915103,
"startFlag": "",
"account": "zzzzzzz", // 非必传
"roleId": "yyyyyyy", // 非必传
"riskLevel": 10, // 非必传
"packageName": "com.aaa.bbb", // 非必传
"appVersion": "1.0.2", // 非必传
"ip": "192.168.1.1" // 非必传
}
//其中,参与签名验证计算的参数如下
{
//公共参数
"businessId": "xxx966f73yyy59440583zzz9bfcc79df",
"secretId": "nnn966f73yyy59440583zzz9bfcc79dc",
"timestamp": ${currentTime},
"nonce": "mmm888f73yyy59440583zzz9bfcc79de",
"version": "400"
}
响应
响应结果
响应数据格式为:JSON。
响应头为:Content-Type:application/json,具体如下:
参数 | 类型 | 描述 |
---|---|---|
code | Integer | 响应码,正常情况下为200,异常时,见 附录响应码定义 |
msg | String | 响应码说明,正常情况下返回“ok”,异常时,见 附录响应码定义 |
desc | String | 响应信息描述,非必返,常见错误情况下会返回错误说明或错误参考文档 |
data | JSONObject | 返回数据格式, 如下 |
参数 | 类型 | 说明 |
---|---|---|
size | Integer | 本次查询返回的数据条数 |
startFlag | String | 用于分批查询的关联标记。1. 当查询需要分批返回数据时,表示下一批数据起始标记。2. 当该值返回为空字符串""时,表示数据都已经返回,不需要继续执行下一批查询 |
detail | Array<DetailData> | 具体返回数据,每条数据类型见明细数据DetailData结构 |
不同平台明细数据有所差异,具体参照“数据查询”页面中“自定义列”中字段,下表以Android平台为例:
参数 | 类型 | 说明 |
---|---|---|
token | String | token |
receiveTime | String | 时间 |
sessionId | String | 会话ID |
account | String | 角色账号 |
roleId | String | 角色ID |
roleName | String | 角色名称 |
roleServer | String | 角色服务器 |
roleLevel | String | 角色等级 |
currentOnlineTime | String | 登录时长 |
appName | String | 应用名称 |
packageName | String | 包名 |
appVersion | String | app版本 |
gameVersion | String | 游戏版本 |
assetVersion | String | 资源版本 |
signHash | String | 签名HASH |
signMd5 | String | 签名MD5 |
sdkVersion | String | SDK版本 |
localFeatureVersion | String | 本地特征版本 |
deviceType | String | 设备类型 |
model | String | 品牌型号 |
deviceOs | String | 设备系统 |
osVersion | String | 系统版本 |
deviceId | String | 设备ID |
emulatorDid | String | 主机ID |
networkType | String | 网络类型 |
ip | String | IP地址 |
location | String | 地区 |
riskLevel | String | 风险等级 |
execAction | String | 执行动作 |
matchedRules | String | 命中的规则编号, 以";"连接 |
matchedRiskTags | String | 命中的风险标签, 以";"连接 |
响应结果示例
- 当不需要执行下一批次查询时:
{
"code": 200,
"msg": "ok!",
"data": {
"size": 100,
"startFlag": "",
"detail": [
{
"roleServer": "xxxx",
"appVersion": "2.1.1",
"riskLevel": "高风险",
"matchedRules": "R20220929143720059;R20220929110507299;R20220929112305870",
"deviceOs": "IOS",
"deviceId": "CAhLczArTdNFSlQBUQaQSjg3eyndeBft",
"osVersion": "11.0",
"model": "iPhone 12",
"roleLevel": "",
"packageName": "com.aaa.bbb",
"networkType": "2G",
"deviceType": "模拟器",
"signHash": "2022a0b1ccddeeffa0b1ccdd99bb9977",
"roleId": "RoT-1025788773",
"appName": "appName001",
"execAction": "放行",
"ip": "115.236.119.140",
"sessionId": "sessionId001",
"token": "rMc6A1zRxhFEDFRQAQKVXsA+utHq5o3l",
"emulatorDid": "",
"receiveTime": "2022-09-29 14:39:45",
"matchedRiskTags": "环境风险-模拟器-通用模拟器;环境风险-云真机-云真机设备;外挂风险-加速挂-烧饼加速器",
"localFeatureVersion": "99",
"assetVersion": "0.1.1",
"roleName": "rolename9",
"gameVersion": "1.0.1",
"signMd5": "adffdgsdfgsfdhgdsfgh",
"sdkVersion": "1.1.3",
"location": "中国-浙江-杭州",
"account": "roleaccount887142103",
"currentOnlineTime": "10h 13min 9s"
}
]
},
"ok":true
}
- 当需要继续执行下一批次查询时:
{
"code": 200,
"msg": "ok!",
"data": {
"size": 10000,
"startFlag": "MTY2NDQzMzU4NTYxMSMxZTlxdjR1ZGpjaDk5djM0MDBmbmVidmdkZDAwOXdxdQ==",
"detail": [
{
"roleServer": "xxxx",
"appVersion": "2.1.1",
"riskLevel": "高风险",
"matchedRules": "R20220929143720059;R20220929110507299;R20220929112305870",
"deviceOs": "IOS",
"deviceId": "CAhLczArTdNFSlQBUQaQSjg3eyndeBft",
"osVersion": "11.0",
"model": "iPhone 12",
"roleLevel": "",
"packageName": "com.aaa.bbb",
"networkType": "2G",
"deviceType": "模拟器",
"signHash": "2022a0b1ccddeeffa0b1ccdd99bb9977",
"roleId": "RoT-1025788773",
"appName": "appName001",
"execAction": "放行",
"ip": "115.236.119.140",
"sessionId": "sessionId001",
"token": "rMc6A1zRxhFEDFRQAQKVXsA+utHq5o3l",
"emulatorDid": "",
"receiveTime": "2022-09-29 14:39:45",
"matchedRiskTags": "环境风险-模拟器-通用模拟器;环境风险-云真机-云真机设备;外挂风险-加速挂-烧饼加速器",
"localFeatureVersion": "99",
"assetVersion": "0.1.1",
"roleName": "rolename9",
"gameVersion": "1.0.1",
"signMd5": "adffdgsdfgsfdhgdsfgh",
"sdkVersion": "1.1.3",
"location": "中国-浙江-杭州",
"account": "roleaccount887142103",
"currentOnlineTime": "10h 13min 9s"
},
//... 此处省略9999条数据
]
},
"ok":true
}
响应返回码
响应返回码见:响应返回码