Wget

需要下載工具——帶有自定義標題、恢復、重試、自定義文件名輸出和動態重定向

  • August 25, 2012

簡單的問題——我需要一個下載管理器、控制台、GUI,沒關係。關鍵在於功能:

  • 自定義標頭——我必須傳遞一個 cookie 才能下載(授權)
  • resume——所以如果下載因任何原因停止,我可以從 50%(例如)繼續,而不是從開始
  • 重試——這樣程序可以自動嘗試建立連接並再次下載
  • 自定義文件名輸出——這樣我就可以給出特定的文件名,數據的去向
  • 和動態重定向——所以如果我向伺服器詢問文件X,並且伺服器回答“好的,這裡是X?token=767”下載器將接受這個原始名稱—— X(即它會認為它與我要求的相同)

由於我更喜歡控制台,所以到目前為止我嘗試了 wget、curl、aria2c。他們都失敗了。wget 不處理自定義文件名輸出(它只是一個文件的轉儲)並且它被重定向“愚弄” - 即與上面的範例一樣,它將數據儲存在文件X?token=767中,這實際上破壞了恢復和重試,因為每次重新連接令牌都會更改。

aria2c 和 curl 甚至都沒有開始下載。我的猜測是,他們根本不接受重定向,aria2c 一次又一次地重試,下載 0 字節但沒有成功,curl 從文件移動到的伺服器下載響應X?token=767

作為記錄,在我的下載命令下方:

wget

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"

wget重定向問題可以通過使用來解決

wget --trust-server-names http://www.example.com/X?1234

引用自:https://unix.stackexchange.com/questions/46317