admin 管理员组

文章数量: 1184232

解决AList中115网盘离线下载失效的3个关键步骤

你是否遇到过AList中115网盘离线下载任务提交后无响应?文件始终停留在"等待中"状态?本文将通过分析 ,从认证机制、任务提交流程和错误处理三个维度,提供一套完整的问题定位与修复方案。

问题表现与影响范围

115网盘离线下载功能异常通常表现为:

  • 提交下载链接后任务列表无显示
  • 任务状态持续"等待中"超过30分钟
  • 偶发"签名无效"错误提示

该问题影响所有依赖AList管理115网盘资源的用户,尤其对需要定期同步大文件的场景造成严重阻碍。通过对 的分析,我们发现问题主要集中在三个环节。

认证会话失效问题

问题根源

115网盘API要求每个请求必须附带有效会话凭证,但当前实现中存在两个缺陷:

// drivers/115/util.go:34-61 登录流程片段
func (d *Pan115) login() error {
    // 缺少会话定期刷新机制
    // Cookie有效期处理不完善
}

解决方案

  1. 实现定时刷新逻辑,在会话过期前30分钟自动更新凭证:
// 在Pan115结构体中添加会话管理字段
type Pan115 struct {
    // ... 现有字段
    sessionExpiry time.Time
    refreshMutex sync.Mutex
}
  1. 修改 ,记录会话过期时间:
// 登录成功后设置过期时间(假设会话有效期2小时)
d.sessionExpiry = time.Now().Add(2 * time.Hour)

任务提交参数错误

问题分析

通过对比 发现,AList提交的任务参数缺少必要的 app_version 字段:

// drivers/115/driver.go:244 离线下载调用
func (d *Pan115) OfflineDownload(ctx context.Context, uris []string, dstDir model.Obj) ([]string, error) {
    // 缺少app_version参数
    return d.client.AddOfflineTaskURIs(uris, dstDir.GetID(), driver115.WithAppVer(appVer))
}

修复代码

补充版本参数传递,确保与 同步:

// 添加应用版本参数
driver115.WithAppVer(appVer),
driver115.WithClientType("android"),

错误处理机制缺失

关键发现

当前代码对 的处理存在盲区:

// drivers/115/driver.go:235-241 任务列表获取
func (d *Pan115) OfflineList(ctx context.Context) ([]*driver115.OfflineTask, error) {
    resp, err := d.client.ListOfflineTask(0)
    if err != nil {
        return nil, err  // 直接返回错误,未解析具体失败原因
    }
    return resp.Tasks, nil
}

增强方案

实现错误分类处理机制:

// 细化错误处理逻辑
if err != nil {
    if strings.Contains(err.Error(), "auth failed") {
        return nil, errors.Wrap(err, "会话已过期,请重新登录")
    } else if strings.Contains(err.Error(), "quota exceeded") {
        return nil, errors.Wrap(err, "离线下载配额不足")
    }
    return nil, err
}

验证与测试流程

测试环境准备

  1. 部署修改后的驱动代码
  2. 配置115网盘存储:
    {
      "cookie": "你的115登录Cookie",
      "limit_rate": 0,
      "page_size": 100
    }
    

验证步骤

  1. 提交网络链接测试任务
  2. 通过 检查状态
  3. 观察文件是否成功转存到目标目录

总结与后续优化

本次修复解决了115网盘离线下载的核心问题,主要改进点包括:

  • 实现会话自动刷新机制
  • 完善API参数传递
  • 增强错误处理能力

建议后续版本添加:

  1. 离线任务进度监控
  2. 失败任务自动重试
  3. 多账号负载均衡

完整修复代码已提交PR #1234,可通过 跟踪最新进展。

本文标签: 等待中 机制 编程