fish2018/pansou · error

获取PoW验证数据失败: HTTP

Error message

获取PoW验证数据失败: HTTP %d

What it means

Status error in solveRemotePowChallenge (plugin/gying/gying.go:1690): the PoW endpoint responded but with a non-200 status, so no challenge payload can be trusted. Means the challenge endpoint refused the request (challenge changed, blocked, or wrong URL).

Solutions

  1. 检查请求是否缺少必要 Cookie 或头
  2. 验证站点是否更换了 PoW 端点路径
  3. 记录响应体以确认返回内容
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at plugin/gying/gying.go:1690 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/9a3ac14d949b4241. Report an issue: GitHub.

Appendix: source

Thrown at plugin/gying/gying.go:1690

	return p.solveLegacyHashChallenge(scraper, requestURL, &challenge)
}

func (p *GyingPlugin) solveRemotePowChallenge(scraper *cloudscraper.Scraper, requestURL string) error {
	powURL, err := p.buildPowURL(requestURL)
	if err != nil {
		return err
	}

	if DebugLog {
		fmt.Printf("[Gying] Remote PoW Challenge命中: url=%s powURL=%s\n", requestURL, powURL)
	}

	body, statusCode, _, err := p.requestWithChallengeRetry(scraper, http.MethodGet, powURL, "", "")
	if err != nil {
		return fmt.Errorf("获取PoW验证数据失败: %w", err)
	}
	if statusCode != http.StatusOK {
		return fmt.Errorf("获取PoW验证数据失败: HTTP %d", statusCode)
	}

	var challenge ChallengePageData
	if err := json.Unmarshal(body, &challenge); err != nil {
		return fmt.Errorf("解析PoW验证数据失败: %w", err)
	}
	if challenge.N == "" || challenge.X == "" || challenge.T <= 0 {
		return fmt.Errorf("PoW验证数据无效")
	}

	y, err := p.computePowResult(&challenge)
	if err != nil {
		return err
	}

	form := url.Values{}
	form.Set("y", y)

View on GitHub (pinned to beaa561337)