我想使用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.
但是如果我只是去浏览器并粘贴以下网址
https://XXX.s3.amazonaws.com/MyIntroVideo.mp4?AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX
我可以查看和下载视频。我对wget做错了什么以及我为什么会遇到禁止访问错误(与浏览器中的这个url有什么不同?)
更新:我尝试的第一件事就是使用相同的网址传递参数:
wget \
--no-check-certificate \
--no-proxy \
https://XXX.s3.amazonaws.com/MyIntroVideo.mp4?AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX
但它也没有用。
答案 0 :(得分:2)
将网址放在单引号中:
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。