fish2018/pansou · error

[quarkres] HTTP

Error message

[quarkres] HTTP %d

What it means

Status error in quarkres' doSearch (plugin/quarkres/quarkres.go:100): the squark.cc.cd API returned a non-200 status. The request and headers were fine at transport level but the endpoint refused the query.

Solutions

  1. 对 429/503 增加退避重试
  2. 核对 Referer 与 UA 是否被拦截
  3. 记录状态码监控端点健康
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at plugin/quarkres/quarkres.go:100 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/6c8d4d60616de3c5. Report an issue: GitHub.

Appendix: source

Thrown at plugin/quarkres/quarkres.go:100

	req, err := http.NewRequest("GET", searchURL, nil)
	if err != nil {
		return nil, fmt.Errorf("[quarkres] create request failed: %w", err)
	}
	req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36")
	req.Header.Set("Accept", "application/json, text/plain, */*")
	req.Header.Set("Accept-Language", "zh-CN,zh;q=0.9")
	req.Header.Set("Connection", "keep-alive")
	req.Header.Set("Referer", "https://squark.cc.cd/")

	resp, err := client.Do(req)
	if err != nil {
		return nil, fmt.Errorf("[quarkres] request failed: %w", err)
	}
	defer resp.Body.Close()

	if resp.StatusCode != 200 {
		return nil, fmt.Errorf("[quarkres] HTTP %d", resp.StatusCode)
	}

	bodyBytes, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, fmt.Errorf("[quarkres] read response failed: %w", err)
	}

	var ar apiResp
	if err := json.Unmarshal(bodyBytes, &ar); err != nil {
		return nil, fmt.Errorf("[quarkres] decode response failed: %w", err)
	}

	if ar.Code != 200 {
		return nil, fmt.Errorf("[quarkres] API error: %s", ar.Message)
	}

	results := make([]model.SearchResult, 0, len(ar.Data))
	for _, item := range ar.Data {

View on GitHub (pinned to beaa561337)