12

我正在尝试使用以下命令下载混乱异常日志。

curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"

它工作正常,它根据偏移量(10、20、30 等)下载 csv 文件。我想在每个请求之间插入一个延迟。可以在 CURL 中做到这一点吗?

4

3 回答 3

6

使用 bash shell (Linux):

while :
do
    curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"
    sleep 5m
done

这是一个无限循环,延迟由sleep命令给出。

编辑. 在 Windows 机器上,您可以改用这个技巧:

for /L %i in (0,0,0) do (
    curl --cookie ./flurry.jar -k -L "https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset=[0-100:10]" --output "exception#1.csv"
    ping -n XX 127.0.0.1>NUL
)

sleep命令在 Windows 上不可用。但是你可以用ping它来“模仿”它。只需将上面的 XX 替换为您要延迟的秒数即可。

于 2012-02-09T15:07:43.143 回答
5

wget 有延迟选项

wget --wait=seconds

还有随机延迟选项

wget --random-wait
于 2012-02-09T15:27:43.083 回答
3

在 bash 中,这将暂停 0-60 范围内的随机秒数:

for d in {0..100..10}
do
    i=`printf "%03d" $d`
    curl --cookie ./flurry.jar -k -L 'https://dev.flurry.com/exceptionLogsCsv.do?projectID=49999&versionCut=versionsAll&intervalCut=allTime&direction=1&offset='$d --output 'exception'$i'.csv'
    sleep $(($RANDOM*60/32767))
done
于 2018-02-10T18:48:32.873 回答