文档管理中心
指南安全检测服务恶意URL检测API

恶意URL检测API

系统特性

URLCheck提供恶意URL检测能力,向您提供集成简单、免运营、可信赖的安全服务,降低安全浏览服务的实现成本。

业务流程

  1. 您的App集成HMS Core SDK,调用URLCheck服务。
  2. 安全检测服务向URLCheck服务器请求URL检测,并将检测结果返回给您的应用(正常、PHISHING、MALWARE)。
  3. 您的App可以根据检测结果来决定是否访问URL。

典型场景

用户访问网址时,判断用户访问的URL是否为恶意网址,对于恶意网址,由您评估提示或拦截用户的访问风险。

应用开发

调用URLCheck API主要分为三个步骤:

  1. 初始化URLCheck API:

    在使用URLCheck API前,必须调用initUrlCheck方法进行接口初始化,并且需要等待初始化完成后再进行接下来的接口调用,示例代码如下:
    Java
    Kotlin
    SafetyDetectClient client = SafetyDetect.getClient(getActivity());
    client.initUrlCheck();
    client = SafetyDetect.getClient(activity)
    client.initUrlCheck()

  2. 请求网址检测:

    指定关注的威胁类型,您可以将关注的威胁类型作为网址检测API的参数。其中,UrlCheckThreat类中的常量包含了当前支持的威胁类型:

    public class UrlCheckThreat {
        //此类型URL被标记为包含潜在有害应用的页面的URL(篡改首页、网页挂马、恶意应用下载链接等)
        public static final int MALWARE = 1;
        // 这种类型的URL被标记为钓鱼、欺诈网站
        public static final int PHISHING = 3;
    }
    发起网址检测请求,待检测的URL包含协议、主机、路径,不包含查询参数。调用API示例代码如下:
    Java
    Kotlin
    String url = "https://developer.huawei.com/consumer/cn/";
    SafetyDetect.getClient(this).urlCheck(url, appId, UrlCheckThreat.MALWARE, UrlCheckThreat.PHISHING).addOnSuccessListener(this, new OnSuccessListener<UrlCheckResponse >(){
        @Override
        public void onSuccess(UrlCheckResponse urlResponse) {
            if (urlResponse.getUrlCheckResponse().isEmpty()) {
            // 无威胁
            } else {
            // 存在威胁!
            }
        }
    }).addOnFailureListener(this, new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            // 与服务通信发生错误.
            if (e instanceof ApiException) {
                // HMS发生错误的状态码及对应的错误详情.
                ApiException apiException = (ApiException) e;
                Log.d(TAG, "Error: " + CommonStatusCodes.getStatusCodeString(apiException.getStatusCode()));
            // 注意:如果状态码是SafetyDetectStatusCode.CHECK_WITHOUT_INIT,
            // 这意味着您未调用initUrlCheck()或者调用未完成就发起了网址检测请求,
            // 或者在初始化过程中发生了内部错误需要重新进行初始化,需要重新调用initUrlCheck()
            } else {
                // 发生未知类型的异常.
                Log.d(TAG, "Error: " + e.getMessage());
            }
        }
    });
     val url = "https://developer.huawei.com/consumer/cn/"
     client.urlCheck(
                url,
                APP_ID,  // Specify url threat type
                UrlCheckThreat.MALWARE,
                UrlCheckThreat.PHISHING
            ).addOnSuccessListener {
                val list = it.urlCheckResponse
                if (list.isEmpty()) {
                    // 无威胁
                } else {
                    // 存在威胁!
                }
            }.addOnFailureListener {
                // 与服务通信发生错误.
                if (it is ApiException) {
                    // HMS发生错误的状态码及对应的错误详情.
                    val apiException = it
                    Log.d(
                        TAG,
                        "Error: " + CommonStatusCodes.getStatusCodeString(apiException.statusCode)
                    )
                    // 注意:如果状态码是SafetyDetectStatusCode.CHECK_WITHOUT_INIT,
                    // 这意味着您未调用initUrlCheck()或者调用未完成就发起了网址检测请求,
                    // 或者在初始化过程中发生了内部错误需要重新进行初始化,需要重新调用initUrlCheck()
                } else {
                    // 发生未知类型的异常.
                    Log.d(TAG, "Error: " + it.message)
                }
            }
    获取网址检测的响应,调用返回对象UrlCheckResponsegetUrlCheckResponse方法,返回List<UrlCheckThreat>,包含检测到的URL威胁类型。若该列表为空,则表示未检测到威胁,否则,可调用UrlCheckThreat中的getUrlCheckResult取得具体的威胁代码。示例代码如下:
    Java
    Kotlin
    final EditText testRes = getActivity().findViewById(R.id.fg_call_urlResult);
    List<UrlCheckThreat> list = urlCheckResponse.getUrlCheckResponse();
    if (list.isEmpty()) {
            testRes.setText("ok");
        }
    else{
            for (UrlCheckThreat threat : list) {
                int type = threat.getUrlCheckResult();
            }
        }
    val list = it.urlCheckResponse
    if (list.isEmpty()) {
    			fg_call_urlResult.text = Editable.Factory.getInstance().newEditable("ok")
    		} else {
    			for (threat in list) {
    				val type = threat.urlCheckResult
    			}
    		}

  3. 关闭网址检测会话:

    如果您的应用不再使用或长时间不再调用网址检测接口,请调用shutdownUrlCheck方法关闭网址检测会话,释放资源。
    Java
    Kotlin
    SafetyDetect.getClient(this).shutdownUrlCheck();
    client.shutdownUrlCheck()

错误码

具体错误码请参见API参考文档

说明

校验逻辑请参见客户端示例代码URLCheck示例代码部分。

在 指南 中进行搜索
请输入您想要搜索的关键词