我想大量下载视频文件从亚马逊使用wget。我为单个文件使用的代码:
wget \
--no-check-certificate \
--no-proxy \
--post-data "AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX" \
https://XXX.s3.amazonaws.com/MyIntroVideo.mp4
我得到了ERROR 403: Forbidden.
,但是如果我只需转到浏览器并粘贴以下url
https://XXX.s3.amazonaws.com/MyIntroVideo.mp4?AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX
我可以查看和下载视频。我在wget上做错了什么,以及为什么我被禁止访问错误(与只在浏览器中访问这个url有什么不同)?
更新:我尝试的第一件事是用相同的url传递参数:
wget \
--no-check-certificate \
--no-proxy \
https://XXX.s3.amazonaws.com/MyIntroVideo.mp4?AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX
但也没用。
发布于 2014-05-04 05:13:08
将URL放在单引号中:
wget \
--no-check-certificate \
--no-proxy \
'https://XXX.s3.amazonaws.com/MyIntroVideo.mp4?AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX'
否则,查询参数之间的符号可以由shell解释为命令之间的分隔符,因此wget只能看到AWSAccessKeyId=XXX
,而没有签名。
或者,一种更简单的方法可能是使用专用的S3客户端工具,例如s3cmd。
https://stackoverflow.com/questions/23456346
复制