1. 打开环境
-
Path: /api/v1/browser/start
-
Method: POST
-
Content-Type:application/json
-
接口描述:用于启动指定的环境,启动成功后可以获取浏览器debug端口用于执行selenium和puppeteer自动化脚本,目前Hubstudio采用100版Chrome内核,Selenium需要使用到匹配的Webdriver,需更新到应用版本2.4.2及以上版本。
返回的debuggingPort参数可用于自动化工具连接。
-
备注:
因Firebrowser原生内核原因,该类环境不支持通过API打开
请求参数
参数名称 | 类型 | 必传 | 说明 |
containerCode | string | 是 | 环境ID |
isHeadless | boolean | 否 | 浏览器无头模式。设置无头后如无法连接,请使用用"args"参数进行设置: ["--headless=new"] |
isWebDriverReadOnlyMode | boolean | 否 | 是否只读模式,默认false。(true代表只读模式,不会保存cookie等数据) |
skipSystemResourceCheck | boolean | 否 | 默认false不跳过系统可用资源检测(仅支持v3.6.0及以上版本) |
containerTabs | array | 否 | 启动url,举例: "containerTabs": ["https://www.hubstudio.cn/", "https://www.baidu.com/"] |
args | array | 否 | 启动参数。举例 "args": [ "--kiosk", "--blink-settings=imagesEnabled=false" ] |
请求示例
{
"containerCode":"223012801",
"isWebDriverReadOnlyMode": false,
"isHeadless": false,
"args": ["--kiosk"] //全屏参数
}
执行成功返回
{
"msg": "Success",
"code": 0,
"data": {
"accountId": null,
"action": "startBrowserByCode",
"backgroundPluginId": "jjbnhpnlakcdgfnnldamfeinfmahhdlm",
"browserID": "25633", // 浏览器id,用于清理缓存接口
"browserPath": "D:\\Hubstudio\\2.12.0.2\\Core\\Chromium_x64\\hubstudio.exe",
"debuggingPort": 46973, // 浏览器调试端口,用于自动化工具连接
"downloadPath": "C:\\Users\\Administrator\\Desktop\\Hubstudio\\环境3",
"duplicate": 0,
"ip": "8.208.80.219",
"isDynamicIp": false,
"launcherPage": "about:blank",
"proxyTag": "",
"proxyType": "socks5",
"reportPluginId": "fnidifjbnjgnmegiffpdbfheehninhom",
"runMode": "2",
"webdriver":"C:\\Users\\Administrator\\Hubstudio\\2.16.0.1\\Driver\\100\\chromedriver.exe", //根据当前打开环境的内核返回对应内核webdriver驱动路径
"statusCode": 0
}
}
错误码
错误码 | 描述 |
0 | 成功 |
5 | 初始化代理失败 |
7 | 启动内核失败 |
15 | 获取openDetail参数失败 |
17 | 容器正在被占用 |
18 | 取消 |
20 | 不可打开状态 |
21 | 获取ip超时 |
22 | 转换userAgent失败 |
24 | openDetail超时 |
25 | 获取磁盘信息失败 |
26 | API免费版本不支持 |
27 | 环境打开次数超过限制 |
-10000 | 未知异常 |
-10003 | 登录失败 |
-10004 | 未找到环境信息,请检查环境ID是否正确 |
-10005 | 该店铺上次请求的startBrowser还未执行结束 |
-10007 | 内核不存在,请手动打开客户端下载 |
-10008 | 系统资源不足 |
-10011 | 环境不存在或未开启,请检查环境ID是否正确 |
-10012 | 插件ID列表不能为空 |
-10013 | 环境正在运行 |
-10014 | IPC超时 |
-10015 | 数据获取失败,请勿过于频繁操作,或检查网络环境后重试。 |
-10016 | 内核版本过低,本客户端不允许打开 |
-10017 | 当前Firefox内核的环境无法通过API打开 |
-10018 | 下载内核失败 |
2. 关闭环境
- Path: /api/v1/browser/stop
- Method: GET / POST
- 接口描述:关闭指定环境。
使用GET时键值对参数追加到url后,使用POST时Content-Type为application/json
请求参数
参数名称 | 类型 | 必传 | 说明 |
containerCode | string | 是 | 环境ID |
请求示例
GET:
http://localhost:6873/api/v1/browser/stop?containerCode=223012801
POST:
{
"containerCode":"223012801"
}
执行成功返回
{
"msg": "Success",
"code": 0,
"data": {
"action": "stopBrowserByCode",
"statusCode": 0
}
}
3. 获取浏览器状态
- Path: /api/v1/browser/all-browser-status
- Method: POST
- 接口描述:获取浏览器状态的接口,返回浏览器环境code以及状态
请求参数
参数名称 | 类型 | 必传 | 说明 |
containerCodes | array | 是 | 环境ID |
请求示例
{
"containerCodes": ["123094597"]
}
执行返回状态:1-开启中: 0-已开启: 2-关闭中: 3-已关闭
4. 切换浏览器窗口
- Path: /api/v1/browser/foreground
- Method: POST
- 接口描述:切换浏览器窗口,将窗口置顶显示
请求参数
参数名称 | 类型 | 必传 | 说明 |
containerCode | string | 是 | 环境ID |
5. 获取所有打开环境
-
Path: /api/v1/browser/all-browser-status
-
Method: POST
-
Content-Type:application/json
-
接口描述:支持不传参数或传空数组,获取所有已打开环境。
-
备注:
因Firebrowser原生内核原因,该类环境不支持通过API打开,仅3.27.2及以上版本可用
参数名称 | 类型 | 必传 | 说明 |
containerCode | array | 否 | 环境ID |
请求示例:
{
"containerCode": [],
}
执行成功返回:
{
"msg": "Success",
"code": 0,
"data": {
"action": "GetAllBrowserStatus",
"containers": [{
"containerCode": "9406236",
"status": 0
}],
"err": "成功(Success)",
"statusCode": "0"
}
}
6. 关闭所有环境接口
-
Path: /api/v1/browser/stop-all
-
Method: POST
-
Content-Type:application/json
-
接口描述:支持关闭所有环境,接口参数传 true 会清空启动环境队列。
-
备注:`因Firebrowser原生内核原因,该类环境不支持通过API打开
参数名称 | 类型 | 必传 | 说明 |
clearOpening | boolean | 否 | 传 true 会清空启动环境队列 |
请求示例:
{
"clearOpening": true,
}
执行成功返回:
{
"msg": "Success",
"code": 0,
"data": {
"action": "CloseAllBrowser",
"err": "成功(Success)",
"statusCode": "0"
}
}
参数名称 | 类型 | 必传 | 说明 |
browserType | int | 是 | 浏览器内核类型,1-Chrome,2-Firefox |
version | string | 是 | 内核版本。仅支持hub客户端支持的版本下载。 |
请求示例
{
"Cores":[
{
"BrowserType":1,
"Version":"109"
},
{
"BrowserType":2,
"Version":"110"
}
]
}
7.获取全部屏幕
- Path: /api/v1/display/all
- Method: POST
- Content-Type:application/json
- 接口描述:用于获取全部屏幕,获取到的屏幕id可用于浏览器环境窗口自定义排列。
- 仅支持v3.29.0以上版本请前往官网下载客户端最新版本【下载Hubstudio最新版】
请求示例
无请求参数
>返回参数
{
"code": 0,
"data": {
"action": "getAllDisplay",
"err": "成功(Success)",
"requestId": "2a9b8a88-432d-4f2b-a6b6-b7cc1cd9c5c3",
"screens": [
{
"current": false,
"height": 600,
"id": 2528732444,
"internal": false,
"isPrimaryScreen": false,
"realHeight": 600,
"realWidth": 800,
"scaleFactor": 1,
"width": 800,
"x": -800,
"y": -191
},
{
"current": true,
"height": 1080,
"id": 2779098405,
"internal": false,
"isPrimaryScreen": true,
"realHeight": 1080,
"realWidth": 1920,
"scaleFactor": 1,
"width": 1920,
"x": 0,
"y": 0
}
]
},
"msg": "Success",
"requestId": "2a9b8a88-432d-4f2b-a6b6-b7cc1cd9c5c3"
}
8.浏览器窗口自定义排列
- Path: /api/v1/browser/arrange
- Method: POST
- Content-Type:application/json
- 接口描述:用于已打开浏览器窗口自定义排列,不传值则使用默认值进行浏览器窗口排列。
- 仅支持3.29.0及以上版本可用请前往官网下载客户端最新版本【下载Hubstudio最新版】
参数名称 | 类型 | 必传 | 说明 |
x | int | 否 | 起始位置x坐标;默认为10,取值可为0~9999之间的整数 |
y | int | 否 | 起始位置y坐标;默认为10,取值可为0~9999之间的整数 |
width | int | 否 | 窗口宽度;默认为600,取值范围500~9999之间的整数 |
height | int | 否 | 窗口高度;默认为500,取值范围200~9999之间的整数 |
gapX | int | 否 | 窗口横向间距;默认为20,取值范围-9999~9999之间的整数 |
gapY | int | 否 | 窗口纵向间距;默认为20,取值范围-9999~9999之间的整数 |
colNum | int | 否 | 每行展示窗口数量;默认为3,取值范围1~99之间的整数 |
screenId | int | 否 | 屏幕id |
请求示例
>请求示例
{
"x": 22,
"y": 0,
"width": 500,
"height": 500,
"gapX": 0,
"gapY":0,
"colNum": 2,
"screenId": 41795266
}
>返回参数:
{
"requestId": "b7d293ea-b70f-46db-bc38-0fbd76cfd44d",
"msg": "Success",
"code": 0,
"data": {
"action": "customArrange",
"err": "成功(Success)",
"requestId": "b7d293ea-b70f-46db-bc38-0fbd76cfd44d",
"statusCode": "0"
}
}