将 curl 与 URL 一起使用有什么违法行为?
What is illegal about using curl with this URL?
我有以下 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_URL
和 REPORT_DATA_FILE_GZ
变量。
我在调用 curl
之前用 echo
显示它们以确保它们有效。
我在 URL 中也看不到任何对我来说无效的字符。
所有对 curl 的请求都是在我在浏览器中进行测试调用之前发出的,因此 amazon-advertising-api 提供的短有效期(30 秒)不会过期那个时候。
根据评论,我 运行 在 Ubuntu 20.04 下,在 WSL2 上,但大多数其他 curl 请求工作正常。
我终于根据@dave_thompson_085建议的输出找到了解决方案。我从不同响应的 header 中提取了 $REPORT_DOWNLOAD_URL
,它仍然包含最后的 \r
。
我有以下 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_URL
和 REPORT_DATA_FILE_GZ
变量。
我在调用 curl
之前用 echo
显示它们以确保它们有效。
我在 URL 中也看不到任何对我来说无效的字符。
所有对 curl 的请求都是在我在浏览器中进行测试调用之前发出的,因此 amazon-advertising-api 提供的短有效期(30 秒)不会过期那个时候。
根据评论,我 运行 在 Ubuntu 20.04 下,在 WSL2 上,但大多数其他 curl 请求工作正常。
我终于根据@dave_thompson_085建议的输出找到了解决方案。我从不同响应的 header 中提取了 $REPORT_DOWNLOAD_URL
,它仍然包含最后的 \r
。