详细实例教程!集成华为虚假用户检测,防范虚假恶意流量

前言 最近老板要我开发一个商城App,在注册登录环节过滤掉虚假用户,减少这些恶意流量对App运营的影响。偶然想起来,在今年的华为开发者大会上了解到虚假用户检测功能,于是准备试试集成在我们的App上。集成后发现效果还真不错,不仅对虚假用户识别率高,而且目前这项功能是免费开放的。老板再也不用担心之前的虚假用户撞库、恶意刷帖、薅羊毛等问题了。
今天简单总结了一下我开发过程的教程,分享给大家!
官网的Demo和Sample代码体验 华为官网上有实例代码可以直接下下来看,除了虚假用户检测(UserDetect),还有其他4个功能的示例代码,都是支持Java和Kotlin两种开发语言的:华为官网的示例代码Java/Kotlin,下载下来以后,根据官网页面的提示说明,改一下包名就可以运行。
我自己写的简易sample,朋友们感兴趣也可以下下来参考。
商城App集成安全检测 sample示例
1 开发前准备 1.1 Android studio安装
开发工具还没有装的小伙伴可以先自己下载一下:
Android studio官网下载:https://developer.android.com/studio?ha_source=hms1
Android studio安装教程:https://www.cnblogs.com/xiadewang/p/7820377.html
1.2 在AppGallery Connect中配置相关信息
在开发应用前,需要在AppGallery Connect中配置相关信息。具体操作步骤
1.3 配置华为maven仓地址
打开Android Studio项目级“build.gradle”文件:
详细实例教程!集成华为虚假用户检测,防范虚假恶意流量
文章图片

添加HUAWEI agcp插件以及Maven代码库:

  • 在“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。
  • 在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。
  • 如果App中添加了“agconnect-services.json”文件则需要在“buildscript > dependencies”中增加agcp配置。
buildscript { repositories { google() jcenter() // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} } dependencies { ... // 增加agcp配置。 classpath 'com.huawei.agconnect:agcp:1.4.2.300' } } allprojects { repositories { google() jcenter() // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} } }

这里需要说明的是,Maven仓地址无法直接在浏览器中打开访问,只能在IDE中配置。需要添加多个Maven代码库的话,将华为公司的Maven仓地址配置在最后哦。
1.4 添加编译依赖
打开应用级的“build.gradle”文件:
详细实例教程!集成华为虚假用户检测,防范虚假恶意流量
文章图片

在文件头 apply plugin: 'com.android.application' 下一行添加如下配置:
apply plugin: 'com.huawei.agconnect'

在“dependencies”中添加如下编译依赖:
dependencies { implementation 'com.huawei.hms:safetydetect:5.0.5.301' }

1.5 配置混淆脚本
如果你自己开发时要用到AndResGuard,那就还需要在应用级的“build.gradle”文件中加入AndResGuard允许清单,代码可以参考官网的混淆配置。
2 代码开发 2.1 创建SafetyDetectClient
// 替换成自己的 activity 或者 context作为参数. SafetyDetectClient client = SafetyDetect.getClient(MainActivity.this);

2.2初始化虚假用户行为检测
在使用该能力前,需要先通过initUserDetect接口完成初始化工作。我在商城App的LoginAct.java类的onResume方法里来调用初始化接口,示例代码如下:
@Override protected void onResume() { super.onResume(); // 初始化虚假用户检测API SafetyDetect.getClient(this).initUserDetect(); }

2.3 发起检测请求
我设计的是在商城App用户登录阶段进行虚假用户检测的,一般检测请求也可以设计在抢购、抽奖等环节。
先在LoginAct.java中的onLogin方法中,调用SafetyDetectUtil的callUserDetect方法来发起检测。我具体的业务逻辑:商场App在判断用户名和密码是否正确之前发起虚假用户检测,然后通过回调方法来获取检测结果,并做相应的处理。若检测结果为真实用户,则允许该用户登录,否则不允许其登录操作:
private void onLogin() { final String name = ... final String password = ... new Thread(new Runnable() { @Override public void run() { // 调用经过封装后的虚假用户检测接口,此处需要传入当前的Activity或上下文并添加回调处理 SafetyDetectUtil.callUserDetect(LoginAct.this, new ICallBack() { @Override public void onSuccess(Boolean userVerified) { // 虚假用户检测成功 if (userVerified){ // 检测结果为成功,继续登录 loginWithLocalUser(name, password); } else { // 检测结果为失败,登录失败 ToastUtil.getInstance().showShort(LoginAct.this, R.string.toast_userdetect_error); } } }); } }).start(); }

SafetyDetectUtil.java中的callUserDetect方法封装了虚假用户检测中的关键流程,如APP ID的获取、responseToken的获取以及向App Server发送responseToken等,详见:
public static void callUserDetect(final Activity activity, final ICallBack callBack) { Log.i(TAG, "User detection start."); // 从app目录下的agconnect-services.json文件中读取app_id字段 String appid = AGConnectServicesConfig.fromContext(activity).getString("client/app_id"); // 调用虚假用户检测 API,并添加回调来做后续的异步处理 SafetyDetect.getClient(activity) .userDetection(appid) .addOnSuccessListener(new OnSuccessListener() { @Override public void onSuccess(UserDetectResponse userDetectResponse) { // 虚假用户检测成功,通过 getResponseToken 方法来获取responseToken String responseToken =userDetectResponse.getResponseToken(); // 将该responseToken发送到App Server boolean verifyResult = verifyUserRisks(activity, responseToken); callBack.onSuccess(verifyResult); Log.i(TAG, "User detection onSuccess."); } }) }

到这里,responseToken就通过虚假用户检测API拿到啦。
2.4 获取检测结果
获得上述的responseToken后,提交至App服务端,再由App服务端发送到Safety Detect Server,调用verify云侧接口获取结果。不过在中国大陆地区,由于User Detect不支持验证码二次验证,为了保证检测同样准确有效,调用的是nocaptcha云侧接口来获取检测结果。
具体步骤:
a) 获取Access Token
打开AppGallery Connect网站 - “我的应用” - “HMSPetStoreApp” - “分发” - “应用信息”,可以查看SecretKey,如图:
详细实例教程!集成华为虚假用户检测,防范虚假恶意流量
文章图片

然后使用SecretKey和APP ID请求华为认证服务获取Access Token,获取方法参考
b) 调用Safety Detect Server接口获取结果
根据上一步中获取到的Access Token,和之前获取到的responseToken,调用Safety Detect Server的检测结果查询接口,小伙伴戳这里参考接口调用方法。
最后获取的检测结果,可以通过App Server直接返回给App。True代表真实用户,False代表虚假用户,App可以根据自身业务场景来完成对应的防护处理。
2.5 关闭虚假用户检测
小伙伴们记得用完以后关闭服务,释放资源哦。在App的LoginAct.java 类的onPause方法中调用关闭接口:
@Override protected void onPause() { super.onPause(); // 关闭虚假用户检测API SafetyDetect.getClient(this).shutdownUserDetect(); }

结后语 整个代码开发过程就结束啦,保姆级教程,是不是超简单,给大家看下效果:
Demo演示请戳此
附官方开发指南
华为虚假用户检测开发指南
原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0202445499791050552?fid=18
【详细实例教程!集成华为虚假用户检测,防范虚假恶意流量】原作者:晚上吃啥

    推荐阅读