xpzouying/xiaohongshu-mcp · error
%s SHA256 不匹配:期望 %s,实际 %s
Error message
%s SHA256 不匹配:期望 %s,实际 %s
What it means
verifySHA256 的完整性校验失败分支:计算出的归档文件实际 SHA256 与 SHA256SUMS 中该 asset 的期望哈希不一致(不区分大小写比较)。说明下载产物被损坏或被篡改/替换,拒绝使用该文件。
Source
Thrown at browser/browser_download.go:145
// verifySHA256 下载同目录的 SHA256SUMS,校验 asset 的哈希。
func verifySHA256(archivePath, asset string) error {
want, err := fetchExpectedSHA(asset)
if err != nil {
return err
}
f, err := os.Open(archivePath)
if err != nil {
return err
}
defer f.Close()
h := sha256.New()
if _, err := io.Copy(h, f); err != nil {
return err
}
got := hex.EncodeToString(h.Sum(nil))
if !strings.EqualFold(got, want) {
return fmt.Errorf("%s SHA256 不匹配:期望 %s,实际 %s", asset, want, got)
}
return nil
}
func fetchExpectedSHA(asset string) (string, error) {
resp, err := (&http.Client{Timeout: 30 * time.Second}).Get(browserURL("SHA256SUMS"))
if err != nil {
return "", err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("获取 SHA256SUMS: HTTP %d", resp.StatusCode)
}
sc := bufio.NewScanner(resp.Body)
for sc.Scan() {
// 格式:<hash>␠␠<filename>
fields := strings.Fields(sc.Text())
if len(fields) == 2 && fields[1] == asset {View on GitHub (pinned to 332d196854)
Solutions
- 删除缓存的压缩包重新下载,再观察哈希是否一致
- 检查代理是否改写响应内容,尝试直连或换网络
- 确认资产 URL 与 SHA256SUMS 来自同一版本
- 用 sha256sum 手动比对期望/实际值定位差异
Example fix
// before // 缓存中有损坏文件 bin, err := browser.EnsureBrowser() // SHA256 不匹配 // after os.Remove(filepath.Join(cacheDir, asset)) // 删除损坏文件 bin, err := browser.EnsureBrowser()
Defensive patterns
Strategy: retry
Validate before calling
// 下载后本地快速校验
// expected=$(curl -s $BASE/SHA256SUMS | grep <asset> | awk '{print $1}')
// actual=$(sha256sum <archive> | awk '{print $1}')
// [ "$expected" = "$actual" ] || 删除文件重试 Try / catch
bin, err := browser.EnsureBrowser()
if err != nil && strings.Contains(err.Error(), "SHA256 不匹配") {
os.RemoveAll(cacheDir) // 清理被篡改/损坏的下载
bin, err = browser.EnsureBrowser()
if err != nil { return fmt.Errorf("重下载后仍校验失败: %w", err) }
} Prevention
- 不要通过会改写内容的代理下载资产
- 资产更新时同步更新 SHA256SUMS
- 断点续传后务必整体校验哈希
- 对比错误信息中的期望/实际哈希快速定位损坏来源
When it happens
Trigger: verifySHA256 → 比较失败:下载被中间层(代理/镜像)篡改或返回了错误页面、下载中断产生截断文件、SHA256SUMS 与资产版本不匹配、磁盘位损坏。
Common situations: 企业代理做了内容改写/注入;CDN 上资产与 SUMS 版本不同步;断点续传拼接出损坏文件。
Related errors
AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05).
Data as JSON: /api/errors/0e3c939282102c16.
Report an issue: GitHub.