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

  1. 检查网络连通性(curl https://creator.xiaohongshu.com)和代理配置
  2. 确认 browser/page 实例仍存活,必要时重建浏览器并重新登录
  3. 重试 NewPublishVideoAction,网络抖动通常重试可恢复
  4. 检查 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

When it happens

Trigger: pp.Navigate(urlOfPublic) 返回错误:网络不通/DNS 解析失败;创作平台域名返回异常;浏览器实例已关闭或 CDP 连接断开;页面正处于会导致导航中止的状态;300s 超时到期。

Common situations: 无头浏览器未登录被重定向到登录页后导航异常;代理/VPN 环境下无法访问 creator.xiaohongshu.com;浏览器进程被 OOM killer 杀掉;网络抖动或防火墙拦截。

Related errors


AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05). Data as JSON: /api/errors/52329565b178e565. Report an issue: GitHub.