カールwgetを使用して、インタラクティブhttpサイトからLinuxシェルのファイルをダウンロードします。

カールwgetを使用して、インタラクティブhttpサイトからLinuxシェルのファイルをダウンロードします。

wgetとカールを使用してLinuxシェルからHTTP Webサイトのファイルをダウンロードしようとしています。

これを行うための手動GUIプロセスは次のとおりです。

  1. 一度クリックするとリンクA、異なるURLを持つ別のWebページにリダイレクトされます。(私たちはこれをLink-Bと呼びます) 。 Webページの下には、アイテムのリストを含むテキストボックスがあります。

  2. 次に、テキストボックスに文字列を入力してその下の名前のリストをフィルタリングし、下の1つの項目だけを絞り込み、その項目をクリックすると、別のURLを持つ別のWebページにリダイレクトされます。(私たちはこれをLink-Cと呼びます)

  3. このウェブページで自分のユーザー名とパスワードを入力して[送信]をクリックすると、次のページに戻ります。リンクAただし、現在、ファイルをダウンロードできるダウンロード可能なファイルのリストがあります。

カールやwgetなどのツールを使用して、GUIの代わりにコマンドラインを使用してファイルをダウンロードしようとしています。 --userと--ask-passでwgetを試しましたが、LinkBのWebページだけをダウンロードしてファイル自体にアクセスすることはできませんでした。誰でも解決策を提案できます。よろしくお願いします。

ベストアンサー1

私は次の方法でこれを行うことができましたが、これは私の場合に固有のものであり、各シナリオで異なる場合があります。

まず、認証トークンをリクエストしてください。

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

その後、ヘッダー内のトークンを使用してファイルIDのリストを取得しました。

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

次に、FILE IDを使用してファイルをダウンロードするためのジョブ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]

次に、前の手順で取得したジョブIDを使用してファイルをダウンロードします。

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

おすすめ記事