重要说明:这里只是拿php举例,实际上sdk支持6种语言,包括php、python、java、go、.net和nodejs。具体可以看后面3.3
现在已提供命令行方式进行加固,详情请参考:https://cloud.tencent.com/developer/article/1193406
一、安装(以下两种安装方式任选其一)
1.1、使用 Composer安装
1.1.1安装 Composer(如果已经有Composer请忽略)
windows 环境请访问 Composer官网 下载安装包安装。unix 环境在命令行中执行以下命令安装。
curl -sS https://getcomposer.org/installer | php
1.1.2 在 composer.json 的 require 结构体中加入依赖:注意这里的版本号只是举例,您可以在composer仓库上看到最新的版本号。
"tencentcloud/tencentcloud-sdk-php": "3.0.2"
1.1.3 运行 composer install 下载安装 PHP SDK
1.1.4 添加以下引用代码,引用方法可参考示例。
require 'vendor/autoload.php';
1.2、通过源码包安装
1.2.1前往 Github 代码托管地址 下载源码压缩包。
1.2.2解压源码包到您项目合适的位置。
1.2.3添加以下引用代码,引用方法可参考示例。
require_once '../TCloudAutoLoader.php';
二、使用示例
以下为了说明问题将两个接口分开,实际上可以将两个接口在一份代码中使用,只要use对应的接口即可。两个例子区别只在第3步和第7步
2.1 提交加固请求
<?php
// 1、引用
// 如果通过Composer安装,那么引用方式是:require 'vendor/autoload.php';
// 如果是源码包安装方式,这里注意解压的位置,保证通过require方式可以引用得到,本例子是源码安装方式使用举例
require_once "./tencentcloud-sdk-php-master/TCloudAutoLoader.php";
// 2、导入对应产品模块的client
use TencentCloud\Ms\V20180408\MsClient;
// 3、导入要请求接口对应的Request类
use TencentCloud\Ms\V20180408\Models\CreateShieldInstanceRequest;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;
try {
// 4、实例化一个证书对象,入参需要传入腾讯云账户secretId,secretKey,获取方式参考3.1
$cred = new Credential("secretId", "secretKey");
// 5、 实例化要请求产品(ms)的client对象
$client = new MsClient($cred, "ap-guangzhou");
// 6、实例化一个请求对象
$req = new CreateShieldInstanceRequest();
// 7、业务参数
$params = array(
'ServiceInfo' => array(
'ServiceEdition' => 'basic', // 服务版本,填写basic
'CallbackUrl' => 'http://e.com/a', // 任务处理完成后的反向通知回调地址,通知为POST请求,post信息{ItemId:"xxxduuyt-ugusg"}
'SubmitSource' => 'API' // 提交来源,固定写API
),
'AppInfo' => array(
'AppUrl' => 'http://example.com/EasyConnect.apk', // 必选,app的下载url,必须保证不用权限校验就可以下载
'AppMd5' => '5e723e63c92f4296d79c2a4c2a2f032e', // 必选,app的md5
)
);
$req->fromJsonString(json_encode($params));
// 8、通过client对象调用想要访问的接口,需要传入请求对象
$resp = $client->CreateShieldInstance($req);
// 9、打印结果
print_r($resp->toJsonString());die;
}
catch(TencentCloudSDKException $e) {
echo $e;
}
?>
2.2 查询加固结果
<?php
// 1、引用
// 如果通过Composer安装,那么引用方式是:require 'vendor/autoload.php';
// 如果是源码包安装方式,这里注意解压的位置,保证通过require方式可以引用得到,本例子是源码安装方式使用举例
require_once "./tencentcloud-sdk-php-master/TCloudAutoLoader.php";
// 2、导入对应产品模块的client
use TencentCloud\Ms\V20180408\MsClient;
// 3、导入要请求接口对应的Request类
use TencentCloud\Ms\V20180408\Models\DescribeShieldResultRequest;
use TencentCloud\Common\Exception\TencentCloudSDKException;
use TencentCloud\Common\Credential;
try {
// 4、实例化一个证书对象,入参需要传入腾讯云账户secretId,secretKey,获取方式参考3.1
$cred = new Credential("secretId", "secretKey");
// 5、实例化要请求产品(ms)的client对象
$client = new MsClient($cred, "ap-guangzhou");
// 6、实例化一个请求对象,这里是查询加固请求对象
$req = new DescribeShieldResultRequest();
// 7、业务参数
$params = array(
'ItemId' => '5b3def1d81a35cda9d7629b8f95ccedb' //这里ItemId从上面一个接口中获取
);
$req->fromJsonString(json_encode($params));
// 8、通过client对象调用想要访问的接口,需要传入请求对象
$resp = $client->DescribeShieldResult($req);
// 9、打印结果
print_r($resp->toJsonString());die;
}
catch(TencentCloudSDKException $e) {
echo $e;
}
?>
三、加固返回码说明
调用加固api传递参数发送加固请求,完成后需要查询加固结果。
查询接口文档:https://cloud.tencent.com/document/api/283/17750
输出参数中有个字段ShieldInfo,该字段是app加固后的详细信息。ShieldCode是ShieldInfo下面的一个字段,描述的是加固结果返回码。以下是加固结果返回码说明:
返回码 | 说明 |
---|---|
0 | 请求成功 |
40101 | apk安装包检测到病毒 |
40102 | apk安装包已经加固 |
40104 | apk安装包上传失败,可能是网络原因导致超时 |
40105 | apk安装包大小超过1G |
40106 | 文件不是有效的apk |
40109 | 提交加固请求的链接失效或者无法通过改链接下载apk |
40113 | apk信息不完整,上传的APK非法,请检查APK是否包含签名、标签、版本号等信息 |
40115 | apk安装包缺少签名 |
40116 | apk安装包缺少标签 |
40133 | 获取加固文件结果失败 |
40134 | 上传图标出错 |
40140 | 任务提交失败 |
40141 | 软件不安全 |
40142 | 查毒失败 |
40143 | 查毒超时 |
40144 | 用户上传到web服务器失败 |
如果遇到其他返回码,可以加QQ群218062986反馈。
四、注意事项
3.1 密钥获取地址 https://console.qcloud.com/capi
3.2 移动安全所有接口列表https://cloud.tencent.com/document/product/283/17742
3.3 其它语言SDK和SDK更新地址:https://cloud.tencent.com/document/sdk