反作弊接口说明
用途
运营对接过程中,为提高客户接入效果,指导客户不同场景下传入数据要求。同时,在了解客户业务后,可以针对性推荐埋点场景。
使用人员
运营人员
技术人员
简介
易盾通过反作弊引擎,在客户业务关键节点进行业务风险识别,并支持业务实时获取检测结果,拦截阻断风险业务行为。可拦截风险业务一共分以下几类:
(1)注册时,检测机器注册、群控批量注册、黑手机号码注册等行为
(2)登录时,检测撞库登录、机器自动登录等行为
(3)自定义活动场景时,比如点赞、评论、转发、邀请、送礼、提现、抽奖、领券等,识别场景下异常用户行为
上述识别基于易盾反作弊引擎系统,引擎中包含了识别规则引擎、风险画像库、聚类分析/关联分析等团伙挖掘算法等底层技术。
超时时长
默认为500ms,可配置
使用场景
客户依据凭证(token),从易盾服务端获取反作弊结果
请求
基本 | |
---|---|
HTTP URL | https://ac.dun.163.com/v3/common/check |
HTTP Method | POST |
请求头
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | string | 是 | 固定值:"application/x-www-form-urlencoded" |
请求参数
请求参数由公共参数和接口参数两部分组成,通用参数见请求公共参数
接口参数
特别说明
必传参数
:调用接口必须要传递的参数,否则调用接口失败
强烈建议参数
:调用接口强烈建议传递的参数,否则检测效果将大幅度降低
建议参数
:调用接口建议传递的参数,有利于进一步提高检测效率
强烈建议参数
和建议参数
如果实在没有可以不传,不会影响调用接口
参数名称 | 类型 | 传入说明 | 最大长度 | 描述 |
---|---|---|---|---|
token | string | 必传参数 | 256 | 反作弊结果查询token,由业务前端页面提交给业务后端。 |
account | string | 必传参数 | 256 | 用户唯一标识,如果是手机号or邮箱,支持传入hash值,hash算法:md5(account) |
ip | string | 必传参数 | 20 | 当前客户端业务事件发生时的公网IP地址(ipv4) |
phone | string | 强烈建议 | 64 | 用户用于登录的手机号码或者关联的手机号码,默认国内手机号。如有海外手机,需包含国家地区代码,格式为“+447410xxx186(+44即为国家码)”。如果需要加密,支持传入hash值,hash算法:md5(phone) |
activityId | string | 强烈建议 | 256 | 活动的唯一标识,用于标记场景下的细分类别,如:注册-自主注册、注册-受邀请注册;再如:登录- app登录、登录-web登录等 |
target | string | 强烈建议 | 256 | 活动操作的目标,比如:A给B点赞,则target为B。如果target是手机号或邮箱,请提供hash值,hash算法:md5(target)。如没有,可传空 |
string | 建议参数 | 64 | 用户的邮箱,如果需要加密,支持传入hash值,hash算法:md5(email) | |
registerTime | Number | 建议参数 | 13 | 用户的注册时间,单位:毫秒 |
registerIp | string | 建议参数 | 20 | 用户的注册IP |
nickname | string | 建议参数 | 256 | 用户的昵称/ID |
userLevel | string | 建议参数 | 32 | 用户的等级,如没有,可传空 |
extData | string | 建议参数 | 2048 | 拓展信息,建议客户自行构造json结构(不同场景下建议传递不同的参数,有助于提高场景下的检测效果,详见下述不同场景传递参数说明) |
普通场景
不同场景下建议传递不同的extData,社交类场景见社交场景、营销类场景见营销场景、电销类场景见电销场景、支付类场景见支付场景
1. 注册
用户注册当前应用账号
- extData Json内容:
参数名 | 类型 | 传入说明 | 描述 | 备注 |
---|---|---|---|---|
hashPassword | string | 强烈建议 | 加密后的用户密码 | |
appVersion | string | 强烈建议 | 当前客户端应用版本号 | |
payingUser | string | 建议参数 | 是否为付费用户 | 取值true、false,用于初步判定用户付费or黑产倾向 |
registerPlatform | string | 建议参数 | 第三方注册平台,如果非三方平台注册,可传空 | |
verified | string | 建议参数 | 是否认证(信息认证、实名认证等) | 取值true、false,用于确认用户是否已做实名认证 |
identity | string | 建议参数 | 用户身份 | 用于区分签约主播、高级vip、普通用户等 |
gender | string | 建议参数 | 注册用户的性别,如无,可传空 | |
inviterAccount | string | 建议参数 | 邀请注册人的账号名 / 邀请码等,如无,可传空 | |
registerChannel | string | 建议参数 | 注册用户来源渠道,如无,可传空 |
2. 登录
用户登录当前应用
- extData Json内容:
参数名 | 类型 | 传入说明 | 描述 | 备注 |
---|---|---|---|---|
hashPassword | string | 强烈建议 | 加密后的用户密码 | |
appVersion | string | 强烈建议 | 当前客户端应用版本号 | |
gender | string | 建议参数 | 注册用户的性别,如无,可传空 | |
age | int | 建议参数 | 用户年龄 | |
vaildCustomer | int | 建议参数 | 用户名或密码验证结果(0:表示失败,1:表示成功) | 可用于撞库登录识别 |
registerChannel | string | 建议参数 | 注册用户来源渠道,如无,可传空 | |
registerDate | string | 建议参数 | 用户注册账号日期 | |
registerDay | int | 建议参数 | 用户注册天数 |
作弊方式举例:机器自动登录
3. 更新账户信息
用户更新当前账号信息
- extData Json内容:
参数名 | 类型 | 传入说明 | 描述 | 备注 |
---|---|---|---|---|
appVersion | string | 强烈建议 | 当前客户端应用版本号 | |
newEmail | string | 强烈建议 | 变更后的邮箱地址,如果需要加密,支持传入hash值,hash算法:md5(newEmail) | |
newPhone | string | 强烈建议 | 变更后的手机号码,如果需要加密,支持传入hash值,hash算法:md5(newPhone) | |
newName | string | 建议参数 | 变更后的昵称 | |
gender | string | 建议参数 | 用户的性别,如无,可传空 | |
age | int | 建议参数 | 用户年龄 | |
registerChannel | string | 建议参数 | 注册用户来源渠道,如无,可传空 |
4. 浏览
用户浏览app中某个具体的页面,建议只在重要页面埋点
- extData Json内容:
参数名 | 类型 | 传入说明 | 描述 | 备注 |
---|---|---|---|---|
appVersion | string | 强烈建议 | 当前客户端应用版本号 | |
pageName | string | 强烈建议 | 浏览页面名称/ID | |
visitSource | string | 强烈建议 | 浏览页面来源,进入页面的途径。如无,可传空 | |
contentID | string | 建议参数 | 浏览页面内容ID,用于重点定位防控内容。 |
5. 签到
用户在app中进行签到领取福利
- extData Json内容:
参数名 | 类型 | 传入说明 | 描述 | 备注 |
---|---|---|---|---|
appVersion | string | 强烈建议 | 当前客户端应用版本号 | |
signDate | string | 强烈建议 | 当前签到日期 | |
haveSignDays | int | 强烈建议 | 累计签到天数 | |
signAwardID | string | 建议参数 | 签到奖励内容 ID |
6. 下载
用户通过app下载指定的内容(比如推广的app、app内的视频、音频、图片等)
- extData Json内容:
参数名 | 类型 | 传入说明 | 描述 | 备注 |
---|---|---|---|---|
appVersion | string | 强烈建议 | 当前客户端应用版本号 | |
downloadContent | string | 强烈建议 | 下载目标内容名称/ID | |
downloadSize | int | 强烈建议 | 下载内容大小,通常用“MB”作为计量单位 | |
price | string | 建议参数 | 下载内容消耗的金额,可以是app内货币等。如无,可传空 |
7. 浏览
用户通过浏览内容获取奖励
- extData Json内容:
参数名 | 类型 | 传入说明 | 描述 | 备注 |
---|---|---|---|---|
contentID | string | 强烈建议 | 浏览内容ID | |
contentType | string | 强烈建议 | 浏览内容类型,比如文章、视频、图片等 | |
isAward | int | 建议参数 | 事件是否能够获取激励,一般0表示有,1表示没有 | |
awardID | string | 建议参数 | 如事件产生了激励,可传递激励内容ID。如无,可传空 |
响应
响应结果(result)内容如下,响应公共字段已省略,详细见响应公共字段
参数名 | 类型 | 描述 |
---|---|---|
action | int | 检测结果:0 正常(放行),10 正常(观察),20 致命(拦截) |
taskId | string | 任务id,与检测请求一一对应,建议保存此值方便以后数据查询 |
hitInfos | List | 命中信息详情,返回字段内容参照命中字段表(检测结果正常时,字段内容为空) |
detail | json | 设备信息详情,字段解释见设备指纹字段表(默认不返回,可配置开通) |
hitInfos
命中详情信息(hitInfos)内容如下(命中多种风险类型时,所有命中风险均会展示):
参数名 | 类型 | 描述 |
---|---|---|
hitType | int | 命中的风险类型 |
hitTypeDesc | string | 命中的风险类型的中文描述 |
hitMsg | string | 命中的风险的详情描述(可能为空) |
hitType返回码及含义如下:
hitType值 | 含义描述 |
---|---|
0 | 正常 |
1 | 数据异常,主要表现有数据完整性校验不通过或数据伪造等 |
2 | 行为异常,主要表现有用户的操作行为(鼠标点击/移动等)无法通过行为验证模型等 |
3 | 设备模型,主要表现有设备指纹等信息无法通过设备验证模型等 |
4 | 业务模型,主要表现有撞库、批量操作、违反业务规则等 |
5 | 校验异常,主要表现有数据强校验结果异常或数据伪造等 |
6 | 模拟器,主要表现有安卓端使用手机模拟器的行为 |
7 | 越狱或ROOT,主要表现有iOS系统已越狱或Android系统已root |
8 | 浏览器异常,主要表现有浏览器分辨率等参数异常或遭篡改等 |
9 | IP异常,主要表现有终端IP画像结果为风险IP或高危IP等 |
10 | 黑名单,易盾自有及客户自定义黑名单数据 |
11 | 白名单,易盾自有及客户自定义白名单数据 |
12 | 高危账号,主要表现有团伙账号或异常共享账号等风险账号类型 |
13 | 多开小号,主要表现有批量多开 |
14 | 篡改硬件信息,主要表现为篡改硬件设备参数信息 |
15 | 篡改系统信息,主要表现为篡改系统参数信息 |
16 | 高危设备,主要表现为高危设备画像风险评分,黑产特征设备等类型 |
17 | 群控或云控,主要表现为群控工作室设备或云机 |
18 | 使用修改工具,主要表现有使用Hook修改、Xposed修改,Magisk修改等 |
19 | 虚拟环境,非真实设备访问环境,区别于安卓模拟器,如编辑后台等 |
20 | 脚本工具,黑灰产用于作弊行为的脚本工具 |
自定义编码 | 客户定制添加的风险类型 |
detail
设备信息详情(detail)内容如下:
- Android / iOS(如有更多详细信息需要,联系产品技术团队评估):
参数名 | 类型 | 描述 | 终端 |
---|---|---|---|
deviceId | string | 设备唯一指纹 | iOS、Android |
osv | string | 系统版本 | iOS、Android |
model | string | 手机厂商 | iOS、Android |
appVersion | string | APP版本号 | iOS、Android |
simulator | int | 是否模拟器(0:不是模拟器,非0:是模拟器) | iOS、Android |
root | int | 是否root(0:不是root,1:是root) | iOS、Android |
flag | int | 是否被调试(0:没有被调试,非0:被调试) | iOS、Android |
injection | Boolean | 是否注入 | iOS、Android |
mac | string | mac地址 | Android |
- web / h5:
参数名 | 类型 | 描述 | 终端 |
---|---|---|---|
deviceId | string | 设备唯一标识 | web/h5 |
appVersion | string | 浏览器版本信息 | web/h5 |
完整响应结果代码示例
反作弊识别为正常的响应结果:
{
"code":200,
"msg":"ok",
"result":{
"action":0,
"taskId":"698256a52215495ab3c61f14e8e6e844",
"hitInfos":[
{
}]
}
}
反作弊识别为作弊的响应结果:
{
"code":200,
"msg":"ok",
"result":{
"action":0,
"taskId":"698256a52215495ab3c61f14e8e6e844",
"hitInfos":[ //如果同时命中多个类型,则会返回所有风险信息
{
"hitType":5,
"hitTypeDesc":"校验异常",
"hitMsg":"正式定制版在这个字段会返回命中详情"
},
{
"hitType":6,
"hitTypeDesc":"模拟器",
"hitMsg":"正式定制版在这个字段会返回命中详情"
}
],
"detail": {
"deviceData": {
"appVersion": "1.0",
"osv": "6.0",
"simulator": 2,
"flag": 0,
"root": 1,
"model": "M55 Note",
"injection": false,
"deviceId": "41c75882d231afec0dbf2d54d18c66df",
"mac": "a4:49:d1:e4:6d:d7"
}
}
}
}
完整示例代码
示例代码见 示例代码