来源:紫鸟帮助中心/博客/主站资讯 + HubStudio API 文档/帮助中心 + 三个官方 skill 仓库。 只入库 Markdown 与元数据;原始 HTML 与 tarball 留在本机。
5.6 KiB
5.6 KiB
核心工作流接口
本文件是 ziniao-webdriver-doc 的 Level 2 参考文档。 仅在需要查阅 applyAuth / getBrowserList / startBrowser 的请求/响应格式与状态码时加载。
概述
紫鸟 WebDriver 共提供 11 个 HTTP API,均为 POST 请求,JSON 格式,UTF-8 编码。
请求地址:http://127.0.0.1:{port}(port 为启动参数 --port 指定的端口)。
通用字段说明:
action:接口标识(必须)requestId:全局唯一请求标识(必须)statusCode:返回状态码,0表示成功err:异常信息
1. applyAuth — 申请设备授权
请求:
{
"company": "公司",
"username": "用户名",
"password": "密码",
"action": "applyAuth",
"requestId": "全局唯一标识"
}
响应:
{
"statusCode": "状态码",
"err": "异常信息",
"action": "applyAuth",
"requestId": "全局唯一标识"
}
状态码:
| 码值 | 说明 |
|---|---|
| 0 | 成功 |
| -10000 | 未知异常 |
| -10002 | Socket参数非法 |
| -10003 | 申请流程异常 |
| -10004 | 申请失败 |
2. getBrowserList — 获取店铺列表
请求:
{
"company": "公司",
"username": "用户名",
"password": "密码",
"action": "getBrowserList",
"requestId": "全局唯一标识"
}
响应:
{
"statusCode": "状态码",
"err": "异常信息",
"action": "getBrowserList",
"requestId": "全局唯一标识",
"browserList": [{
"browserOauth": "店铺ID(加密)",
"browserName": "店铺名称",
"browserIp": "店铺IP",
"siteId": "店铺所属站点",
"isExpired": false,
"platform_id": "平台id",
"platform_name": "平台名称"
}]
}
SiteId 说明文档:https://cdn-superbrowser-attachment.ziniao.com/webdriver/doc/SiteId%E8%AF%B4%E6%98%8E20250703.txt
状态码:
| 码值 | 说明 |
|---|---|
| 0 | 成功 |
| -10000 | 未知异常 |
| -10002 | Socket参数非法 |
| -10003 | 登录失败(需开通webdriver权限/关闭登录验证) |
| -10004 | 获取店铺列表时服务器返回异常 |
| -10013 | 需要设备认证 |
3. startBrowser — 启动店铺窗口
连续两次调用 startBrowser 会视为重启。关闭店铺需调用 stopBrowser。
请求:
{
"company": "公司",
"username": "用户名",
"password": "密码",
"action": "startBrowser",
"browserOauth": "店铺ID(加密)",
"browserId": "店铺ID(未加密,优先取此值)",
"isHeadless": true,
"isWaitPluginUpdate": true,
"privacyMode": true,
"requestId": "全局唯一标识",
"runMode": "运行模式 1轻量/2均衡(默认)/3极速",
"pluginIdList": "id1,id2,id3",
"pluginIdType": 0,
"proxyTagFiter": "name1,name2,name3",
"cookieTypeLoad": 0,
"cookieTypeSave": 0,
"injectJsInfo": "{\"url\":\"http://...\",\"username\":\"用户名\"}",
"notPromptForDownload": 1,
"isLoadUserPlugin": true,
"windowRatio": 100,
"forceDownloadPath": "文件下载路径(绝对路径)",
"preSetting": "{\"profile.managed_default_content_settings.images\": 2}"
}
参数说明:
browserOauth/browserId:二选一指定目标店铺。如果直接使用getBrowserList返回的数据来打开店铺,只需传browserOauth即可(它已包含加密店铺标识);仅当用户需要使用明文店铺 ID 打开时,才需要赋值browserId。两者同时存在时browserId优先。isHeadless:无头模式(开启后需自行检测网络)isWaitPluginUpdate:等待插件热更新完成(仅 V5)runMode:仅 V5 支持pluginIdType:0=插件版本id,1=插件idcookieTypeLoad:固定传 0cookieTypeSave:0=默认,1=不提交notPromptForDownload:1=不弹窗,0=弹窗windowRatio:0-100,0=不控制,100=全屏preSetting:浏览器配置 JSON,支持无图模式
响应:
{
"statusCode": "状态码",
"err": "异常信息",
"action": "startBrowser",
"browserOauth": "店铺ID",
"requestId": "全局唯一标识",
"LastError": "内部错误信息",
"ip": "代理IP",
"isDynamicIp": "是否动态IP",
"browserPath": "允许的下载路径",
"launcherPage": "平台默认启动页面",
"ipDetectionPage": "IP检测页地址",
"debuggingPort": "调试端口",
"reportPluginId": "报表插件id",
"duplicate": "副本标志",
"proxyTag": "当前启动的代理标志",
"proxyType": 5,
"mainHandle": "窗口句柄",
"core_version": "内核版本",
"core_type": "内核类型",
"coreVersion": "内核版本",
"coreType": "内核类型",
"downloadPath": "文件下载路径"
}
proxyType 取值:-1=错误数据,0=站群,1=云平台,2=自有IP,5=本地IP
使用 Selenium 连接时需根据 core_type 及 core_version 选取对应版本 ChromeDriver:
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", "127.0.0.1:" + debuggingPort);
状态码:
| 码值 | 说明 |
|---|---|
| 0 | 成功 |
| -10000 | 未知异常 |
| -10001 | 内核窗口创建失败 |
| -10002 | Socket参数非法 |
| -10003 | 登录失败 |
| -10004 | browserOauth缺失 |
| -10006 | 上次 startBrowser 还未执行结束 |
| -10013 | 需要设备认证 |
| 1 | 初始化数据失败 |
| 2 | 当前IP无法正常使用 |
| 4 | 初始化时区失败 |
| 5 | 初始化代理失败 |
| 6 | 初始化黑白名单失败 |
| 7 | 启动内核失败 |
| 8 | 初始化浏览器个人目录失败 |
| 9 | 初始化Cookies失败 |
| 11 | 初始化浏览器设置文件失败 |
| 13 | 初始化代理信息配置失败 |
LastError 字段包含具体错误信息。