myt
myt
发布于 2023-06-12 / 18713 阅读 / 0 评论 / 0 点赞

API接口概述

接口概述

相关的接口操作对象都是通过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 更新日期: