目录

1 系统特性

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

2 典型场景

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

3 开发流程

请参考:开发流程

4 应用开发

4.1 调用 URLCheck API

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

1. 初始化URLCheck API。

2. 请求网址检测。

3. 关闭网址检测会话。

4.2 初始化URLCheck API

在使用URLCheck API前,必须调用initUrlCheck()方法进行接口初始化,并且需要等待初始化完成后再进行接下来的接口调用,示例代码如下:

  1. SafetyDetectClient client = SafetyDetect.getClient(getActivity());
  2. client.initUrlCheck();

4.3 请求网址检测

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

  1. public class UrlCheckThreat {
  2.    //此类型URL被标记为包含潜在有害应用的页面的URL(篡改首页、网页挂马、恶意应用下载链接等)
  3.    public static final int MALWARE = 1;
  4.    // 这种类型的URL被标记为钓鱼、欺诈网站
  5.    public static final int PHISHING = 3;
  6. }

发起网址检测请求,待检测的URL包含协议、主机、路径,不包含查询参数。调用API示例代码如下: 

  1. String url = "https://developer.huawei.com/consumer/cn/";
  2. SafetyDetect.getClient(this).urlCheck(url, appId, UrlCheckThreat.MALWARE, UrlCheckThreat.PHISHING).addOnSuccessListener(this, new OnSuccessListener<UrlCheckResponse >(){
  3.    @Override
  4.    public void onSuccess(UrlCheckResponse urlResponse) {
  5.        if (urlResponse.getUrlCheckResponse().isEmpty()) {
  6.        // 无威胁
  7.        } else {
  8.        // 存在威胁!
  9.        }
  10.    }
  11. }).addOnFailureListener(this, new OnFailureListener() {
  12.    @Override
  13.    public void onFailure(@NonNull Exception e) {
  14.        // 与服务通信发生错误.
  15.        if (e instanceof ApiException) {
  16.            // HMS发生错误的状态码及对应的错误详情.
  17.            ApiException apiException = (ApiException) e;
  18.            Log.d(TAG, "Error: " + CommonStatusCodes.getStatusCodeString(apiException.getStatusCode()));
  19.        // 注意:如果状态码是SafetyDetectStatusCode.CHECK_WITHOUT_INIT,
  20.        // 这意味着您未调用initUrlCheck()或者调用未完成就发起了网址检测请求,
  21.        // 或者在初始化过程中发生了内部错误需要重新进行初始化,需要重新调用initUrlCheck()
  22.        } else {
  23.            // 发生未知类型的异常.
  24.            Log.d(TAG, "Error: " + e.getMessage());
  25.        }
  26.    }
  27. });

获取网址检测的响应,调用返回对象URLCheckResponse的getUrlCheckResponse()方法,返回List<UrlCheckThreat>, 包含检测到的URL威胁类型。若该列表为空,则表示未检测到威胁,否则,可调用UrlCheckThreat中的getUrlCheckResult ()取得具体的威胁代码。示例代码如下: 

  1. final EditText testRes = getActivity().findViewById(R.id.fg_call_urlResult);
  2. List<UrlCheckThreat> list = urlCheckResponse.getUrlCheckResponse();
  3. if (list.isEmpty()) {
  4.        testRes.setText("ok");
  5.    }
  6. else{
  7.        for (UrlCheckThreat threat : list) {
  8.            int type = threat.getUrlCheckResult();
  9.        }
  10.    }
说明:

4.4 关闭网址检测会话

如果您的应用不再使用或长时间不再调用网址检测接口,请调用shutdownUrlCheck()方法关闭网址检测会话,释放资源:

  1. SafetyDetect.getClient(this).shutdownUrlCheck();

4.5 错误码

具体错误码码详见:API参考文档。