xpzouying/xiaohongshu-mcp · error
导航到发布页面失败
Error message
导航到发布页面失败
What it means
NewPublishVideoAction 导航到小红书发布页(urlOfPublic)时 Navigate 失败:网络问题、登录态失效被重定向或浏览器上下文已关闭,导致进不了发布页。
Source
Thrown at xiaohongshu/publish_video.go:31
)
// PublishVideoContent 发布视频内容
type PublishVideoContent struct {
Title string
Content string
Tags []string
VideoPath string
ScheduleTime *time.Time // 定时发布时间,nil 表示立即发布
Visibility string // 可见范围: "公开可见"(默认), "仅自己可见", "仅互关好友可见"
Products []string // 商品关键词列表,用于绑定带货商品
}
// NewPublishVideoAction 进入发布页并切换到"上传视频"
func NewPublishVideoAction(page *rod.Page) (*PublishAction, error) {
pp := page.Timeout(300 * time.Second)
if err := pp.Navigate(urlOfPublic); err != nil {
return nil, errors.Wrap(err, "导航到发布页面失败")
}
// 使用 WaitLoad 代替 WaitIdle(更宽松)
if err := pp.WaitLoad(); err != nil {
logrus.Warnf("等待页面加载出现问题: %v,继续尝试", err)
}
time.Sleep(2 * time.Second)
if err := pp.WaitDOMStable(time.Second, 0.1); err != nil {
logrus.Warnf("等待 DOM 稳定出现问题: %v,继续尝试", err)
}
time.Sleep(1 * time.Second)
if err := mustClickPublishTab(pp, "上传视频"); err != nil {
return nil, errors.Wrap(err, "切换到上传视频失败")
}
time.Sleep(1 * time.Second)View on GitHub (pinned to 332d196854)
Solutions
- 检查网络连通性(curl https://creator.xiaohongshu.com)和代理配置
- 确认 browser/page 实例仍存活,必要时重建浏览器并重新登录
- 重试 NewPublishVideoAction,网络抖动通常重试可恢复
- 检查 urlOfPublic 常量是否因平台改版而失效
Example fix
// before
if err := pp.Navigate(urlOfPublic); err != nil {
return nil, errors.Wrap(err, "导航到发布页面失败")
}
// after
if err := pp.Navigate(urlOfPublic); err != nil {
return nil, errors.Wrapf(err, "导航到发布页面失败: %s", urlOfPublic) // 带上URL便于排查
}
// 调用侧重试
var action *PublishAction
var err error
for i := 0; i < 3; i++ {
if action, err = NewPublishVideoAction(page); err == nil {
break
}
time.Sleep(2 * time.Second)
} Defensive patterns
Strategy: retry
Validate before calling
// 调用前检查网络与浏览器存活
if _, err := http.Get("https://creator.xiaohongshu.com"); err != nil {
return fmt.Errorf("无法访问创作平台: %w", err)
}
if page == nil || page.MustInfo().URL == "" && !isAlive(page) {
return errors.New("浏览器页面不可用")
} Try / catch
action, err := NewPublishVideoAction(page)
if err != nil {
var netErr net.Error
if errors.As(err, &netErr) {
// 网络类错误:等待后重试
time.Sleep(5 * time.Second)
action, err = NewPublishVideoAction(page)
}
if err != nil {
return fmt.Errorf("进入视频发布页失败: %w", err)
}
} Prevention
- 发布前先探测创作平台可达性
- 维护浏览器健康检查,页面失效则重建并重登录
- 导航类操作统一套有限次重试
- 将 urlOfPublic 配置化,平台改版时无需改代码
When it happens
Trigger: pp.Navigate(urlOfPublic) 返回错误:网络不通/DNS 解析失败;创作平台域名返回异常;浏览器实例已关闭或 CDP 连接断开;页面正处于会导致导航中止的状态;300s 超时到期。
Common situations: 无头浏览器未登录被重定向到登录页后导航异常;代理/VPN 环境下无法访问 creator.xiaohongshu.com;浏览器进程被 OOM killer 杀掉;网络抖动或防火墙拦截。
Related errors
- 下载内置浏览器失败: %w 本项目只用内置浏览器,缺它不继续。请检查网络后重试; 离线环境可手动下载 %s,解压
- failed to navigate to profile page via sidebar: %w
- 导航到发布页面失败
- 元素当前不可命中
- 元素无可点击区域
AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05).
Data as JSON: /api/errors/52329565b178e565.
Report an issue: GitHub.