使用curl wget从交互式http站点在Linux shell上下载文件

使用curl wget从交互式http站点在Linux shell上下载文件

我正在尝试使用 wget 和 curl 从 Linux shell 从 HTTP 网站下载文件。

下面是执行此操作的手动 GUI 过程:

  1. 一旦我点击链路A,它会将我重定向到具有不同网址的不同网页(我们称之为 Link-B) 。该网页有一个文本框,其下方有一个项目列表。

  2. 然后我在文本框中输入一个字符串,以过滤其下面的名称列表,并将范围缩小到下面只有一个项目,然后我单击该项目,它会将我重定向到具有不同网址的不同网页(我们称之为 Link-C)

  3. 在此网页上,我输入用户名和密码,然后单击“提交”,它让我回到链路A但现在它有一个 downloadadble 文件列表,我可以在其中下载文件。

我正在尝试使用命令行而不是使用像curl或wget这样的工具的GUI来下载文件。我尝试将 wget 与 --user 和 --ask-pass 一起使用,但它只下载 LinkB 的网页,而无法访问文件本身。任何人都可以提出解决方案,提前致谢。

答案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请求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]

然后使用上一步中获得的作业 ID 下载文件

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

相关内容