English | 简体中文
brosdk-go 是 BroSDK 的 Go 模块封装,用于在 Go 服务、CLI 工具、自动化程序或桌面应用中动态加载 BroSDK 原生库,并调用浏览器环境相关能力。仓库内的 Wails 应用只是一个可视化 Demo,用于演示 API Key 初始化、加载 DLL、启动环境和查看 SDK 事件。
安装模块:
go get github.com/browsersdk/brosdk-go在业务项目中导入公开包:
import "github.com/browsersdk/brosdk-go/brosdk"当前原生动态库加载需要启用 build tag:
go run -tags brosdk_native .
go build -tags brosdk_native .从 brosdk releases 下载对应平台的原生库,并放入你的项目目录,例如 Windows:
libs/
└── windows-x64/
└── brosdk.dll
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)
}
}运行:
go run -tags brosdk_native .BroSDK 的浏览器启动、关闭、Token 更新等操作会通过原生回调异步返回结果。brosdk-go 在 Load() 时会自动注册回调,业务侧只需要在加载前或加载后注册监听器即可。
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 } |
| 方法 | 说明 |
|---|---|
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 v3 Demo,用于验证 Go 模块和原生库调用链。Demo 支持:
- 加载
libs/windows-x64/brosdk.dll - 通过 API Key 获取
userSig并初始化 SDK - 直接使用
userSig初始化 SDK - 查询 SDK 信息
- 启动和关闭指定
envId的浏览器环境 - 显示 DLL 加载、SDK 初始化和异步事件状态
启动 Demo:
wails3 task dev构建 Demo:
wails3 build -tags brosdk_nativebrosdk-go/
├── brosdk/ # 对外公开的 Go 模块 API
├── internal/brosdk/ # 原生库加载和 FFI 实现
├── frontend/ # Wails Demo 前端
├── app.go # Wails Demo 后端绑定
├── main.go # Wails Demo 入口
└── libs/ # 本地原生库目录,不提交到仓库
| 仓库 | 说明 |
|---|---|
| brosdk | BroSDK 原生 C/C++ SDK |
| brosdk-core | 浏览器指纹内核版本和平台支持 |
| brosdk-rust | Rust 绑定和 Tauri Demo |
| brosdk-docs | 官方文档和 API 参考 |
| browser-demo | 完整服务端和桌面客户端示例 |
MIT