URLCheck提供恶意URL检测能力,向开发者提供集成简单、免运营、可信赖的安全服务,降低安全浏览服务的实现成本。
用户访问网址时,判断用户访问的URL是否为恶意网址,对于恶意网址,由开发者评估提示或拦截用户的访问风险。
请参考:开发流程
调用URLCheck API主要分为三个步骤:
1. 初始化URLCheck API。
2. 请求网址检测。
3. 关闭网址检测会话。
在使用URLCheck API前,必须调用initUrlCheck()方法进行接口初始化,并且需要等待初始化完成后再进行接下来的接口调用,示例代码如下:
- SafetyDetectClient client = SafetyDetect.getClient(getActivity());
- client.initUrlCheck();
指定关注的威胁类型,您可以将关注的威胁类型作为网址检测API的参数。 其中,UrlCheckThreat类中的常量包含了当前支持的威胁类型:
- public class UrlCheckThreat {
- //此类型URL被标记为包含潜在有害应用的页面的URL(篡改首页、网页挂马、恶意应用下载链接等)
- public static final int MALWARE = 1;
- // 这种类型的URL被标记为钓鱼、欺诈网站
- public static final int PHISHING = 3;
- }
发起网址检测请求,待检测的URL包含协议、主机、路径,不包含查询参数。调用API示例代码如下:
- 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());
- }
- }
- });
获取网址检测的响应,调用返回对象URLCheckResponse的getUrlCheckResponse()方法,返回List<UrlCheckThreat>, 包含检测到的URL威胁类型。若该列表为空,则表示未检测到威胁,否则,可调用UrlCheckThreat中的getUrlCheckResult ()取得具体的威胁代码。示例代码如下:
- 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();
- }
- }
如果您的应用不再使用或长时间不再调用网址检测接口,请调用shutdownUrlCheck()方法关闭网址检测会话,释放资源:
- SafetyDetect.getClient(this).shutdownUrlCheck();
具体错误码码详见:API参考文档。