# brosdk-go **Repository Path**: browsersdk/brosdk-go ## Basic Information - **Project Name**: brosdk-go - **Description**: Go bindings and Wails desktop demo for BroSDK native browser environment management, automation, and session persistence. - **Primary Language**: Go - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-30 - **Last Updated**: 2026-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # BroSDK Go [English](README_EN.md) | 简体中文 [![Go](https://img.shields.io/badge/go-1.25%2B-blue.svg)](https://go.dev/) [![Wails](https://img.shields.io/badge/wails-v3-red.svg)](https://wails.io/) ![License: MIT](https://img.shields.io/badge/license-MIT-green.svg) `brosdk-go` 是 BroSDK 的 Go 模块封装,用于在 Go 服务、CLI 工具、自动化程序或桌面应用中动态加载 BroSDK 原生库,并调用浏览器环境相关能力。仓库内的 Wails 应用只是一个可视化 Demo,用于演示 API Key 初始化、加载 DLL、启动环境和查看 SDK 事件。 ## Go 模块接入 安装模块: ```bash go get github.com/browsersdk/brosdk-go ``` 在业务项目中导入公开包: ```go import "github.com/browsersdk/brosdk-go/brosdk" ``` 当前原生动态库加载需要启用 build tag: ```bash go run -tags brosdk_native . go build -tags brosdk_native . ``` ## 原生库 从 [brosdk releases](https://github.com/browsersdk/brosdk/releases) 下载对应平台的原生库,并放入你的项目目录,例如 Windows: ```text libs/ └── windows-x64/ └── brosdk.dll ``` ## 最小示例 ```go package main import ( "fmt" "log" "github.com/browsersdk/brosdk-go/brosdk" ) func main() { sdk := brosdk.NewManager() sdk.OnEvent(func(event brosdk.Event) { fmt.Printf("event code=%d data=%s\n", event.Code, event.Data) }) if err := sdk.Load("libs/windows-x64/brosdk.dll"); err != nil { log.Fatal(err) } resp, err := sdk.Init(brosdk.InitOptions{ UserSig: "your-userSig", WorkDir: "./workDir", Port: 9527, Debug: true, }) if err != nil { log.Fatal(err) } fmt.Println(resp.Response) if err := sdk.BrowserOpen("your-env-id", []string{"https://example.com"}); err != nil { log.Fatal(err) } } ``` 运行: ```bash go run -tags brosdk_native . ``` ## 接收 SDK 事件 BroSDK 的浏览器启动、关闭、Token 更新等操作会通过原生回调异步返回结果。`brosdk-go` 在 `Load()` 时会自动注册回调,业务侧只需要在加载前或加载后注册监听器即可。 ```go sdk := brosdk.NewManager() sdk.OnEvent(func(event brosdk.Event) { fmt.Printf("sdk event: code=%d data=%s\n", event.Code, event.Data) }) sdk.OnCookiesEvent(func(event brosdk.CookiesEvent) { fmt.Printf("cookies event: data=%s\n", event.Data) }) if err := sdk.Load("libs/windows-x64/brosdk.dll"); err != nil { log.Fatal(err) } ``` 事件说明: | 监听方法 | 来源 | 用途 | |------|------|------| | `OnEvent(func(Event))` | `sdk_register_result_cb` | 接收 SDK 异步操作结果,例如初始化、启动环境、关闭环境、Token 更新 | | `OnCookiesEvent(func(CookiesEvent))` | `sdk_register_cookies_storage_cb` | 接收 cookies/storage 数据,Go 版会使用 SDK 的 `sdk_malloc` 回传缓冲区 | Wails Demo 中同样会把事件转发到前端: | 前端事件名 | 数据 | |------|------| | `brosdk-event` | `{ code, data }` | | `brosdk-cookies-event` | `{ data }` | ## API 概览 | 方法 | 说明 | |------|------| | `NewManager()` | 创建 SDK 管理器 | | `Load(path string) error` | 加载 `brosdk.dll` / `brosdk.dylib` / `brosdk.so` | | `Init(options InitOptions) (*Response, error)` | 使用 `userSig` 初始化 SDK | | `SDKInfo() (*Response, error)` | 查询 SDK 信息 | | `BrowserInfo() (*Response, error)` | 查询浏览器信息 | | `BrowserOpen(envID string, urls []string) error` | 启动指定环境 | | `BrowserClose(envID string) error` | 关闭指定环境 | | `EnvCreate(jsonBody string) (*Response, error)` | 创建浏览器环境 | | `EnvPage(jsonBody string) (*Response, error)` | 分页查询浏览器环境 | | `TokenUpdate(jsonBody string) error` | 刷新 `userSig` | | `Shutdown() error` | 关闭 SDK | | `OnEvent(func(Event))` | 监听 SDK 异步事件 | | `OnCookiesEvent(func(CookiesEvent))` | 监听 cookies/storage 事件 | ## Wails Demo 仓库包含一个 Wails v3 Demo,用于验证 Go 模块和原生库调用链。Demo 支持: - 加载 `libs/windows-x64/brosdk.dll` - 通过 API Key 获取 `userSig` 并初始化 SDK - 直接使用 `userSig` 初始化 SDK - 查询 SDK 信息 - 启动和关闭指定 `envId` 的浏览器环境 - 显示 DLL 加载、SDK 初始化和异步事件状态 启动 Demo: ```bash wails3 task dev ``` 构建 Demo: ```bash wails3 build -tags brosdk_native ``` ## 项目结构 ```text brosdk-go/ ├── brosdk/ # 对外公开的 Go 模块 API ├── internal/brosdk/ # 原生库加载和 FFI 实现 ├── frontend/ # Wails Demo 前端 ├── app.go # Wails Demo 后端绑定 ├── main.go # Wails Demo 入口 └── libs/ # 本地原生库目录,不提交到仓库 ``` ## 相关仓库 | 仓库 | 说明 | |------|------| | [brosdk](https://github.com/browsersdk/brosdk) | BroSDK 原生 C/C++ SDK | | [brosdk-core](https://github.com/browsersdk/brosdk-core) | 浏览器指纹内核版本和平台支持 | | [brosdk-rust](https://github.com/browsersdk/brosdk-rust) | Rust 绑定和 Tauri Demo | | [brosdk-docs](https://github.com/browsersdk/brosdk-docs) | 官方文档和 API 参考 | | [browser-demo](https://github.com/browsersdk/browser-demo) | 完整服务端和桌面客户端示例 | ## License MIT