{"record":{"id":"b0a7e6570a590e02","repo":"fish2018/pansou","slug":"payload-w","errorCode":null,"errorMessage":"解码Payload失败: %w","messagePattern":"解码Payload失败: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"plugin/susu/susu.go","lineNumber":523,"sourceCode":"\tif strings.HasPrefix(jwtToken, \"http://\") || strings.HasPrefix(jwtToken, \"https://\") {\n\t\treturn jwtToken, nil\n\t}\n\n\t// 检查缓存\n\tif cachedURL, ok := jwtDecodeCache.Load(jwtToken); ok {\n\t\treturn cachedURL.(string), nil\n\t}\n\n\t// 分割JWT\n\tparts := strings.Split(jwtToken, \".\")\n\tif len(parts) != 3 {\n\t\treturn \"\", fmt.Errorf(\"无效的JWT格式\")\n\t}\n\n\t// 解码Payload\n\tpayload, err := base64.RawURLEncoding.DecodeString(parts[1])\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"解码Payload失败: %w\", err)\n\t}\n\n\t// 解析JSON\n\tvar payloadData struct {\n\t\tData struct {\n\t\t\tURL string `json:\"url\"`\n\t\t} `json:\"data\"`\n\t}\n\tif err := json.Unmarshal(payload, &payloadData); err != nil {\n\t\treturn \"\", fmt.Errorf(\"解析Payload JSON失败: %w\", err)\n\t}\n\tif strings.TrimSpace(payloadData.Data.URL) == \"\" {\n\t\treturn \"\", fmt.Errorf(\"JWT Payload中没有链接\")\n\t}\n\n\t// 缓存结果\n\tjwtDecodeCache.Store(jwtToken, payloadData.Data.URL)\n","sourceCodeStart":505,"sourceCodeEnd":541,"githubUrl":"https://github.com/fish2018/pansou/blob/beaa56133755a548ebc51b090b3816e2ae044aa6/plugin/susu/susu.go#L505-L541","documentation":"Wrapped decode error in susu's decodeJWTURL (plugin/susu/susu.go:523): the JWT's middle segment could not be base64-URL decoded, meaning the token is malformed despite having three dot-separated parts. Used to extract the real download URL from the token.","triggerScenarios":"Thrown at plugin/susu/susu.go:523 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Detect the alphabet variant (StdEncoding vs RawURLEncoding, padded vs raw) and try alternatives","Reject the token per-link rather than aborting the whole search"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"beaa56133755a548ebc51b090b3816e2ae044aa6","analyzedAt":"2026-09-07T00:31:18.025Z","contentChangedAt":"2026-09-07T00:31:18.025Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}