Python bindings for the Brosdk Browser SDK
Project description
brosdk-sdk-python
Python 语言绑定库 + 交互式命令行 Demo。
通过 ctypes 动态加载平台 DLL/dylib,暴露安全、符合 Python 惯用法的 API。
项目结构
brosdk-sdk-python/
├── brosdk/
│ ├── __init__.py # 公共 API 导出
│ ├── ffi.py # 原始 C ctypes 绑定
│ ├── manager.py # 高级安全封装 + 事件回调
│ └── api.py # REST API 客户端
├── libs/
│ ├── brosdk.dll # Windows x64 原生库
│ └── brosdk.dylib # macOS arm64 原生库
├── demo.py # 交互式命令行 Demo
├── pyproject.toml # 项目配置
├── requirements.txt # 可选依赖
└── README.md
环境要求
- Python 3.8+
- 从 github.com/browsersdk/brosdk-sdk/releases 下载原生库并放置到
libs/目录
快速开始
安装依赖(可选)
pip install -r requirements.txt
不安装也能运行,
requests会降级到内置urllib,colorama会降级为无色输出。
运行 Demo
# 交互式菜单
python demo.py
# 预填 API Key 直接进入
python demo.py --api-key YOUR_API_KEY
# 快速演示(自动执行所有步骤)
python demo.py --quick --api-key YOUR_API_KEY
# 使用已有环境跳过创建步骤
python demo.py --quick --api-key YOUR_API_KEY --env-id ENV_ID
# 开启详细日志
python demo.py --verbose
Demo 使用流程
- 选择
1→ 输入 API Key → 自动获取 userSig → 初始化 SDK - 选择
2→ 查看环境列表(SDK 接口或 REST API) - 选择
3→ 选择内核版本(可选代理)→ 创建新环境 - 选择
4→ 启动浏览器环境(异步,等待 SDK 事件回调) - 选择
5→ 关闭浏览器环境
库使用方式
基础用法
from brosdk import BrosdkManager
def on_event(event):
print(f"SDK 事件: code={event.code}, data={event.data}")
sdk = BrosdkManager()
sdk.on_event(on_event)
# 加载原生库
sdk.load("libs/brosdk.dll") # Windows
# sdk.load("libs/brosdk.dylib") # macOS
# 初始化(user_sig 通过 REST API 获取)
sdk.init("your_user_sig", "/tmp/.brosdk", port=8080)
# 启动环境
import json
sdk.browser_open(json.dumps({
"envs": [{"envId": "env-001", "args": ["--no-first-run"]}]
}))
# 关闭环境
sdk.browser_close("env-001")
sdk.shutdown()
使用上下文管理器
from brosdk import BrosdkManager
with BrosdkManager("libs/brosdk.dll") as sdk:
sdk.init("user_sig", "/tmp/.brosdk")
sdk.browser_open('{"envs": [{"envId": "env-001"}]}')
# SDK 会在 with 块结束时自动 shutdown
REST API 客户端
from brosdk.api import BrosdkApiClient
client = BrosdkApiClient(api_key="your-api-key")
# 获取 userSig
user_sig = client.get_user_sig()
# 创建环境
env = client.create_env(kernel_version="127", proxy="http://127.0.0.1:8080")
print(f"创建成功: {env.env_id}")
# 查询环境列表
result = client.page_env(page=1, page_size=20)
for e in result.list:
print(f"{e.env_id}: {e.env_name} ({e.kernel_version})")
# 获取所有环境(自动翻页)
all_envs = client.list_all_envs()
监听 SDK 事件
from brosdk import BrosdkManager, SdkEvent
sdk = BrosdkManager()
@sdk.on_event
def handle_event(event: SdkEvent):
if event.is_ok():
print(f"成功: {event.data}")
else:
data = event.data_json() # 自动解析 JSON
print(f"事件 code={event.code}: {data}")
注意:
browser_open是异步操作,结果通过事件回调返回,不阻塞主线程。
API 参考
BrosdkManager
| 方法 | 说明 |
|---|---|
load(lib_path) |
加载原生库,注册回调 |
init(user_sig, work_dir, port) |
用凭据初始化 SDK |
sdk_info() |
查询 SDK 运行时信息 |
browser_open(json_str) |
启动浏览器环境(异步) |
browser_close(env_id) |
关闭浏览器环境 |
token_update(token_json) |
刷新访问令牌 |
env_create(config) |
创建新环境 |
env_page(page, page_size) |
分页查询环境列表 |
env_update(config) |
更新环境配置 |
env_destroy(env_id) |
销毁环境 |
shutdown() |
优雅关闭 |
on_event(callback) |
注册事件监听器 |
off_event(callback) |
移除事件监听器 |
BrosdkApiClient
| 方法 | 说明 |
|---|---|
get_user_sig(duration) |
API Key → userSig |
create_env(kernel_version, ...) |
创建环境 |
page_env(page, page_size) |
分页查询环境 |
list_all_envs(page_size) |
获取所有环境(自动翻页) |
SdkEvent
@dataclass
class SdkEvent:
code: int # SDK 状态码
data: str # JSON 数据字符串
def is_ok(self) -> bool: ... # 是否成功
def data_json(self) -> Any: ... # 解析 data 为 Python 对象
构建
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest
# 构建发布包
python -m build
协议
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
brosdk_sdk-1.0.0.tar.gz
(17.3 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file brosdk_sdk-1.0.0.tar.gz.
File metadata
- Download URL: brosdk_sdk-1.0.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6dd7044bde1e60b16ff332be2c2a745504cb13cac8e8457c7f9dd20941cb70d4
|
|
| MD5 |
81a543c4b5c80af5beab3cb2d935d9b2
|
|
| BLAKE2b-256 |
306d80093eb82af25a85bf8b42bdd99d2038bbe4bf569b6169dba0a936f1cf61
|
File details
Details for the file brosdk_sdk-1.0.0-py3-none-any.whl.
File metadata
- Download URL: brosdk_sdk-1.0.0-py3-none-any.whl
- Upload date:
- Size: 17.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11116d418699df57c95d723d92ca3e806ab0f8758bfc713449849cef076fb04b
|
|
| MD5 |
3c2560c5dab2e436d966c682e98919e1
|
|
| BLAKE2b-256 |
1b61a75c00b03bcf29b068da5b3495f98da03aab11b630827e874c3dd9d726b3
|