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
- 触发 discoverActionIDs 重新发现 action ID
- 校验 routerStateTreeJSON 参数合法性
- 对失效 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)