Files
xiaohongshu-mcp/cmd/login/main.go
zy 0e4450b12c refactor: 改进浏览器实例管理,按需创建浏览器实例 (#12)
- 移除全局浏览器单例,改为按需创建浏览器实例
- 添加 configs/browser.go 用于管理无头模式配置
- 更新 service.go 中所有方法,每次调用时创建新的浏览器实例
- 更新测试文件,使用新的浏览器管理方式
- 确保每个浏览器实例使用后正确关闭,避免资源泄漏

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-08-17 15:30:16 +08:00

74 lines
1.5 KiB
Go

package main
import (
"context"
"encoding/json"
"github.com/go-rod/rod"
"github.com/sirupsen/logrus"
"github.com/xpzouying/xiaohongshu-mcp/browser"
"github.com/xpzouying/xiaohongshu-mcp/cookies"
"github.com/xpzouying/xiaohongshu-mcp/xiaohongshu"
)
func main() {
// 登录的时候,需要界面,所以不能无头模式
b := browser.NewBrowser(false)
defer b.Close()
page := b.NewPage()
defer page.Close()
action := xiaohongshu.NewLogin(page)
status, err := action.CheckLoginStatus(context.Background())
if err != nil {
logrus.Fatalf("failed to check login status: %v", err)
}
logrus.Infof("当前登录状态: %v", status)
if status {
return
}
// 开始登录流程
logrus.Info("开始登录流程...")
if err = action.Login(context.Background()); err != nil {
logrus.Fatalf("登录失败: %v", err)
} else {
if err := saveCookies(page); err != nil {
logrus.Fatalf("failed to save cookies: %v", err)
}
}
// 再次检查登录状态确认成功
status, err = action.CheckLoginStatus(context.Background())
if err != nil {
logrus.Fatalf("failed to check login status after login: %v", err)
}
if status {
logrus.Info("登录成功!")
} else {
logrus.Error("登录流程完成但仍未登录")
}
}
func saveCookies(page *rod.Page) error {
cks, err := page.Browser().GetCookies()
if err != nil {
return err
}
data, err := json.Marshal(cks)
if err != nil {
return err
}
cookieLoader := cookies.NewLoadCookie(cookies.GetCookiesFilePath())
return cookieLoader.SaveCookies(data)
}