wget使用安全连接下载文件

时间:2014-05-04 12:42:37

标签: bash wget

我想使用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

但它也没有用。

1 个答案:

答案 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