Wget从URL下载不完整的文件

时间:2014-01-29 12:36:45

标签: wget

我想在我的linux系统上下载一个文件,其网址是

http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jre-7u51-linux-i586.tar.gz  

我将发出以下命令:

  

wget -U 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0' http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jre-7u51-linux-i586.tar.gz

而用户代理正被传递给我从浏览器的用户代理复制的-U。但它下载的文件大小仅为5.3KB,而整个文件为46.09MB,下载的文件已损坏。

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

查看输出,您将意识到oracle拒绝了该请求,其中包含以下消息:

  

要从Oracle Technology Network下载产品,您必须这样做   同意OTN许可条款。

     

确保......

     
      
  • 您的浏览器已启用“cookies”并启用了JavaScript。
  •   
  • 您为要下载的产品点击了“接受许可”。
  •   
  • 您在接受许可后30分钟内尝试下载。
  •   

很可能你必须发送一些GET或POST值和/或保存会话数据。

答案 1 :(得分:0)

该文件并非完全“腐败”;如果您在新的浏览器会话中转到该URL,您将看到一个错误页面,上面写着“为了从Oracle Technology Network下载产品,您必须同意OTN许可条款。”。这是您下载的页面 - the page it redirects to的文件大小为5307字节。

在获取文件from the download page之前,您必须使用单选按钮接受许可协议。这样做会在浏览器中创建一个cookie,并在您获得实际文件时检查cookie。 wget没有提供该Cookie。

您需要直接从网站下载,或安排wget发送假cookie,一般情况下可能不支持。有些下载曾附加wget脚本,不确定是否有这样做;它看起来与下载页面上的内容不同。