Skip to main content

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

环境要求

快速开始

安装依赖(可选)

pip install -r requirements.txt

不安装也能运行,requests 会降级到内置 urllibcolorama 会降级为无色输出。

运行 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. 选择 1 → 输入 API Key → 自动获取 userSig → 初始化 SDK
  2. 选择 2 → 查看环境列表(SDK 接口或 REST API)
  3. 选择 3 → 选择内核版本(可选代理)→ 创建新环境
  4. 选择 4 → 启动浏览器环境(异步,等待 SDK 事件回调)
  5. 选择 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


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

brosdk_sdk-1.0.0-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

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

Hashes for brosdk_sdk-1.0.0.tar.gz
Algorithm Hash digest
SHA256 6dd7044bde1e60b16ff332be2c2a745504cb13cac8e8457c7f9dd20941cb70d4
MD5 81a543c4b5c80af5beab3cb2d935d9b2
BLAKE2b-256 306d80093eb82af25a85bf8b42bdd99d2038bbe4bf569b6169dba0a936f1cf61

See more details on using hashes here.

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

Hashes for brosdk_sdk-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 11116d418699df57c95d723d92ca3e806ab0f8758bfc713449849cef076fb04b
MD5 3c2560c5dab2e436d966c682e98919e1
BLAKE2b-256 1b61a75c00b03bcf29b068da5b3495f98da03aab11b630827e874c3dd9d726b3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page