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