Skip to content

Repository files navigation

AlistDownloader

一个用于爬取 Alist 文件分享站并批量下载所有文件的 Python 工具。

✨ 主要功能

  • 🚀 高性能批量下载:支持多线程并发下载,可自定义线程数
  • 📁 递归目录爬取:自动遍历所有子目录和文件
  • 🔄 断点续传:支持中断后继续下载,跳过已存在文件
  • 🌐 代理支持:支持 SOCKS5 代理,适应各种网络环境
  • 🛡️ 错误重试:网络异常时自动重试,提高下载成功率
  • 📊 进度管理:实时保存下载进度,支持多种格式(JSON/TXT/CSV)
  • 🔒 安全下载:文件名清理、路径安全检查、下载完整性验证
  • 📝 详细日志:完整的日志记录,便于问题排查

🚀 快速开始

1. 安装依赖

pip install -r requirements.txt

或使用提供的批处理文件:

安装依赖.bat

2. 配置设置

首次运行会自动创建默认配置文件 config.ini,或者你可以复制示例配置:

cp config.ini.example config.ini

编辑 config.ini 文件:

[default]
# Alist 分享站地址
url = https://your-alist-site.com

# 是否使用 SOCKS5 代理
use_proxy = false

# 代理地址 (仅当 use_proxy = true 时使用)
proxy = 127.0.0.1:1080

# 下载线程数 (建议 5-20)
threads = 10

# 请求超时时间 (秒)
timeout = 30

# 重试次数
retry_times = 3

# 重试间隔 (秒)
retry_delay = 1

3. 运行下载器

python app.py

或使用批处理文件:

运行APP.bat

📁 输出文件

下载器会生成以下文件:

  • downloads/域名/ - 下载的文件存储目录
  • results.json - JSON格式的下载进度文件
  • results.txt - 文本格式的文件列表
  • results.csv - CSV格式的文件列表(可用Excel打开)
  • download.log - 详细的运行日志

🛠️ 优化改进

相比原版本,新版本包含以下重要改进:

性能优化

  • 批量进度保存:减少频繁IO操作,每10秒批量保存一次
  • 连接池优化:配置连接池提高网络效率
  • 内存优化:流式下载大文件,减少内存占用

代码质量

  • 面向对象重构:使用类封装,代码结构更清晰
  • 类型注解:添加完整的类型提示,提高代码可维护性
  • 错误处理:完善的异常处理和重试机制

安全性改进

  • 文件名安全:清理非法字符,防止路径遍历攻击
  • URL验证:严格的URL格式验证
  • 配置验证:完善的配置项验证和默认值

Bug修复

  • 路径分隔符:修复Windows/Linux路径兼容性问题
  • 文件完整性:下载失败时自动清理不完整文件
  • 线程安全:解决多线程环境下的数据竞争问题

🔧 高级配置

代理设置

支持 SOCKS5 代理,在配置文件中设置:

use_proxy = true
proxy = 127.0.0.1:1080

性能调优

根据你的网络环境调整参数:

  • threads:线程数,建议5-20,过多可能被服务器限制
  • timeout:超时时间,网络较慢时可适当增加
  • retry_times:重试次数,网络不稳定时可增加

📋 系统要求

  • Python 3.7+
  • Windows/Linux/macOS
  • 网络连接

🐛 故障排除

网络连接诊断工具

我们提供了专门的诊断工具来帮助排查连接问题:

python test_connection.py

诊断工具会自动检测:

  • 🔗 目标Alist站点的可访问性
  • 🌐 代理服务器连接状态
  • 📡 API端点响应情况
  • 💡 智能的问题分析和解决建议

常见问题和解决方案

1. 代理连接失败

症状:日志显示 getaddrinfo failedSOCKSHTTPSConnectionPool 错误

解决方案

  • 确认代理服务器(如Clash、V2Ray等)正在运行
  • 检查代理端口是否正确(通常是7890、1080等)
  • 尝试在配置中使用 socks5h:// 前缀
  • 运行诊断工具检测连接状态

2. 网络连接超时

症状:请求超时、连接拒绝

解决方案

  • 检查目标Alist站点是否可访问
  • 增加 timeout 配置值
  • 确认防火墙没有阻止连接
  • 尝试直连模式(关闭代理)

3. 下载速度慢

症状:下载速度远低于预期

解决方案

  • 适当调整 threads 数量(建议5-20)
  • 检查网络带宽限制
  • 确认代理服务器性能
  • 尝试直连模式对比速度

4. 权限错误

症状:无法创建目录或写入文件

解决方案

  • 确保对下载目录有写权限
  • 检查磁盘空间是否充足
  • 在Windows上以管理员身份运行

5. 配置文件错误

症状:程序启动失败或配置读取错误

解决方案

  • 参考 config.ini.example 检查格式
  • 确保URL格式正确(包含 http:// 或 https://)
  • 检查配置文件编码是否为UTF-8

智能错误恢复

新版本包含智能错误恢复机制:

  • 自动代理回退:代理失败时自动尝试直连
  • 网络重试:临时网络问题时自动重试
  • 进度保护:异常中断后可恢复下载

查看详细日志

运行日志保存在 download.log 文件中,包含:

  • 📝 详细的操作记录
  • ⚠️ 错误信息和堆栈跟踪
  • 🔄 重试和恢复过程
  • 📊 性能统计信息

📄 许可证

本项目基于 LICENSE 许可证开源。

🤝 贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目!

About

python app for crawl a alist website and download all files

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages