brosdk 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- brosdk-1.0.0/PKG-INFO +269 -0
- brosdk-1.0.0/README.md +237 -0
- brosdk-1.0.0/brosdk/__init__.py +29 -0
- brosdk-1.0.0/brosdk/api.py +276 -0
- brosdk-1.0.0/brosdk/console.py +232 -0
- brosdk-1.0.0/brosdk/ffi.py +267 -0
- brosdk-1.0.0/brosdk/manager.py +482 -0
- brosdk-1.0.0/brosdk.egg-info/PKG-INFO +269 -0
- brosdk-1.0.0/brosdk.egg-info/SOURCES.txt +13 -0
- brosdk-1.0.0/brosdk.egg-info/dependency_links.txt +1 -0
- brosdk-1.0.0/brosdk.egg-info/entry_points.txt +2 -0
- brosdk-1.0.0/brosdk.egg-info/requires.txt +9 -0
- brosdk-1.0.0/brosdk.egg-info/top_level.txt +1 -0
- brosdk-1.0.0/pyproject.toml +55 -0
- brosdk-1.0.0/setup.cfg +4 -0
brosdk-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: brosdk
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Python bindings for the Brosdk Browser SDK
|
|
5
|
+
Author: browsersdk
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://www.brosdk.com/
|
|
8
|
+
Project-URL: Repository, https://github.com/browsersdk/brosdk-python
|
|
9
|
+
Project-URL: Changelog, https://github.com/browsersdk/brosdk/releases
|
|
10
|
+
Keywords: browser,sdk,automation,fingerprint
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
21
|
+
Classifier: Operating System :: MacOS
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
23
|
+
Requires-Python: >=3.8
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
Provides-Extra: requests
|
|
26
|
+
Requires-Dist: requests>=2.28.0; extra == "requests"
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: requests>=2.28.0; extra == "dev"
|
|
29
|
+
Requires-Dist: colorama>=0.4.6; extra == "dev"
|
|
30
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
31
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
32
|
+
|
|
33
|
+
# brosdk-python
|
|
34
|
+
|
|
35
|
+
[](https://pypi.org/project/brosdk/)
|
|
36
|
+
[](https://www.python.org/downloads/)
|
|
37
|
+
|
|
38
|
+
Python 语言绑定库 + 交互式命令行 Demo。
|
|
39
|
+
|
|
40
|
+
通过 `ctypes` 动态加载平台 DLL/dylib,暴露安全、符合 Python 惯用法的 API。
|
|
41
|
+
|
|
42
|
+
## 安装
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# 从 PyPI 安装(推荐)
|
|
46
|
+
pip install brosdk
|
|
47
|
+
|
|
48
|
+
# 从源码安装
|
|
49
|
+
git clone https://github.com/browsersdk/brosdk-python.git
|
|
50
|
+
cd brosdk-python
|
|
51
|
+
pip install .
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 项目结构
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
brosdk-python/
|
|
58
|
+
├── brosdk/
|
|
59
|
+
│ ├── __init__.py # 公共 API 导出
|
|
60
|
+
│ ├── ffi.py # 原始 C ctypes 绑定
|
|
61
|
+
│ ├── manager.py # 高级安全封装 + 事件回调
|
|
62
|
+
│ ├── api.py # REST API 客户端
|
|
63
|
+
│ └── console.py # Windows DLL 控制台输出修复
|
|
64
|
+
├── libs/
|
|
65
|
+
│ ├── brosdk.dll # Windows x64 原生库
|
|
66
|
+
│ └── brosdk.dylib # macOS arm64 原生库
|
|
67
|
+
├── demo.py # 交互式命令行 Demo
|
|
68
|
+
├── pyproject.toml # 项目配置
|
|
69
|
+
├── requirements.txt # 可选依赖
|
|
70
|
+
└── README.md
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 环境要求
|
|
74
|
+
|
|
75
|
+
- Python 3.8+
|
|
76
|
+
- 从 [github.com/browsersdk/brosdk/releases](https://github.com/browsersdk/brosdk/releases) 下载原生库并放置到 `libs/` 目录
|
|
77
|
+
|
|
78
|
+
## 快速开始
|
|
79
|
+
|
|
80
|
+
### 安装依赖(可选)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
pip install -r requirements.txt
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
> 不安装也能运行,`requests` 会降级到内置 `urllib`,`colorama` 会降级为无色输出。
|
|
87
|
+
|
|
88
|
+
### 运行 Demo
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# 交互式菜单
|
|
92
|
+
python demo.py
|
|
93
|
+
|
|
94
|
+
# 预填 API Key 直接进入
|
|
95
|
+
python demo.py --api-key YOUR_API_KEY
|
|
96
|
+
|
|
97
|
+
# 快速演示(自动执行所有步骤)
|
|
98
|
+
python demo.py --quick --api-key YOUR_API_KEY
|
|
99
|
+
|
|
100
|
+
# 使用已有环境跳过创建步骤
|
|
101
|
+
python demo.py --quick --api-key YOUR_API_KEY --env-id ENV_ID
|
|
102
|
+
|
|
103
|
+
# 开启详细日志
|
|
104
|
+
python demo.py --verbose
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Demo 使用流程
|
|
108
|
+
|
|
109
|
+
1. **选择 `1`** → 输入 API Key → 自动获取 userSig → 初始化 SDK(API Key 会自动记住)
|
|
110
|
+
2. **选择 `2`** → 查看环境列表(SDK 接口或 REST API)
|
|
111
|
+
3. **选择 `3`** → 选择内核版本(可选代理)→ 创建新环境
|
|
112
|
+
4. **选择 `4`** → 启动浏览器环境(有记住的环境 ID 时会询问是否复用)
|
|
113
|
+
5. **选择 `5`** → 关闭浏览器环境
|
|
114
|
+
6. **选择 `6`** → 查看 SDK 信息
|
|
115
|
+
7. **选择 `7`** → 更新动态库(从 GitHub Releases 自动下载)
|
|
116
|
+
|
|
117
|
+
> Demo 会自动记住最后一次使用的环境 ID 和 API Key,下次启动无需重复输入。
|
|
118
|
+
|
|
119
|
+
## 库使用方式
|
|
120
|
+
|
|
121
|
+
### 基础用法
|
|
122
|
+
|
|
123
|
+
```python
|
|
124
|
+
from brosdk import BrosdkManager
|
|
125
|
+
|
|
126
|
+
def on_event(event):
|
|
127
|
+
print(f"SDK 事件: code={event.code}, data={event.data}")
|
|
128
|
+
|
|
129
|
+
sdk = BrosdkManager()
|
|
130
|
+
sdk.on_event(on_event)
|
|
131
|
+
|
|
132
|
+
# 加载原生库
|
|
133
|
+
sdk.load("libs/brosdk.dll") # Windows
|
|
134
|
+
# sdk.load("libs/brosdk.dylib") # macOS
|
|
135
|
+
|
|
136
|
+
# 初始化(user_sig 通过 REST API 获取)
|
|
137
|
+
sdk.init("your_user_sig", "/tmp/.brosdk", port=8080)
|
|
138
|
+
|
|
139
|
+
# 启动环境
|
|
140
|
+
import json
|
|
141
|
+
sdk.browser_open(json.dumps({
|
|
142
|
+
"envs": [{"envId": "env-001", "args": ["--no-first-run"]}]
|
|
143
|
+
}))
|
|
144
|
+
|
|
145
|
+
# 关闭环境
|
|
146
|
+
sdk.browser_close("env-001")
|
|
147
|
+
|
|
148
|
+
sdk.shutdown()
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 使用上下文管理器
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from brosdk import BrosdkManager
|
|
155
|
+
|
|
156
|
+
with BrosdkManager("libs/brosdk.dll") as sdk:
|
|
157
|
+
sdk.init("user_sig", "/tmp/.brosdk")
|
|
158
|
+
sdk.browser_open('{"envs": [{"envId": "env-001"}]}')
|
|
159
|
+
# SDK 会在 with 块结束时自动 shutdown
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### REST API 客户端
|
|
163
|
+
|
|
164
|
+
```python
|
|
165
|
+
from brosdk.api import BrosdkApiClient
|
|
166
|
+
|
|
167
|
+
client = BrosdkApiClient(api_key="your-api-key")
|
|
168
|
+
|
|
169
|
+
# 获取 userSig
|
|
170
|
+
user_sig = client.get_user_sig()
|
|
171
|
+
|
|
172
|
+
# 创建环境
|
|
173
|
+
env = client.create_env(kernel_version="127", proxy="http://127.0.0.1:8080")
|
|
174
|
+
print(f"创建成功: {env.env_id}")
|
|
175
|
+
|
|
176
|
+
# 查询环境列表
|
|
177
|
+
result = client.page_env(page=1, page_size=20)
|
|
178
|
+
for e in result.list:
|
|
179
|
+
print(f"{e.env_id}: {e.env_name} ({e.kernel_version})")
|
|
180
|
+
|
|
181
|
+
# 获取所有环境(自动翻页)
|
|
182
|
+
all_envs = client.list_all_envs()
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 监听 SDK 事件
|
|
186
|
+
|
|
187
|
+
```python
|
|
188
|
+
from brosdk import BrosdkManager, SdkEvent
|
|
189
|
+
|
|
190
|
+
sdk = BrosdkManager()
|
|
191
|
+
|
|
192
|
+
@sdk.on_event
|
|
193
|
+
def handle_event(event: SdkEvent):
|
|
194
|
+
if event.is_ok():
|
|
195
|
+
print(f"成功: {event.data}")
|
|
196
|
+
else:
|
|
197
|
+
data = event.data_json() # 自动解析 JSON
|
|
198
|
+
print(f"事件 code={event.code}: {data}")
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
> **注意**:`browser_open` 是异步操作,结果通过事件回调返回,不阻塞主线程。
|
|
202
|
+
|
|
203
|
+
## API 参考
|
|
204
|
+
|
|
205
|
+
### `BrosdkManager`
|
|
206
|
+
|
|
207
|
+
| 方法 | 说明 |
|
|
208
|
+
|------|------|
|
|
209
|
+
| `load(lib_path)` | 加载原生库,注册回调 |
|
|
210
|
+
| `init(user_sig, work_dir, port)` | 用凭据初始化 SDK |
|
|
211
|
+
| `sdk_info()` | 查询 SDK 运行时信息 |
|
|
212
|
+
| `browser_open(json_str)` | 启动浏览器环境(异步) |
|
|
213
|
+
| `browser_close(env_id)` | 关闭浏览器环境 |
|
|
214
|
+
| `token_update(token_json)` | 刷新访问令牌 |
|
|
215
|
+
| `env_create(config)` | 创建新环境 |
|
|
216
|
+
| `env_page(page, page_size)` | 分页查询环境列表 |
|
|
217
|
+
| `env_update(config)` | 更新环境配置 |
|
|
218
|
+
| `env_destroy(env_id)` | 销毁环境 |
|
|
219
|
+
| `shutdown()` | 优雅关闭 |
|
|
220
|
+
| `on_event(callback)` | 注册事件监听器 |
|
|
221
|
+
| `off_event(callback)` | 移除事件监听器 |
|
|
222
|
+
|
|
223
|
+
### `BrosdkApiClient`
|
|
224
|
+
|
|
225
|
+
| 方法 | 说明 |
|
|
226
|
+
|------|------|
|
|
227
|
+
| `get_user_sig(duration)` | API Key → userSig |
|
|
228
|
+
| `create_env(kernel_version, ...)` | 创建环境 |
|
|
229
|
+
| `page_env(page, page_size)` | 分页查询环境 |
|
|
230
|
+
| `list_all_envs(page_size)` | 获取所有环境(自动翻页) |
|
|
231
|
+
|
|
232
|
+
### `SdkEvent`
|
|
233
|
+
|
|
234
|
+
```python
|
|
235
|
+
@dataclass
|
|
236
|
+
class SdkEvent:
|
|
237
|
+
code: int # SDK 状态码
|
|
238
|
+
data: str # JSON 数据字符串
|
|
239
|
+
|
|
240
|
+
def is_ok(self) -> bool: ... # 是否成功
|
|
241
|
+
def data_json(self) -> Any: ... # 解析 data 为 Python 对象
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## 构建
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
# 安装开发依赖
|
|
248
|
+
pip install -e ".[dev]"
|
|
249
|
+
|
|
250
|
+
# 运行测试
|
|
251
|
+
pytest
|
|
252
|
+
|
|
253
|
+
# 构建发布包
|
|
254
|
+
python -m build
|
|
255
|
+
|
|
256
|
+
# 上传到 PyPI
|
|
257
|
+
twine upload dist/*
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## 特性
|
|
261
|
+
|
|
262
|
+
- **记住环境**:自动保存最后一次使用的环境 ID 和 API Key(`~/.brosdk-demo.json`)
|
|
263
|
+
- **动态库更新**:一键从 GitHub Releases 下载并安装最新版本动态库
|
|
264
|
+
- **跨平台**:支持 Windows(x64)、macOS(arm64)、Linux(x64)
|
|
265
|
+
- **零强制依赖**:核心库无第三方依赖,requests/colorama 为可选增强
|
|
266
|
+
|
|
267
|
+
## 协议
|
|
268
|
+
|
|
269
|
+
MIT
|
brosdk-1.0.0/README.md
ADDED
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# brosdk-python
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/brosdk/)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
|
|
6
|
+
Python 语言绑定库 + 交互式命令行 Demo。
|
|
7
|
+
|
|
8
|
+
通过 `ctypes` 动态加载平台 DLL/dylib,暴露安全、符合 Python 惯用法的 API。
|
|
9
|
+
|
|
10
|
+
## 安装
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# 从 PyPI 安装(推荐)
|
|
14
|
+
pip install brosdk
|
|
15
|
+
|
|
16
|
+
# 从源码安装
|
|
17
|
+
git clone https://github.com/browsersdk/brosdk-python.git
|
|
18
|
+
cd brosdk-python
|
|
19
|
+
pip install .
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## 项目结构
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
brosdk-python/
|
|
26
|
+
├── brosdk/
|
|
27
|
+
│ ├── __init__.py # 公共 API 导出
|
|
28
|
+
│ ├── ffi.py # 原始 C ctypes 绑定
|
|
29
|
+
│ ├── manager.py # 高级安全封装 + 事件回调
|
|
30
|
+
│ ├── api.py # REST API 客户端
|
|
31
|
+
│ └── console.py # Windows DLL 控制台输出修复
|
|
32
|
+
├── libs/
|
|
33
|
+
│ ├── brosdk.dll # Windows x64 原生库
|
|
34
|
+
│ └── brosdk.dylib # macOS arm64 原生库
|
|
35
|
+
├── demo.py # 交互式命令行 Demo
|
|
36
|
+
├── pyproject.toml # 项目配置
|
|
37
|
+
├── requirements.txt # 可选依赖
|
|
38
|
+
└── README.md
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 环境要求
|
|
42
|
+
|
|
43
|
+
- Python 3.8+
|
|
44
|
+
- 从 [github.com/browsersdk/brosdk/releases](https://github.com/browsersdk/brosdk/releases) 下载原生库并放置到 `libs/` 目录
|
|
45
|
+
|
|
46
|
+
## 快速开始
|
|
47
|
+
|
|
48
|
+
### 安装依赖(可选)
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
pip install -r requirements.txt
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> 不安装也能运行,`requests` 会降级到内置 `urllib`,`colorama` 会降级为无色输出。
|
|
55
|
+
|
|
56
|
+
### 运行 Demo
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# 交互式菜单
|
|
60
|
+
python demo.py
|
|
61
|
+
|
|
62
|
+
# 预填 API Key 直接进入
|
|
63
|
+
python demo.py --api-key YOUR_API_KEY
|
|
64
|
+
|
|
65
|
+
# 快速演示(自动执行所有步骤)
|
|
66
|
+
python demo.py --quick --api-key YOUR_API_KEY
|
|
67
|
+
|
|
68
|
+
# 使用已有环境跳过创建步骤
|
|
69
|
+
python demo.py --quick --api-key YOUR_API_KEY --env-id ENV_ID
|
|
70
|
+
|
|
71
|
+
# 开启详细日志
|
|
72
|
+
python demo.py --verbose
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Demo 使用流程
|
|
76
|
+
|
|
77
|
+
1. **选择 `1`** → 输入 API Key → 自动获取 userSig → 初始化 SDK(API Key 会自动记住)
|
|
78
|
+
2. **选择 `2`** → 查看环境列表(SDK 接口或 REST API)
|
|
79
|
+
3. **选择 `3`** → 选择内核版本(可选代理)→ 创建新环境
|
|
80
|
+
4. **选择 `4`** → 启动浏览器环境(有记住的环境 ID 时会询问是否复用)
|
|
81
|
+
5. **选择 `5`** → 关闭浏览器环境
|
|
82
|
+
6. **选择 `6`** → 查看 SDK 信息
|
|
83
|
+
7. **选择 `7`** → 更新动态库(从 GitHub Releases 自动下载)
|
|
84
|
+
|
|
85
|
+
> Demo 会自动记住最后一次使用的环境 ID 和 API Key,下次启动无需重复输入。
|
|
86
|
+
|
|
87
|
+
## 库使用方式
|
|
88
|
+
|
|
89
|
+
### 基础用法
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
from brosdk import BrosdkManager
|
|
93
|
+
|
|
94
|
+
def on_event(event):
|
|
95
|
+
print(f"SDK 事件: code={event.code}, data={event.data}")
|
|
96
|
+
|
|
97
|
+
sdk = BrosdkManager()
|
|
98
|
+
sdk.on_event(on_event)
|
|
99
|
+
|
|
100
|
+
# 加载原生库
|
|
101
|
+
sdk.load("libs/brosdk.dll") # Windows
|
|
102
|
+
# sdk.load("libs/brosdk.dylib") # macOS
|
|
103
|
+
|
|
104
|
+
# 初始化(user_sig 通过 REST API 获取)
|
|
105
|
+
sdk.init("your_user_sig", "/tmp/.brosdk", port=8080)
|
|
106
|
+
|
|
107
|
+
# 启动环境
|
|
108
|
+
import json
|
|
109
|
+
sdk.browser_open(json.dumps({
|
|
110
|
+
"envs": [{"envId": "env-001", "args": ["--no-first-run"]}]
|
|
111
|
+
}))
|
|
112
|
+
|
|
113
|
+
# 关闭环境
|
|
114
|
+
sdk.browser_close("env-001")
|
|
115
|
+
|
|
116
|
+
sdk.shutdown()
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### 使用上下文管理器
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
from brosdk import BrosdkManager
|
|
123
|
+
|
|
124
|
+
with BrosdkManager("libs/brosdk.dll") as sdk:
|
|
125
|
+
sdk.init("user_sig", "/tmp/.brosdk")
|
|
126
|
+
sdk.browser_open('{"envs": [{"envId": "env-001"}]}')
|
|
127
|
+
# SDK 会在 with 块结束时自动 shutdown
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### REST API 客户端
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
from brosdk.api import BrosdkApiClient
|
|
134
|
+
|
|
135
|
+
client = BrosdkApiClient(api_key="your-api-key")
|
|
136
|
+
|
|
137
|
+
# 获取 userSig
|
|
138
|
+
user_sig = client.get_user_sig()
|
|
139
|
+
|
|
140
|
+
# 创建环境
|
|
141
|
+
env = client.create_env(kernel_version="127", proxy="http://127.0.0.1:8080")
|
|
142
|
+
print(f"创建成功: {env.env_id}")
|
|
143
|
+
|
|
144
|
+
# 查询环境列表
|
|
145
|
+
result = client.page_env(page=1, page_size=20)
|
|
146
|
+
for e in result.list:
|
|
147
|
+
print(f"{e.env_id}: {e.env_name} ({e.kernel_version})")
|
|
148
|
+
|
|
149
|
+
# 获取所有环境(自动翻页)
|
|
150
|
+
all_envs = client.list_all_envs()
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### 监听 SDK 事件
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
from brosdk import BrosdkManager, SdkEvent
|
|
157
|
+
|
|
158
|
+
sdk = BrosdkManager()
|
|
159
|
+
|
|
160
|
+
@sdk.on_event
|
|
161
|
+
def handle_event(event: SdkEvent):
|
|
162
|
+
if event.is_ok():
|
|
163
|
+
print(f"成功: {event.data}")
|
|
164
|
+
else:
|
|
165
|
+
data = event.data_json() # 自动解析 JSON
|
|
166
|
+
print(f"事件 code={event.code}: {data}")
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
> **注意**:`browser_open` 是异步操作,结果通过事件回调返回,不阻塞主线程。
|
|
170
|
+
|
|
171
|
+
## API 参考
|
|
172
|
+
|
|
173
|
+
### `BrosdkManager`
|
|
174
|
+
|
|
175
|
+
| 方法 | 说明 |
|
|
176
|
+
|------|------|
|
|
177
|
+
| `load(lib_path)` | 加载原生库,注册回调 |
|
|
178
|
+
| `init(user_sig, work_dir, port)` | 用凭据初始化 SDK |
|
|
179
|
+
| `sdk_info()` | 查询 SDK 运行时信息 |
|
|
180
|
+
| `browser_open(json_str)` | 启动浏览器环境(异步) |
|
|
181
|
+
| `browser_close(env_id)` | 关闭浏览器环境 |
|
|
182
|
+
| `token_update(token_json)` | 刷新访问令牌 |
|
|
183
|
+
| `env_create(config)` | 创建新环境 |
|
|
184
|
+
| `env_page(page, page_size)` | 分页查询环境列表 |
|
|
185
|
+
| `env_update(config)` | 更新环境配置 |
|
|
186
|
+
| `env_destroy(env_id)` | 销毁环境 |
|
|
187
|
+
| `shutdown()` | 优雅关闭 |
|
|
188
|
+
| `on_event(callback)` | 注册事件监听器 |
|
|
189
|
+
| `off_event(callback)` | 移除事件监听器 |
|
|
190
|
+
|
|
191
|
+
### `BrosdkApiClient`
|
|
192
|
+
|
|
193
|
+
| 方法 | 说明 |
|
|
194
|
+
|------|------|
|
|
195
|
+
| `get_user_sig(duration)` | API Key → userSig |
|
|
196
|
+
| `create_env(kernel_version, ...)` | 创建环境 |
|
|
197
|
+
| `page_env(page, page_size)` | 分页查询环境 |
|
|
198
|
+
| `list_all_envs(page_size)` | 获取所有环境(自动翻页) |
|
|
199
|
+
|
|
200
|
+
### `SdkEvent`
|
|
201
|
+
|
|
202
|
+
```python
|
|
203
|
+
@dataclass
|
|
204
|
+
class SdkEvent:
|
|
205
|
+
code: int # SDK 状态码
|
|
206
|
+
data: str # JSON 数据字符串
|
|
207
|
+
|
|
208
|
+
def is_ok(self) -> bool: ... # 是否成功
|
|
209
|
+
def data_json(self) -> Any: ... # 解析 data 为 Python 对象
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## 构建
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
# 安装开发依赖
|
|
216
|
+
pip install -e ".[dev]"
|
|
217
|
+
|
|
218
|
+
# 运行测试
|
|
219
|
+
pytest
|
|
220
|
+
|
|
221
|
+
# 构建发布包
|
|
222
|
+
python -m build
|
|
223
|
+
|
|
224
|
+
# 上传到 PyPI
|
|
225
|
+
twine upload dist/*
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## 特性
|
|
229
|
+
|
|
230
|
+
- **记住环境**:自动保存最后一次使用的环境 ID 和 API Key(`~/.brosdk-demo.json`)
|
|
231
|
+
- **动态库更新**:一键从 GitHub Releases 下载并安装最新版本动态库
|
|
232
|
+
- **跨平台**:支持 Windows(x64)、macOS(arm64)、Linux(x64)
|
|
233
|
+
- **零强制依赖**:核心库无第三方依赖,requests/colorama 为可选增强
|
|
234
|
+
|
|
235
|
+
## 协议
|
|
236
|
+
|
|
237
|
+
MIT
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""
|
|
2
|
+
brosdk-python
|
|
3
|
+
=================
|
|
4
|
+
|
|
5
|
+
Python 语言绑定库,动态加载平台 DLL/dylib 并暴露安全、符合 Python 惯用法的 API。
|
|
6
|
+
|
|
7
|
+
快速开始
|
|
8
|
+
--------
|
|
9
|
+
|
|
10
|
+
.. code-block:: python
|
|
11
|
+
|
|
12
|
+
from brosdk import BrosdkManager
|
|
13
|
+
|
|
14
|
+
sdk = BrosdkManager()
|
|
15
|
+
sdk.load("libs/windows-x64/brosdk.dll")
|
|
16
|
+
sdk.init("your_user_sig", "/path/to/work_dir", 8080)
|
|
17
|
+
|
|
18
|
+
sdk.browser_open('{"envs": [{"envId": "env-001"}]}')
|
|
19
|
+
sdk.browser_close("env-001")
|
|
20
|
+
sdk.shutdown()
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
from .manager import BrosdkManager, SdkEvent
|
|
24
|
+
from .ffi import BrosdkLib
|
|
25
|
+
|
|
26
|
+
__version__ = "1.0.0"
|
|
27
|
+
__all__ = [
|
|
28
|
+
"BrosdkManager", "SdkEvent", "BrosdkLib",
|
|
29
|
+
]
|