Shell

使用 curl wget 從互動式 http 站點下載 Linux shell 上的文件

  • September 18, 2020

我正在嘗試使用 wget 和 curl 從我的 Linux shell 下載來自 HTTP 網站的文件。

以下是執行此操作的手動 GUI 過程:

  1. 點擊Link-A後,它會將我重定向到具有不同網址的不同網頁**(我們稱之為 Link-B)** 。這個網頁有一個文本框,下面有一個項目列表。
  2. 然後我在文本框中輸入一個字元串,過濾它下面的名稱列表,它縮小到下面只有一個項目,然後我點擊那個項目,它將我重定向到具有不同網址的不同網頁**(讓我們稱之為連結-C)**
  3. 在這個網頁上,我輸入使用者名和密碼並點擊送出,它讓我回到Link-A,但現在它有一個可下載的文件列表,我可以在其中下載文件。

我正在嘗試使用 curl 或 wget 等工具使用命令行而不是 GUI 下載文件。我嘗試將 wget 與 –user 和 –ask-pass 一起使用,但它只下載 LinkB 的網頁,並沒有獲取文件本身。任何人都可以提出解決方案,在此先感謝。

我可以通過以下方式做到這一點,這是針對我的情況的,可能因每種情況而異。

首先請求一個授權令牌:

uri_token="https://xxx.yy/TokenURI"
body="grant_type=password&username=user1&password=password1"  
curl -s -X POST -d $body -H "Content-Type: Text" $uri_token

然後我使用在標頭中獲得的令牌獲得了一個 FIle ID 列表:

uri_get_list="https://xxx.yy/FileSearchParameter
headers="Authorization: Bearer $token"
curl -s -X GET -H "$headers" $uri_get_list

然後使用 FILE ID 請求 Job ID 來下載文件:

uri_request=https://xxx.yy/requestapi
body=$(echo \"$FILE_ID\")
headers="Authorization: Bearer $token"
JobID=$(curl -s $uri_request -X POST -H "$headers" -H "Content-Type: application/json" -d [$body]

然後使用前面步驟中獲得的 Job ID 下載文件

uri_download="https://xxx.yy/jobid/"$JobID"
headers="Authorization: Bearer $token"
curl $uri_download -X GET -H "$headers" -o /file/path/to/downloaded

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