fish2018/pansou · error

中间步骤请求失败,状态码

Error message

中间步骤请求失败,状态码: %d

What it means

Status error in PanyqPlugin.performIntermediateStep (plugin/panyq/panyq.go:1096): an intermediate next-action request returned a non-200 status after retries, breaking the multi-step link resolution chain.

Solutions

  1. 触发 discoverActionIDs 重新发现 action ID
  2. 校验 routerStateTreeJSON 参数合法性
  3. 对失效 action ID 做缓存失效处理
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at plugin/panyq/panyq.go:1096 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of fish2018/pansou@beaa561337 (2026-09-07). Data as JSON: /api/errors/6b08275b252b23d3. Report an issue: GitHub.

Appendix: source

Thrown at plugin/panyq/panyq.go:1096

	// 设置请求头,保持一致性
	req.Header.Set("Content-Type", "text/plain;charset=UTF-8")
	req.Header.Set("next-action", actionID)
	req.Header.Set("Referer", intermediateURL)
	req.Header.Set("Origin", BaseURL)
	req.Header.Set("next-router-state-tree", url.QueryEscape(string(routerStateTreeJSON)))
	req.Header.Set("sec-ch-ua", `"Not)A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"`)
	req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36")
	
	// 发送请求并支持重试
	resp, err := p.doRequestWithRetry(client, req, MaxRetries)
	if err != nil {
		return err
	}
	defer resp.Body.Close()
	
	// 确认请求成功
	if resp.StatusCode != http.StatusOK {
		return fmt.Errorf("中间步骤请求失败,状态码: %d", resp.StatusCode)
	}
	
	return nil
}

// getFinalLink 获取最终链接
func (p *PanyqPlugin) getFinalLink(actionID, eid string, client *http.Client) (string, error) {
	// 检查缓存
	finalLinkCacheLock.RLock()
	linkCacheKey := fmt.Sprintf("link:%s:%s", actionID, eid)
	if cachedLink, ok := finalLinkCache[linkCacheKey]; ok {
		finalLinkCacheLock.RUnlock()
		if DebugLog {
			fmt.Printf("panyq: 缓存命中最终链接: %s\n", eid)
		}
		return cachedLink, nil
	}
	finalLinkCacheLock.RUnlock()

View on GitHub (pinned to beaa561337)