我们使用安全连接下载文件



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

UPDATE:我尝试的第一件事是传递相同url的参数:

wget 
--no-check-certificate  
--no-proxy 
https://XXX.s3.amazonaws.com/MyIntroVideo.mp4?AWSAccessKeyId=XXX&Expires=XXX&Signature=XXX

将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。

最新更新