Files
xiaohongshu-mcp/cmd/login/main.go
zy e4745d28d4 feat: 添加 Chrome 浏览器支持和安装说明折叠 (#67)
* feat: 添加 Chrome 浏览器支持和安装说明折叠

- 支持 Chrome 浏览器作为备选方案
- README 安装部分使用 details 标签折叠
- 优化浏览器配置和初始化逻辑

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

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: 更新 README.md 以包含 Windows 问题和登录部分说明

- 添加 Windows 问题的链接以供参考
- 更新 README 中的登录部分内容

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-09-14 17:49:19 +08:00

80 lines
1.7 KiB
Go

package main
import (
"context"
"encoding/json"
"flag"
"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() {
var (
binPath string // 浏览器二进制文件路径
)
flag.StringVar(&binPath, "bin", "", "浏览器二进制文件路径")
flag.Parse()
// 登录的时候,需要界面,所以不能无头模式
b := browser.NewBrowser(false, browser.WithBinPath(binPath))
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)
}