在这个URL上使用curl是非法的吗?



我有以下URL:

https://amazon-advertising-api-reports-prod-euamazon.s3.amazonaws.com/apj6jra9ng5v4-avp9363n2w589-report-campaign-45f7c968-d7e8-4d8e-a6ef-2b144268ab36.json.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20210930T164837Z&X-Amz-SignedHeaders=host&X-Amz-Expires=30&X-Amz-Credential=AKIXXXXXXXXXZ6X%2F20210930%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=2a549XXXXXXXXXX0e61f43166c267eaafedf8

这是亚马逊广告API的原始响应,只有几个元素被'X'取代,其中有您在签名或凭据中期望的正常字符。

如果我复制并粘贴这个url到我的浏览器,我就可以下载我所期望的文件。当尝试使用以下curl命令的任何变体检索此文件时…

curl -o $REPORT_DATA_FILE_GZ "$REPORT_DOWNLOAD_URL"
or 
curl -o $REPORT_DATA_FILE_GZ ""$REPORT_DOWNLOAD_URL""
or 
curl -o $REPORT_DATA_FILE_GZ $REPORT_DOWNLOAD_URL

…我得到了错误URL using bad/illegal format or missing URL。但我肯定我传递的REPORT_DOWNLOAD_URLREPORT_DATA_FILE_GZ变量与正确的值。

我在调用curl之前将它们与echo一起显示,以确保它们是有效的。

我也无法在URL中看到任何看起来无效的字符。

所有对curl的请求都是在我在浏览器中进行测试调用之前发出的,因此amazon-advertising-api提供的短有效期(30秒)在那个时候不会过期。

根据评论,我在Ubuntu 20.04上运行这个,在WSL2上,但大多数其他curl请求工作得很好。

我最终根据@dave_thompson_085建议的输出找到了解决方案。我从另一个响应的标头中提取了$REPORT_DOWNLOAD_URL,它仍然在末尾包含r

最新更新