首页 > 解决方案 > curl请求下载文件的身份验证错误

问题描述

我想从以下链接(直接下载链接)下载文件:

https://download.spaces.hightail.com/api/v1/download/sp-79272721-ef49-4de4-a239-01f5be0692a7?downloadFile=true&redirectOnError=%2Freceive%2FSxnIY0QbDr

在浏览器中,当我点击上述网址时,它给了我以下错误:“访问此资源需要凭据。”

为了克服这个问题,首先我在浏览器中访问基本 URL(如下所示),然后从另一个选项卡点击直接链接。这使我可以下载文件而无需凭据错误。 https://spaces.hightail.com/receive/SxnIY0QbDr <--- 基本网址

我想使用直接下载链接使用 curl 下载相同的文件。但是,我得到了相同的“需要凭据”错误。

  1. 如何使用 curl 从直接下载链接下载文件并避免“需要凭据”错误?
  2. 为什么在访问浏览器中的下载链接之前需要先访问基本 url?

可能是base url与浏览器共享一些身份验证信息,稍后浏览器使用相同的信息,但我没有清楚的理解。

谢谢 !!!

标签: curlnetworkingbasic-authenticationtls1.2

解决方案


我解决这个问题的方法是:

  • 使用浏览器下载文件时,从浏览器开发工具获取请求标头详细信息(原始数据)并将其存储在本地文件中。它还包含用于身份验证的 cookie。

  • 获取证书 (.pem) 文件。由于我使用了一些代理服务器,因此我从代理服务器管理控制台获得了它。

  • 执行以下 curl 命令:

    curl -v -S -x proxy_ip:proxy_port -H "$(cat raw_header)" --cacert cert.pem -o ./myfile https://download.spaces.hightail.com/api/v1/download/sp- 79272721-ef49-4de4-a239-01f5be0692a7


推荐阅读