Wie lade ich Dateien mit wget herunter, bei denen die Seite darauf wartet, dass sie heruntergeladen werden?

32

Ich versuche, eine Datei mit wget von sourceforge herunterzuladen, aber wie wir alle wissen, müssen wir auf den Download-Button klicken und warten, bis sie automatisch heruntergeladen wird. Wie können Sie diese Art von Datei mit wget herunterladen?

Ich versuche dies herunterzuladen: http://sourceforge.net/projects/bitcoin/files/Bitcoin/bitcoin-0.8.1/bitcoin-0.8.1-linux.tar.gz/download

Wenn ich jedoch einen Link mit dieser URL benutze, bekomme ich die Datei nicht, da die Datei automatisch über den Browser geladen wird.

Patoshi パ ト ト
quelle
3
Wenn Sie diese Seite im Webbrowser aufrufen, sollte auch ein direkter Link angezeigt werden. Können Sie wget damit verwenden?
BriGuy
Wenn Sie den wahren Namen der Datei beibehalten möchten (und nicht "herunterladen"), müssen Sie sie lediglich alswget --trust-server-names URL
Adam Katz

Antworten:

5

Ich bin mir nicht sicher, welche Version von wgetoder welches Betriebssystem und welcher Proxy zwischen Ihnen und sourceforge existiert, aber wgetich habe die Datei heruntergeladen, als ich das "/ download" entfernt und an der Dateierweiterung belassen habe.

Ich möchte nicht den Post oder Pastebin meiner gesamten Sitzung überfluten, aber ich habe die 302 und dann 200 Statuscodes erhalten, bevor die Übertragung begann. Was passiert, wenn Sie es versuchen 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'
Karen3819x4
quelle
Ebenfalls zu beachten: Gelegentlich ist die Download-Seite eine Liste von Spiegeln und ein Skript, mit dem Sie nach Ablauf einer bestimmten Verzögerung eine davon erhalten. SourceForge hat dies vor 10 Jahren getan.
can-ned_food
47

Ich würde vorschlagen curl, dies anstelle von zu tun wget. Es kann die Umleitung folgen Sie den Schaltern -L, -Jund -O.

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

Definitionen wechseln

-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.

Weitere Informationen finden Sie auf der Curl-Manpage .

slm
quelle
2
Curl wgetmuss nicht verwendet werden, kann Weiterleitungen folgen, tut dies jedoch nicht, es sei denn, Sie erhöhen --max-redirectdie Standardeinstellung, die aus Sicherheitsgründen natürlich 0 ist.
Anthon
wgetDie Standardeinstellung von 1.19.2 --max-redirect=20sollte für die meisten Verwendungszwecke ausreichen. Ich bin mir nicht sicher, wann sich das geändert hat ... oder warum dies für die Sicherheit notwendig war (Zitieren erforderlich!), Aber ich vermute, dass die derzeit bevorzugte Lösung darin bestand, Weiterleitungen zu folgen und stattdessen --trust-server-namesden von einem Weiterleitungsziel bereitgestellten Namen beizubehalten. " download "oder" index.html? blah = barg "oder was auch immer die angegebene URL verwendet.
Adam Katz
Falls es jemandem hilft, hier ist, wie ich mich an die richtigen Schalter erinnere. Denken Sie Jennifer Lopez. JLO. curl -JLO http://www.example.com/file.ext
Carl
15

In können wgetSie die --content-dispositionOption verwenden, die für einige CGI-Programme zum Herunterladen von Dateien nützlich ist, die "Content-Disposition" -Header verwenden, um den Namen einer heruntergeladenen Datei zu beschreiben.

Zum Beispiel:

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

Verwenden Sie für komplexere Lösungen (z. B. Autorisierung erforderlich) die Cookie-Datei ( --load-cookies file), um Ihre Sitzung zu simulieren.

Kenorb
quelle