在线监测API概述
360在线检测开放平台API提供了一种新的接口调用方式,允许被360授予权限的第三方应用360手机在线监测服务器来检测提交的手机软件安全性(目前支持.apk,.sis,.sisx格式)。在线检测API说明文档下载(v1.1测试版)
API接口格式
合作方与360手机在线检测服务器之间,使用标准Http协议通信。合作方通过Http Post方式,将需要检测的内容发送至360手机在线检测服务器。Http Post的URL格式如下所示: http://scan.shouji.360.cn/ScanUpload?UserKey=XXXXXXXX&ReqType=Pkg&RspType=Sync。其中,
- UserKey: 合作方唯一Key值(注册时由360分配)
- ReqType: 请求类型。取值为:
- Pkg -表示检测单个软件。(post的内容为单个软件包)
- Blk -表示检测批量软件。(post的内容为一个zip格式压缩包,压缩包里是所有待检测的软件包)
- Url -表示Url地址检测。(post的内容为纯文本文件,文件的每行为单个软件的下载URL地址)
- RspType: 应答方式。取值为:
- Sync -表示同步方式,Server在Http Post的应答报文里显示结果。
- Async -表示异步方式,Server在Http Post的应答报文里只显示ok/error。通过合作方登记的邮件地址,将分析结果发送到邮箱。
每个合作方,对应其唯一的允许权限图。
- 例如,合作方A的权限图为:
-
ReqType RspType Pkg Avail Sync Avail Blk Avail Async Avail Url Avail
- 合作方B的权限图为:
-
ReqType RspType Pkg Avail Sync Avail Blk Avail Async Avail Url Avail
分析结果格式
软件包分析结果为xml格式的纯文本,采用GBK编码。
配置文件以<files>作为根节点,内部包含n个<file>节点(ReqType为Pkg时,n=1;ReqType为Blk和Url时,n>=1)。每个<file>节点包含以下tag:
tag名称 | 含义 |
---|---|
state | 分析完成状态,取值为:1: 分析成功0: 分析失败 |
name | 软件包的名称 |
url | 对ReqType为Url的请求,其值为下载地址对ReqType为Pkg的请求,其值为空对ReqType为Blk的请求,其值为空 |
size | 软件包的大小(单位:字节) |
type | 软件包类型(目前支持android安装包和symbian安装包),取值为:sis: Symbian安装包apk: Android安装包etc: 其它类型包 |
sign | 软件检测结果描述,取值为:- 通过 - 不通过- 审核中 |
desc | 附加描述信息 |
示例如下:
<?xml version="1.0" encoding="GBK"?>
<files>
<file>
<state>1</state>
<name>360MobileSafe.apk</name>
<url></url>
<size>1255670</size>
<type>apk</apk>
<sign>通过</sign>
<desc></desc>
<file>
</files>
示例
用法1:要求:合作方系统为Uinx/Linux,支持curl命令工具。
在命令行,执行如下的命令检测软件(可集成入shell脚本): #curl -F "file=@/360onlinescan/apk/xxxx.apk " -o /360onlinescan/apk/xxxx.apk.xml "http://scan.shouji.360.cn/ScanUpload?UserKey=XXXXXXXX& ReqType=Pkg&RspType=Sync"
用法2:要求:合作方系统支持php(版本>=4.0.2)
下面是php客户端程序代码:
<?php
if($argc != 2)
{
echo "Usage: $argv[0] <filename>\n";
exit(1);
}
$filename = $argv[1];
if(!file_exists($filename))
{
echo "Error: [$filename] doesn't exist!\n";
exit(1);
}
set_time_limit(0);
$postfile = array("file"=>"@$filename",);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://scan.shouji.360.cn/ScanUpload?UserKey=XXXXXXXX&ReqType=Pkg&RspType=Sync');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfile);
curl_exec($ch);
curl_close($ch);
?>