I. Hướng dẫn phát triển dịch vụ API Open
1.1 Cách sử dụng
- Cài đặt và đăng nhập vào trình duyệt DICloak.
- Mở Cài đặt thêm – API mở – Lấy URL và khóa giao diện cục bộ.
- Lấy mã ví dụ và chạy script.
1.2 Tổng quan về cách sử dụng giao diện
- Khi phương thức yêu cầu giao diện là POST, cách truyền tham số là truyền tham số qua body, với dữ liệu định dạng JSON, không phải là form-data cũng không phải là tham số trong URL.
- Giao diện trả về một đối tượng JSON, nếu code là 0, có nghĩa là thành công, nếu có dữ liệu trả về, chúng sẽ được đính kèm trong đối tượng data.
- Nếu code không phải là 0, có nghĩa là thất bại, thông tin lỗi sẽ được đính kèm trong trường msg.
{
'code': 0,
'msg': 'success',
'data': {
'serial_number': 2,
'pid': '27028',
'debug_port': 17539
}
}
{
'code': 500,
'msg': 'fetch fail'
}
- Tất cả các yêu cầu đều cần thêm vào header: X-API-KEY, với giá trị là khóa được sao chép từ client.
1.3 Mã ví dụ
Trình duyệt Dicloak sử dụng lõi 120, cần tải xuống chromedriver trước.
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'])
II. Chi tiết giao diện hồ sơ
GET Lấy danh sách hồ sơ
GET /v1/env/{env_id}/open
Tham số yêu cầu
Tên | Loại | Bắt buộc | Mô tả |
page_no | integer | Có | Trang, mặc định là 1 |
page_size | integer | Có | Kích thước trang, mặc định là 10 |
serial_num | integer | Không | Số |
name | string | Không | Tên |
group_id | string | Không | Nhóm |
proxy_host | string | Không | Máy chủ proxy (Cách 1) |
status | string | Không | Trạng thái(DISABLED Tạm ngừng ENABLED Bình thường) |
platform_user | string | Không | Nền tảng |
remark | string | Không | Ghi chú |
start_create_time | string | Không | Thời gian bắt đầu |
end_create_time | string | Không | Thời gian kết thúc |
operate_status | string | Không | Trạng thái hồ sơ ENABLED Mở,DISABLED Đóng |
X-API-KEY | 请求头 | Có |
Tham số phản hồi
Tên | Loại | Bắt buộc | Mô tả |
id | string | Có | id Hồ sơ,env_id |
create_time | string | Không | Thời gian tạo |
update_time | string | Không | Thời gian cập nhật |
serial_num | integer | Có | Số |
group_id | string | Không | ID Nhóm |
group_name | string | Không | Tên Nhóm |
name | string | Có | Tên |
browser | string | Không | Loại Trình duyệt (CHROME:Chrome) |
ua_type | string | Không | Loại UA |
ua | string | Không | User Agent |
ua_os | string | Không | User Agent OS |
cookie | string | Không | cookie |
other_cookie | string | Không | cookie Khác |
proxy_way | string | Không | Phương thức proxy (CUSTOM:Tùy chỉnh SELECT_EXIST:Chọn sẵn có) |
proxy_id | string | Không | ID Proxy (Cách 2) |
proxy_type | string | Không | Loại proxy(Cách 1) (NON_USE:không sử dụng HTTP HTTPS SSH SOCKS5 IPFLY) |
proxy_host | string | Không | Máy chủ proxy(Cách1) |
proxy_port | integer(int32) | Không | Cổng proxy(Cách 1) |
proxy_user_name | string | Không | Tài khoản proxy(cách 1) |
proxy_passwd | string | Không | Mật khẩu proxy (cách 1) |
proxy_ip_type | string | Không | IP查询渠道(方式1) (IP2LOCATION) |
urls | [string] | Không | Danh sách url |
config | string | Không | Cài đặt nâng caoJSON |
status | string | Không | Trạng thái(DISABLED Ngừng ENABLED Bình thường) |
remark | string | Không | Ghi chú |
last_open_time | string | Không | Thời gian mở gần đây |
operate_status | string | Không | Trạng thái hoạt động DISABLED Đóng ENABLED Kích hoạt LOCK Khóa |
account_list | [object] | Không | Tài khoản |
font_id | string | Không | id Phông chữ |
data_config | string | Không | Cấu hình dữ liệu |
browser_config | string | Không | Cấu hình trình duyệt |
env_mutil_open_type | string | Không | Mở đa hồ sơ: GLOBAL:Toàn cục ALLOW:Cho phép BAN:Cấm |
operate_members | [object] | Không | Thông tin người thao tác hồ sơ hiện tại |
config_ext_map | object | Không | Trường tiện ích |
total | integer(int32) | Có | Tổng số mục |
Ví dụ phản hồi
{
"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 Mở Hồ Sơ
PATCH /v1/env/{env_id}/open
Tham số yêu cầu
Tên | Loại | Bắt buộc | Mô tả |
env_id | string | Có | ID Hồ Sơ,ID Hồ sơ tương ứng |
Thông số phản hồi
Tên | Loại | Bắt buộc | Mô tả |
serial_number | integer(int32) | Có | Số hồ sơ |
pid | string | Có | id Tiến trình hồ sơ |
debug_port | integer | Có | Cổng hồ sơ |
Ví dụ phản hồi
{
'code': 0,
'msg': 'success',
'data': {
'serial_number': 2,
'pid': '27028',
'debug_port': 17539
}
}
PATCH Đóng Hồ Sơ
PATCH /v1/env/{env_id}/close
Tham số yêu cầu
Tên | Loại | Bắt buộc | Mô tả |
env_id | string | Có | ID Hồ sơ,id Hồ sơ tương ứng |
Tham số phản hồi
Tên | Loại | Bắt buộc | Mô tả |
serial_number | integer(int32) | Có | Số hồ sơ |
pid | string | Có | id Tiến trình hồ sơ |
debug_port | integer | Có | Cổng hồ sơ |
Ví dụ phản hồi
{
'code': 0,
'msg': 'success'
}