Shell
使用 curl wget 從互動式 http 站點下載 Linux shell 上的文件
我正在嘗試使用 wget 和 curl 從我的 Linux shell 下載來自 HTTP 網站的文件。
以下是執行此操作的手動 GUI 過程:
- 點擊Link-A後,它會將我重定向到具有不同網址的不同網頁**(我們稱之為 Link-B)** 。這個網頁有一個文本框,下面有一個項目列表。
- 然後我在文本框中輸入一個字元串,過濾它下面的名稱列表,它縮小到下面只有一個項目,然後我點擊那個項目,它將我重定向到具有不同網址的不同網頁**(讓我們稱之為連結-C)**
- 在這個網頁上,我輸入使用者名和密碼並點擊送出,它讓我回到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