需要下载工具——带有自定义标题、恢复、重试、自定义文件名输出和动态重定向

gre*_*man 5 download wget web

简单的问题——我需要一个下载管理器、控制台、GUI,没关系。问题在于以下功能:

  • 自定义标头——我必须传递一个 cookie 才能下载(授权)

  • 恢复——所以如果下载因任何原因停止,我可以从 50%(例如)继续,而不是从开始

  • 重试——这样程序就可以自动尝试建立连接并再次下载

  • 自定义文件名输出——所以我可以给出特定的文件名,数据去哪里

  • 和动态重定向——所以如果我向服务器询问文件X,而服务器回答“好的,这里是X?token=767”下载器将接受原始名称—— X(即它会认为它与我要求的相同)

因为我更喜欢控制台,所以到目前为止我尝试了 wget、curl、aria2c。他们都失败了。wget 不处理自定义文件名输出(它只是一个文件的转储)并且它被重定向“愚弄”——即与上面的例子一样,它会将数据存储在文件中X?token=767,这实际上破坏了恢复和重试,因为每次重新连接令牌都会发生变化。

aria2c 和 curl 甚至没有开始下载。我的猜测是,他们根本不接受重定向,aria2c 一次又一次地以 0 字节下载重试,但没有成功,curl 从服务器下载响应,文件被移动到X?token=767.

为了记录,在我的下载命令下面:

获取

wget -rc --no-cookies --header "Cookie: COOKIEKEY=COOKIEVALUE" \
     "https://www.foo.bar/file.gz"
Run Code Online (Sandbox Code Playgroud)

咏叹调2c

aria2c -o f.gz --check-certificate=false -c -m0 \
       --header="Cookie: COOKIEKEY=COOKIEVALUE" \
       "https://www.foo.bar/file.gz"
Run Code Online (Sandbox Code Playgroud)

卷曲

curl -o f.gz -C - --retry 1000 \
     -H "Cookie: COOKIEKEY=COOKIEVALUE" \
     "https://www.foo.bar/file.gz"
Run Code Online (Sandbox Code Playgroud)

小智 7

wget 重定向问题可以通过使用解决

wget --trust-server-names http://www.example.com/X?1234
Run Code Online (Sandbox Code Playgroud)