Skip to content

websockt服务

概要

YinTao 启动后默认占用本机8888端口,对外提供websocket服务。

它更适合在网页端使用避免触发CORS

通用数据协议

http不同Websocket采用数据协议进行交互。

这意味着我们需要提供符合规范的数据才能被正确解析。

YinTao内部采用json结构传递数据。

例:

json
{
  "api": "run",
  "config": {
    "script":"page.to('https://baidu.com')",
    "storage": {"id":123}
  }
}
{
  "api": "run",
  "config": {
    "script":"page.to('https://baidu.com')",
    "storage": {"id":123}
  }
}

只需给websocket连接发送这些数据,就能打开运行百度页面。 内部实现中http以及websocket都通过openApi对外提供服务, 这意味着他们支持相同的配置格式。

快速接入

在大多数情况下,我们只需要以函数式的方式去使用, 因此YinTao提供对外便捷的函数式api文件封装。

文件内包含了详细的使用步骤,你只需要以工具类接入使用即可。 如果你需要实现更高级的功能实现,可以按照下列数据格式自行接入。

执行

说明: 运行脚本时调用,运行报告随请求返回

参数:

名称类型默认值说明
scriptstring执行的脚本
cookiesCookie[]可接收cookie数组,用于初始化配置
storageany自定义参数仓库
hostsMaphost信息 {"域名":"解析IP地址"}

数据格式:

json
{
  "api": "live",
  "config": {
    "script":"page.to('https://baidu.com')",
    "storage": {"id":123}
  }
}
{
  "api": "live",
  "config": {
    "script":"page.to('https://baidu.com')",
    "storage": {"id":123}
  }
}

结果示例

json
{
    "duration": 9392.7518,
    "success": true,
    "msg": "",
    "divertor": [],
    "code": 2000,
    "storage": {
        "case_id": 12
    }
}
{
    "duration": 9392.7518,
    "success": true,
    "msg": "",
    "divertor": [],
    "code": 2000,
    "storage": {
        "case_id": 12
    }
}

录制

说明: 录制脚本时调用,录制结果请求响应返回

参数:

名称类型默认值说明
urlstring录制时默认打开的地址
storageany自定义参数仓库
| cookies    | [Cookie](https://dqa.jd.com/YinTao/guide/data/cookie.html)[]    |  空     | 可接收cookie数组,用于初始化配置 |

| compatibility | bool| 空 | 兼容模式,默认采用YinTao浏览器,开启后将使用Chromium | | device | string | 空 | 模拟移动设备录制, 支持的字段参考setDevice | | hosts | Map | 空 | host信息 {"域名":"解析IP地址"}|

数据格式:

json
{
  "api": "live",
  "config": {
    "url": "https://jd.com",
    "storage": {"id":123}
  }
}
{
  "api": "live",
  "config": {
    "url": "https://jd.com",
    "storage": {"id":123}
  }
}

结果示例

json
 {
    "script": "\nawait page.goto('https://www.baidu.com/');\n\n// Fill input[name=\"wd\"]\nawait dom.fill('input[name=\"wd\"]','2');\n\n// Click input[name=\"wd\"]\nawait dom.click('input[name=\"wd\"]');\n\n// Fill input[name=\"wd\"]\nawait dom.fill('input[name=\"wd\"]','2222');\n\n// Click text=百度一下\nawait dom.click('text=百度一下');",
    "storage": {}
}
 {
    "script": "\nawait page.goto('https://www.baidu.com/');\n\n// Fill input[name=\"wd\"]\nawait dom.fill('input[name=\"wd\"]','2');\n\n// Click input[name=\"wd\"]\nawait dom.click('input[name=\"wd\"]');\n\n// Fill input[name=\"wd\"]\nawait dom.fill('input[name=\"wd\"]','2222');\n\n// Click text=百度一下\nawait dom.click('text=百度一下');",
    "storage": {}
}

ping

数据格式:

json
{
  "api": "ping"
}
{
  "api": "ping"
}

退出

数据格式:

json
{
  "api": "exit",
}
{
  "api": "exit",
}