Skip to content

browsersdk/brosdk-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BroSDK Go

English | 简体中文

Go Wails License: MIT

brosdk-go 是 BroSDK 的 Go 模块封装,用于在 Go 服务、CLI 工具、自动化程序或桌面应用中动态加载 BroSDK 原生库,并调用浏览器环境相关能力。仓库内的 Wails 应用只是一个可视化 Demo,用于演示 API Key 初始化、加载 DLL、启动环境和查看 SDK 事件。

Go 模块接入

安装模块:

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 .

接收 SDK 事件

BroSDK 的浏览器启动、关闭、Token 更新等操作会通过原生回调异步返回结果。brosdk-goLoad() 时会自动注册回调,业务侧只需要在加载前或加载后注册监听器即可。

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:

wails3 task dev

构建 Demo:

wails3 build -tags brosdk_native

项目结构

brosdk-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 完整服务端和桌面客户端示例

License

MIT

About

Go bindings and Wails desktop demo for BroSDK native browser environment management, automation, and session persistence.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors