我正在尝试使用 wget 和 curl 从 Linux shell 从 HTTP 网站下载文件。
下面是执行此操作的手动 GUI 过程:
一旦我点击链路A,它会将我重定向到具有不同网址的不同网页(我们称之为 Link-B) 。该网页有一个文本框,其下方有一个项目列表。
然后我在文本框中输入一个字符串,以过滤其下面的名称列表,并将范围缩小到下面只有一个项目,然后我单击该项目,它会将我重定向到具有不同网址的不同网页(我们称之为 Link-C)
在此网页上,我输入用户名和密码,然后单击“提交”,它让我回到链路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