fish2018/pansou · error

PoW验证数据无效

Error message

PoW验证数据无效

What it means

Validation error in solveRemotePowChallenge (plugin/gying/gying.go:1698): the challenge JSON decoded but required fields are missing/invalid (N or X empty, or T <= 0), so computing the proof-of-work is impossible. Indicates the site returned a structurally valid but incomplete challenge.

Solutions

  1. 打印 challenge 原始字段定位缺失项
  2. 确认站点 PoW 协议字段名未变更
  3. 对 T<=0 场景检查服务端时间参数含义
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at plugin/gying/gying.go:1698 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/2a69846a3b7b2a14. Report an issue: GitHub.

Appendix: source

Thrown at plugin/gying/gying.go:1698

	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)

	return p.submitChallengeVerification(scraper, powURL, form)
}

func (p *GyingPlugin) buildPowURL(requestURL string) (string, error) {
	parsedURL, err := url.Parse(requestURL)
	if err != nil {
		return "", fmt.Errorf("解析验证URL失败: %w", err)
	}

View on GitHub (pinned to beaa561337)