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

如何使用Curl并发下载URL含可变参数的多个文件?

该需求可以实现,你可以通过控制curl进程后台并行运行的方式大幅缩短总下载耗时,以下是两种常用的实现方案:

方案一:原生Bash实现(无需额外依赖)

通过后台标记&让curl在后台运行,同时增加并发数控制避免一次性启动过多进程:

# 最大并发数,可根据实际情况调整
MAX_CONCURRENT=10
counter=0

for store in {4..80}
do
  for page in {1..200} 
  do
    curl 'https://website.com/shop.php?store_id='$store'&page='$page'&PHPSESSID=sessionID' -O &
    ((counter++))
    # 达到并发上限时等待当前所有后台进程跑完再继续启动新进程
    if (( counter >= MAX_CONCURRENT )); then
      wait
      counter=0
    fi
  done
done
# 等待最后一批不足并发上限的进程全部运行结束
wait

该方案无需安装额外工具,缺点是按批次执行,一批进程全部跑完才会启动下一批,并发利用率相对较低。

方案二:xargs实现更高效的并发控制

使用xargs的并行参数实现进程动态补位,只要有进程结束就自动启动新的下载进程,并发利用率更高:

# 最大并发数,可根据实际情况调整
MAX_CONCURRENT=10

for store in {4..80}; do
  for page in {1..200}; do
    echo "https://website.com/shop.php?store_id=${store}&page=${page}&PHPSESSID=sessionID"
  done
done | xargs -n 1 -P ${MAX_CONCURRENT} curl -O

参数说明:-n 1代表每次给curl传递1个URL参数,-P参数指定最大并行进程数。

注意事项

  • 请根据自身网络条件和目标站点的承受能力合理调整最大并发数,数值过高可能触发站点反爬规则导致IP被封禁
  • 可在curl命令中添加-s参数关闭进度输出,避免多个后台进程的输出打乱终端展示

内容的提问来源于stack exchange,提问作者Datenkralle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:00