接口概述
相关的接口操作对象都是通过Android容器实例的IP进行访问.由于创建Android容器实例有2种IP模式,以下所有的的相关接口都会有2个地址,在接入API时请根据自己的网络模式自行选择.
1.获取设备截图
接口地址:http://$ip:$port/task=snap&level=3
请求方式:GET
参数说明:
当Android容器为独立ip模式时 ip为安卓容器实例IP port为9082
当Android共享ip时 ip为当前主机ip port为动态计算得出 计算方法为: 第一个Android容器实例 10005 第二个 10008 第三个 10011 .... 以此类推 公式为 (索引下标-1) *3 + 10005
level=1 为低分辨率 level=2 中等分辨率 level=3 原始分辨率
返回结果:
png格式图片
2.一键新机
(仅支持v16以后的版本)
2.1 随机设备信息
接口地址:http://$ip:$port/modifydev
请求方式:GET
参数说明:
cmd=2
modifymac=true (可选参数 修改mac地址)
random_abroad=true(可选参数 默认为false 随机海外机型)
userip (可选参数 使用给定的ip进行区域匹配随机信息 )
isasync=true (可选参数 使用异步的方式进行请求 使用该参数后 会立刻返回结果 并给一个唯一ID作为查询请求的参数)
当Android容器为独立ip模式时 ip为安卓容器实例IP port为9082
当Android共享ip时 ip为当前主机ip port为动态计算得出 计算方法为: 第一个Android容器实例 10005 第二个 10008 第三个 10011 .... 以此类推 公式为 (索引下标-1) *3 + 10005
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.202:9082/modifydev?cmd=2&modifymac=true&userip=8.8.8.8";
$ret = request_by_curl($url, '');
var_dump($ret);
?>
返回结果:
//成功
{
code: 200
}
如果使用isasnyc参数进行请求则返回的结果为:
//异步请求返回 请求ID
{"code":200,"msg":"185b66ab-1031-4c68-8423-345f8f013927"}
然后可以每隔1s 在去查询改任务是否执行成功 由于这里会重置网卡 所以在请求时一定要设置超时处理
//查询异步请求的任务结果
modifydev?cmd=2&query=185b66ab-1031-4c68-8423-345f8f013927
//返回成功
{"code":200,"msg":"OK"}
//任务正在执行中...
{"code":201,"reason":"busy"}
//任务失败超时
{"code":202,"reason":"time out"}
注意: 任务返回成功后就不在被记录 在此请求则返回任务不存在
{"code":202,"reason":"no this task"}
2.2 自定义设备信息
接口地址:http://$ip:$port/modifydev
请求方式:POST
参数说明:
当Android容器为独立ip模式时 ip为安卓容器实例IP port为9082
当Android共享ip时 ip为当前主机ip port为动态计算得出 计算方法为: 第一个Android容器实例 10005 第二个 10008 第三个 10011 .... 以此类推 公式为 (索引下标-1) *3 + 10005
post 内容: 将json字符 base64加密一下为json结构体示例
设备信息完整文件下载地址 dev.json
{
//设备信息 oaid 等
"devinfo": {
"oaid": "12345678901234567890",
"aaid": "",
"vaid": "",
"wifimac": "11:22:33:44:55:66",
"wifiname": "TP-LINK_MYT",
"btaddr": "22:33:44:55:66:77",
"btname": "MYT",
"androidId": "abcdefg123456"
},
//传感器信息
"sensors": [{
"Name": "ACCELEROMETER",
"Vendor": "MTK",
"StringType": "android.sensor.accelerometer",
"Version": -394882624,
"Type": 1,
"MinDelay": 5000,
"FifoReservedEventCount": 3000,
"MaxDelay": 20000,
"Id": 0,
"MaxRange": 78.453605651855,
"Resolution": 0.0012000000569969,
"Power": 0.0010000000474975,
"Flags": 0,
"RequiredPermission": "RequiredPermission",
"FifoMaxEventCount": 300
},
......
],
//模拟已安装应用列表 实际不安装
"fakeapps": [{
"pkg": "com.tencent.mobileqq",
"versionCode": "4030",
"versionName": "8.9.55",
"label": "QQ"
}, {
"pkg": "com.tencent.mm",
"versionCode": "2380",
"versionName": "8.0.37",
"label": "微信"
}, {
"pkg": "com.taobao.taobao",
"versionCode": "441",
"versionName": "10.24.20",
"label": "淘宝"
}],
//sim卡信息 地理位置 时区等信息
"siminfo": {
"mnc": "0",
"mcc": "460",
"lac": "28970",
"cid": "111407362",
"lat": "30.638809204102",
"lon": "114.2928314209",
"opercode": "46000",
"opername": "China Mobile",
"country": "cn",
"timezone": "UTC +8:00",
"zoneid": "Asia\/Shanghai",
"language": "zh",
"phonenumber": "17047949030"
},
//环境变量 可以依据不同品牌自行添加
"props": [{
"key": "gsm.version.baseband",
"val": "MOLY.LR12A.R3.MP.V136.6.P198,MOLY.LR12A.R3.MP.V136.6.P198"
}, {
"key": "net.hostname",
"val": "V2118"
}, {
"key": "ro.actionable_compatible_property.enabled",
"val": "true"
}, {
"key": "ro.allow.mock.location",
"val": "0"
}
...
]
}
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.202:9082/modifydev";
$data = file_get_contents('dev.json');
$post_data = base64_encode($data);
$ret = request_by_curl($url, 'cmd=1&data='.$post_data);
var_dump($ret);
?>
返回结果:
//成功
{
code: 200
}
3.隐藏应用
功能:和桌面上扩展服务->防封保护功能相同 在系统已安装列表中隐藏指定应用
接口地址:http://$ip:$port/modifydev
请求方式:GET
参数说明:cmd=3
data=base64({'com.aa.bb','com.cc.dd'})
当Android容器为独立ip模式时 ip为安卓容器实例IP port为9082
当Android共享ip时 ip为当前主机ip port为动态计算得出 计算方法为: 第一个Android容器实例 10005 第二个 10008 第三个 10011 .... 以此类推 公式为 (索引下标-1) *3 + 10005
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.202:9082/modifydev";
$arr = array('com.aa.bb','com.cc.dd');
$data = json_encode($arr);
$post_data = base64_encode($data);
$ret = request_by_curl($url, 'cmd=3&data='.$post_data);
var_dump($ret);
?>
返回结果:
//成功
{
code: 200
}
4.视频推流
功能:可以将指定的多媒体源投放到Android系统的摄像头 进行播放 设置好推流之后打开相机就可以查看效果了
接口地址:http://$ip:$port/modifydev
请求方式:POST
参数说明:cmd=4
type: video :视频流或者本地视频文件
webrtc :webrtc流媒体
image :本地图片或者网络图片
path = urlencode('rtmp://192.168.100.1/live/') //测试直播流地址 http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/gear2/prog_index.m3u8
当Android容器为独立ip模式时 ip为安卓容器实例IP port为9082
当Android共享ip时 ip为当前主机ip port为动态计算得出 计算方法为: 第一个Android容器实例 10005 第二个 10008 第三个 10011 .... 以此类推 公式为 (索引下标-1) *3 + 10005
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.100:9082/modifydev";
$t = 'rtmp://192.168.100.1/live/test2';
$s = urlencode($t);
$ret = request_by_curl($url, 'cmd=4&type=video&path='.$s);
var_dump($ret);
?>
返回结果:
//成功
{
code: 200
}
5.获取当前推流地址
功能:获取当前推流地址和类型
接口地址:http://$ip:$port/modifydev
请求方式:GET
参数说明:cmd=5
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.100:9082/modifydev";
$ret = request_by_curl($url, 'cmd=5');
var_dump($ret);
?>
返回结果:
{"path":"webrtc:\/\/192.168.100.1\/test","type":"webrtc","code":200}
6 执行shell命令
功能:执行shell 命令
接口地址:http://$ip:$port/modifydev
请求方式:POST
参数说明:cmd=6
cmdline
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.100:9082/modifydev";
$cmd = urlencode('ps -a');
$ret = request_by_curl($url, 'cmd=6&cmdline='.$cmd);
var_dump($ret);
?>
7.更新设备信息
功能:更新指定的字段
接口地址:http://$ip:$port/modifydev
请求方式:POST
参数说明:cmd=7
data= json 字符串
json 格式为以下字段 任意一个或多个组合
字段名 | 类型 | 数据说明 |
---|---|---|
lat | string | 经度 (30.638809204102) |
lon | string | 纬度(114.2928314209) |
country | string | 国家码(cn) |
timezone | string | 时区(UTC +8:00) |
language | string | 语言(zh) |
phonenumber | string | 电话号码(17000888888) |
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.100:9082/modifydev";
$data['phonenumber'] = "12345678901";
$data['language'] = 'en';
$str = json_encode($data);
$ret = request_by_curl($url, 'cmd=7&data='.$str);
var_dump($ret);
?>
返回结果:
{"code":200}
8.设置应用的Root权限
功能: 给指定的应用root 权限
接口地址:http://$ip:$port/modifydev
请求方式:GET
参数说明:cmd= 10
pkg=com.tencent.game 应用包名
root=true root 权限 true or false
以下给出PHP的调用方法示例:
<?php
/////////////////////////////////////////////////////////////////////
/*
* Curl post 方法
*/
function request_by_curl($remote_server, $post_string) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $remote_server);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT,30);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$url = "http://192.168.30.100:9082/modifydev";
$ret = request_by_curl($url, 'cmd=10&pkg=com.tencent.game&root=true');
var_dump($ret);
?>
返回结果:
{"code":200}
魔云腾按照不同的开发语言给出了封装示例,
1.PHP Demo (待发布) 版本:1.0 更新日期:
2.Go Demo GitHub地址 https://github.com/Henry0924/myt-androidApi-demo
3.JS Demo (待发布) 版本: 1.0 更新日期:
4 Python Demo (待发布) 版本: 1.0 更新日期: