一、Open Api本地服务开发指南
1.1 使用方式
- 安装并登录DICloak浏览器
- 打开更多设置 – 开放Api – 获取本地接口URL和密钥
- 获取示例代码,运行脚本
1.2 接口使用概述
- 接口请求方式为post时,传参方式均为body传参,传递json格式数据,不是form-data,也不是url传参数
- 接口返回json对象,code为0作成功,如有返回数据,附加在data对象中
- code 不为 0 时,表示失败,失败信息会附加到 msg 字段中
{
'code': 0,
'msg': 'success',
'data': {
'serial_number': 2,
'pid': '27028',
'debug_port': 17539
}
}
{
'code': 500,
'msg': 'fetch fail'
}
- 所有请求都需要加上请求头:
X-API-KEY
,值为从客户端复制出来的密钥
1.3 示例代码
Dicloak 内核用的是120内核,需要先下载 chromedriver
import time
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# port and api key
BASE_URL = "http://127.0.0.1:52140/openapi"
API_KEY = "IvGM26nKG6XoSAtgJ84TAi9jrrwPqY8aWhwyDlY-4opXsqwex-OhLyFYv1e47rR2"
def open_browser(port):
"""
hold profile
:param port:
:return:
"""
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option('debuggerAddress', f"127.0.0.1:{port}")
s = Service(r"G:\chromedriver.exe")
browser = webdriver.Chrome(options=chrome_options, service=s)
browser.get("https://www.zhihu.com")
def get_evn_list():
headers = {
"X-API-KEY": API_KEY,
}
params = {
"page_no": 1,
"page_size": 20
}
response = requests.get(f"{BASE_URL}/v1/env/list", params=params, headers=headers)
return response.json()
def open_env(env_id):
"""
open profile
:param env_id: id
:return:
"""
headers = {
"X-API-KEY": API_KEY,
}
response = requests.patch(f"{BASE_URL}/v1/env/{env_id}/open", headers=headers)
return response.json()
def close_env(env_id):
"""
close profile
:param env_id:
:return:
"""
headers = {
"X-API-KEY": API_KEY,
}
response = requests.patch(f"{BASE_URL}/v1/env/{env_id}/close", headers=headers)
return response.json()
if __name__ == '__main__':
resp = get_evn_list()
if resp['code'] != 0:
print(resp.msg)
exit(0)
# profile list
list = resp['data']['list']
if len(list) == 0:
print('no profile')
exit(0)
print(f"open profile:{list[0]['id']}")
open_resp = open_env(list[0]['id'])
if open_resp['code'] != 0:
print(open_resp['msg'])
exit(0)
print(f"open_resp : {open_resp}")
# Automatic
open_browser(open_resp['data']['debug_port'])
time.sleep(3)
# close profile
close_env(list[0]['id'])
二、环境接口详情
GET 获取环境列表
GET /v1/env/{env_id}/open
请求参数
名称 | 类型 | 必选 | 说明 |
page_no | integer | 是 | 页码,默认1 |
page_size | integer | 是 | 分页大小,默认10 |
serial_num | integer | 否 | 序号 |
name | string | 否 | 名称 |
group_id | string | 否 | 分组 |
proxy_host | string | 否 | 代理主机(方式1) |
status | string | 否 | 状态(DISABLED停用 ENABLED正常) |
platform_user | string | 否 | 平台 |
remark | string | 否 | 备注 |
start_create_time | string | 否 | 开始时间 |
end_create_time | string | 否 | 结束时间 |
operate_status | string | 否 | 环境打开状态 ENABLED 打开,DISABLED 关闭 |
X-API-KEY | 请求头 | 是 |
响应参数
名称 | 类型 | 必选 | 说明 |
id | string | 是 | 环境id,env_id |
create_time | string | 否 | 创建时间 |
update_time | string | 否 | 修改时间 |
serial_num | integer | 是 | 序号 |
group_id | string | 否 | 分组ID |
group_name | string | 否 | 分组名称 |
name | string | 是 | 名称 |
browser | string | 否 | 浏览器类型 (CHROME:Chrome) |
ua_type | string | 否 | ua类型 |
ua | string | 否 | User Agent |
ua_os | string | 否 | User Agent OS |
cookie | string | 否 | cookie |
other_cookie | string | 否 | 其它cookie |
proxy_way | string | 否 | 代理方式 (CUSTOM:自定义 SELECT_EXIST:选择已有) |
proxy_id | string | 否 | 代理ID(方式2) |
proxy_type | string | 否 | 代理类型(方式1) (NON_USE:不使用 HTTP HTTPS SSH SOCKS5 IPFLY) |
proxy_host | string | 否 | 代理主机(方式1) |
proxy_port | integer(int32) | 否 | 代理端口(方式1) |
proxy_user_name | string | 否 | 代理账号(方式1) |
proxy_passwd | string | 否 | 代理密码(方式1) |
proxy_ip_type | string | 否 | IP查询渠道(方式1) (IP2LOCATION) |
urls | [string] | 否 | url列表 |
config | string | 否 | 高级设置JSON |
status | string | 否 | 状态(DISABLED停用 ENABLED正常) |
remark | string | 否 | 备注 |
last_open_time | string | 否 | 最近打开时间 |
operate_status | string | 否 | 操作状态 DISABLED关闭 ENABLED启用 LOCK锁定 |
account_list | [object] | 否 | 账号 |
font_id | string | 否 | 字体id |
data_config | string | 否 | 数据配置 |
browser_config | string | 否 | 浏览器配置 |
env_mutil_open_type | string | 否 | 环境多开: GLOBAL:全局 ALLOW:允许 BAN:禁止 |
operate_members | [object] | 否 | 当前环境操作人信息 |
config_ext_map | object | 否 | 扩展字段 |
total | integer(int32) | 是 | 总条数 |
响应示例
{
"code": 0,
"msg": "success",
"data": {
"list": [
{
"id": "1848687666096832515",
"create_time": "2024-10-22 19:27:41",
"update_time": "2024-10-23 21:28:15",
"serial_num": 166,
"group_id": "1776895967565094913",
"group_name": null,
"name": "\u5bfc\u5165-\u8d26\u6237-copy166-20241022192741216",
"browser": "CHROME",
"ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6005.0 Safari/537.36",
"ua_os": "MAC",
"cookie": "",
"other_cookie": null,
"urls": [
],
"status": "ENABLED",
"remark": null,
"last_open_time": "2024-10-23 21:26:15",
"operate_status": "DISABLED",
"account_list": null,
"font_id": "",
"data_config": "{\"type\":25,\"dataType\":\"custom\"}",
"browser_config": "{\"type\":1,\"browserType\":\"custom\"}",
"env_mutil_open_type": "GLOBAL",
"config_ext_map": null
}
],
"total": 65
}
}
PATCH 打开环境
PATCH /v1/env/{env_id}/open
请求参数
名称 | 类型 | 必选 | 说明 |
env_id | string | 是 | 环境ID,对应列表中的id |
响应参数
名称 | 类型 | 必选 | 说明 |
serial_number | integer(int32) | 是 | 环境序号 |
pid | string | 是 | 环境的进程id |
debug_port | integer | 是 | 环境端口 |
响应示例
{
'code': 0,
'msg': 'success',
'data': {
'serial_number': 2,
'pid': '27028',
'debug_port': 17539
}
}
PATCH 关闭环境
PATCH /v1/env/{env_id}/close
请求参数
名称 | 类型 | 必选 | 说明 |
env_id | string | 是 | 环境ID,对应列表中的id |
响应参数
名称 | 类型 | 必选 | 说明 |
serial_number | integer(int32) | 是 | 环境序号 |
pid | string | 是 | 环境的进程id |
debug_port | integer | 是 | 环境端口 |
响应示例
{
'code': 0,
'msg': 'success'
}