Shell脚本实现cURL请求间添加延迟的优雅方案
嘿,手动给两千多个URL挨个插sleep确实太折腾人了!给你几个优雅又高效的实现方案,完美解决你的需求:
方案1:从URL列表文件批量处理(最推荐)
如果你的URL已经整理成了每行一个的文本文件(比如urls.txt),用这个循环脚本最方便:
#!/bin/bash # 读取urls.txt中的每个URL,处理带空格/特殊字符的URL也不会出错 while IFS= read -r url; do # 执行curl请求,可根据需求添加参数(比如-s静默模式、-o保存结果等) curl "$url" # 请求完成后延迟10秒,可按需修改时长 sleep 10 done < urls.txt
实用小优化:
- 如果想让curl请求失败时不中断循环,改成:
curl "$url" || true - 要记录请求日志的话,改成:
curl "$url" >> curl_requests.log 2>&1 - 担心被目标网站识别为爬虫?换成随机延迟:
sleep $((RANDOM % 6 + 7))(延迟7-12秒随机)
方案2:用数组硬编码URL(适合少量URL或需要内嵌的场景)
如果URL不多,或者想直接写在脚本里,用数组循环也很方便:
#!/bin/bash # 定义URL数组,每行一个URL urls=( "https://your-first-url.com" "https://your-second-url.com" "https://your-third-url.com" # 继续添加剩下的URL即可 ) # 遍历数组执行请求 for url in "${urls[@]}"; do curl "$url" sleep 10 done
这两个方案都能自动给每个curl请求后加上延迟,完全不用手动逐个修改,两千个URL也能轻松处理~
内容的提问来源于stack exchange,提问作者Tomáš Janulík
相关产品推荐
相关产品推荐

