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

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors