浏览器环境

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打开

请求参数

参数名称类型必传说明
containerCodestring环境ID
isHeadlessboolean浏览器无头模式。设置无头后如无法连接,请使用用"args"参数进行设置: ["--headless=new"]
isWebDriverReadOnlyModeboolean是否只读模式,默认false。(true代表只读模式,不会保存cookie等数据)
skipSystemResourceCheckboolean默认false不跳过系统可用资源检测(仅支持v3.6.0及以上版本)
containerTabsarray启动url,举例:  "containerTabs": ["https://www.hubstudio.cn/", "https://www.baidu.com/"]  
argsarray启动参数。举例  "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失败
24openDetail超时
25获取磁盘信息失败
26API免费版本不支持
27环境打开次数超过限制
-10000未知异常
-10003登录失败
-10004未找到环境信息,请检查环境ID是否正确
-10005该店铺上次请求的startBrowser还未执行结束
-10007内核不存在,请手动打开客户端下载
-10008系统资源不足
-10011环境不存在或未开启,请检查环境ID是否正确
-10012插件ID列表不能为空
-10013环境正在运行
-10014IPC超时
-10015数据获取失败,请勿过于频繁操作,或检查网络环境后重试。
-10016内核版本过低,本客户端不允许打开
-10017当前Firefox内核的环境无法通过API打开
-10018下载内核失败

2. 关闭环境

  • Path: /api/v1/browser/stop
  • Method: GET / POST
  • 接口描述:关闭指定环境。
    使用GET时键值对参数追加到url后,使用POST时Content-Type为application/json

请求参数

参数名称类型必传说明
containerCodestring环境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以及状态

请求参数

参数名称类型必传说明
containerCodesarray环境ID

请求示例

{
    "containerCodes": ["123094597"]
}

执行返回状态:1-开启中: 0-已开启: 2-关闭中: 3-已关闭

4. 切换浏览器窗口

  • Path: /api/v1/browser/foreground
  • Method: POST
  • 接口描述:切换浏览器窗口,将窗口置顶显示

请求参数

参数名称类型必传说明
containerCodestring环境ID

5. 获取所有打开环境

  • Path: /api/v1/browser/all-browser-status

  • Method: POST

  • Content-Type:application/json

  • 接口描述:支持不传参数或传空数组,获取所有已打开环境。

  • 备注:因Firebrowser原生内核原因,该类环境不支持通过API打开,仅3.27.2及以上版本可用

参数名称类型必传说明
containerCodearray环境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打开

参数名称类型必传说明
clearOpeningboolean传 true 会清空启动环境队列

请求示例:
{
"clearOpening": true,
}

执行成功返回:
{
"msg": "Success",
"code": 0,
"data": {
"action": "CloseAllBrowser",
"err": "成功(Success)",
"statusCode": "0"
}
}

参数名称类型必传说明
browserTypeint浏览器内核类型,1-Chrome,2-Firefox
versionstring内核版本。仅支持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最新版】
参数名称类型必传说明
xint起始位置x坐标;默认为10,取值可为0~9999之间的整数
yint起始位置y坐标;默认为10,取值可为0~9999之间的整数
widthint窗口宽度;默认为600,取值范围500~9999之间的整数
heightint窗口高度;默认为500,取值范围200~9999之间的整数
gapXint窗口横向间距;默认为20,取值范围-9999~9999之间的整数
gapYint窗口纵向间距;默认为20,取值范围-9999~9999之间的整数
colNumint每行展示窗口数量;默认为3,取值范围1~99之间的整数
screenIdint屏幕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"
    }
}

2024-09-14
18 36