如何使用wget下载文件,页面使您等待下载?


32

我正在尝试使用wget从sourceforge下载文件,但众所周知,我们必须单击下载按钮,然后等待其自动下载。您如何使用wget下载此类文件?

我正在尝试下载此文件:http : //sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/download

但是在该URL链接上执行wget不会得到该文件,因为该文件是通过浏览器自动加载的。


3
在网络浏览器中转到该页面还应列出一个直接链接-您可以将wget与它一起使用吗?
BriGuy

如果您要保留文件的真实名称(而不是“下载”),则只需以wget --trust-server-names URL
Adam Katz

Answers:


5

我不确定wget在您和sourceforge之间存在哪个版本的OS或任何代理服务器,但是wget在删除“ / download”并将其保留在文件扩展名时下载了该文件。

我不想淹没整个帖子或粘贴整个会话,但是在转移开始之前我得到了302然后200的状态代码。尝试时会发生什么wget

Resolving downloads.sourceforge.net... 216.34.181.59
Connecting to downloads.sourceforge.net|216.34.181.59|:80... connected.
HTTP request sent, awaiting response... 302 Found

[snipped for brevity]

HTTP request sent, awaiting response... 200 OK
Length: 13432789 (13M) [application/x-gzip]
Saving to: `download'

还要注意:有时“下载”页面是一个镜像列表和一个脚本,当经过一定的延迟后,会为您提供一个镜像。SourceForge在10年前就做到了。
can-ned_food

47

我建议使用curl代替wget。它可以按照重定向使用开关-L-J-O

curl -O -J -L http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/download

开关定义

-O/--remote-name
  Write output to a local file named like the remote file we get. 
  (Only the file part of the remote  file  is  used, the path is cut off.)

-L/--location
  (HTTP/HTTPS)  If  the  server  reports that the requested page has moved 
  to a different location (indicated with a Location: header and a 3XX 
  response code), this option will make curl redo the request on the new 
  place.  If  used together  with  -i/--include  or -I/--head, headers from 
  all requested pages will be shown. When authentication is used, curl only 
  sends its credentials to the initial host. If a redirect takes curl to a 
  different host, it  won't be  able  to  intercept  the  user+password. 
  See also --location-trusted on how to change this. You can limit the
  amount of redirects to follow by using the --max-redirs option.

-J/--remote-header-name
  (HTTP) This option tells the -O/--remote-name option to  use  the  
  server-specified  Content-Disposition  filename instead of extracting a 
  filename from the URL.

有关更多详细信息,请参见curl手册页


2
无需使用卷曲,wget可以进行重定向,但它并没有这样做,除非你增加--max-redirect从默认,这对于安全原因当然是0
安森

wget1.19.2的默认设置--max-redirect=20对于大多数使用来说应该足够了。我不确定该更改的时间...或为什么这对于安全性来说是必需的(需要引用!),但是我的猜测是当前的首选解决方案是遵循重定向,而是要求--trust-server-names保留重定向目标提供的名称,而不是“下载”或“ index.html?blah = barg”或提供的URL使用的任何内容。
亚当·卡兹

万一它对任何人都有帮助,这就是我记住正确开关的方式。想想詹妮弗·洛佩兹(Jennifer Lopez)。JLO。 curl -JLO http://www.example.com/file.ext
卡尔

15

wget您可以使用--content-disposition选项,该选项对于某些文件下载CGI程序很有用,这些程序使用“ Content-Disposition”标头来描述下载文件的名称。

例如:

wget --user-agent=Mozilla --content-disposition -E -c http://example.com/

对于更复杂的解决方案(例如需要授权),请使用Cookie文件(--load-cookies file)模拟您的会话。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.