简单的问题——我需要一个下载管理器、控制台、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"
咏叹调2c
aria2c -o f.gz --check-certificate=false -c -m0 \
--header="Cookie: COOKIEKEY=COOKIEVALUE" \
"https://www.foo.bar/file.gz"
卷曲
curl -o f.gz -C - --retry 1000 \
-H "Cookie: COOKIEKEY=COOKIEVALUE" \
"https://www.foo.bar/file.gz"
答案1
wget重定向问题可以通过使用来解决
wget --trust-server-names http://www.example.com/X?1234