You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用aria2c如何记录失败下载链接?求支持代理的并行下载工具

解决aria2c会话保存及批量请求失败链接捕获问题

一、aria2c --save-session 参数行为修正

你当前用的命令中,links2.txt和原文件完全一致,是因为--save-session默认会保存所有未完成的任务,但你的场景存在两个关键问题:

  1. 订阅链接触发请求后,只要HTTP返回成功状态码(哪怕无文件下载),aria2c就判定任务完成,不会存入会话文件
  2. 代理拒绝的请求,aria2c默认会多次重试,只有重试耗尽后才会标记为未完成

要让会话文件只保留真正失败的链接,需调整两个参数:

  • --max-tries=N:限制重试次数(比如设为1,避免无意义重试)
  • --save-session-interval=0:关闭自动定时保存,只在进程结束时写入最终未完成任务

修改后的命令:

aria2c -j 10 --https-proxy=http://localhost:9080 -i links1.txt --save-session links2.txt --max-tries=1 --save-session-interval=0

二、订阅类请求的失败链接筛选

这类无文件返回的触发请求,可通过日志精准筛选失败项:

  1. 开启详细日志:
aria2c -j 10 --https-proxy=http://localhost:9080 -i links1.txt --log=aria2.log --log-level=info --max-tries=1
  1. 从日志提取失败链接:
grep -E 'FAILED|Connection refused' aria2.log | awk -F'URI=' '{print $2}' | awk '{print $1}' > failed_links.txt

三、替代工具推荐

如果aria2c的逻辑不符合需求,推荐两款适配场景的工具:

  • curl:轻量灵活,支持SOCKS5代理,通过xargs实现并行处理
    并行触发请求并收集失败链接:
    xargs -P 10 -I {} sh -c 'curl -x socks5://localhost:1080 {} >/dev/null 2>&1 || echo {}' < links1.txt > failed_links.txt
    
  • httpx:专为批量HTTP请求设计,支持高并发、多代理类型,自带结果筛选
    输出失败请求(SOCKS5代理+100并发):
    httpx -l links1.txt -x socks5://localhost:1080 -c 100 -fail -o failed_links.txt
    

内容的提问来源于stack exchange,提问作者d-b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:32:51