2026-03-04 13:25:48 +08:00

47 lines
1.0 KiB
Go

package browser
import (
"github.com/sirupsen/logrus"
"github.com/xpzouying/headless_browser"
"github.com/xpzouying/xiaohongshu-mcp/cookies"
)
type browserConfig struct {
binPath string
}
type Option func(*browserConfig)
func WithBinPath(binPath string) Option {
return func(c *browserConfig) {
c.binPath = binPath
}
}
func NewBrowser(headless bool, options ...Option) *headless_browser.Browser {
cfg := &browserConfig{}
for _, opt := range options {
opt(cfg)
}
opts := []headless_browser.Option{
headless_browser.WithHeadless(headless),
}
if cfg.binPath != "" {
opts = append(opts, headless_browser.WithChromeBinPath(cfg.binPath))
}
// 加载 cookies
cookiePath := cookies.GetCookiesFilePath()
cookieLoader := cookies.NewLoadCookie(cookiePath)
if data, err := cookieLoader.LoadCookies(); err == nil {
opts = append(opts, headless_browser.WithCookies(string(data)))
logrus.Debugf("loaded cookies from filesuccessfully")
} else {
logrus.Warnf("failed to load cookies: %v", err)
}
return headless_browser.New(opts...)
}