詳細實例教程!集成華爲虛假用戶檢測,防範虛假惡意流量

前言

最近老闆要我開發一個商城App,在註冊登陸環節過濾掉虛假用戶,減小這些惡意流量對App運營的影響。偶然想起來,在今年的華爲開發者大會上了解到虛假用戶檢測功能,因而準備試試集成在咱們的App上。集成後發現效果還真不錯,不只對虛假用戶識別率高,並且目前這項功能是免費開放的。老闆不再用擔憂以前的虛假用戶撞庫、惡意刷帖、薅羊毛等問題了。html

今天簡單總結了一下我開發過程的教程,分享給你們!java

官網的Demo和Sample代碼體驗

華爲官網上有實例代碼能夠直接下下來看,除了虛假用戶檢測(UserDetect),還有其餘4個功能的示例代碼,都是支持Java和Kotlin兩種開發語言的:華爲官網的示例代碼Java/Kotlin,下載下來之後,根據官網頁面的提示說明,改一下包名就能夠運行。android

我本身寫的簡易sample,朋友們感興趣也能夠下下來參考。git

商城App集成安全檢測 sample示例github

1 開發前準備

1.1 Android studio安裝

開發工具尚未裝的小夥伴能夠先本身下載一下:
Android studio官網下載:https://developer.android.com/studio?ha_source=hms1
Android studio安裝教程:http://www.javashuo.com/article/p-wamzpmfl-bo.htmljson

1.2 在AppGallery Connect中配置相關信息

在開發應用前,須要在AppGallery Connect中配置相關信息。具體操做步驟瀏覽器

1.3 配置華爲maven倉地址

打開Android Studio項目級「build.gradle」文件:安全

在這裏插入圖片描述

添加HUAWEI agcp插件以及Maven代碼庫:app

  • 在「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<Boolean>() {
                @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<? super Boolean> 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<UserDetectResponse>() {
            @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

原做者:晚上吃啥

相關文章
相關標籤/搜索