615 Stimmen

Wget/curl große Datei von Google Drive herunterladen

Ich versuche, eine Datei von Google Drive in einem Skript herunterzuladen, und habe dabei ein kleines Problem. Die Dateien, die ich herunterladen möchte, sind hier.

Ich habe online intensiv nach Informationen gesucht und es schließlich geschafft, eine davon herunterzuladen. Ich habe die UIDs der Dateien bekommen und die kleinere (1,6 MB) wird ohne Probleme heruntergeladen, jedoch wird die größere Datei (3,7 GB) immer auf eine Seite umgeleitet, die mich fragt, ob ich den Download ohne Virenscan fortsetzen möchte. Kann mir jemand helfen, diese Seite zu umgehen?

So habe ich die erste Datei zum Laufen gebracht -

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz

Wenn ich dasselbe mit der anderen Datei mache,

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz

Bekomme ich die folgende Ausgabe - enter image description here

Ich bemerke auf der vorletzten Zeile des Links, dass ein &confirm=JwkK vorhanden ist, was eine zufällige 4-Zeichenfolge ist, aber darauf hinweist, dass es einen Weg gibt, eine Bestätigung zu meiner URL hinzuzufügen. Einer der Links, den ich besucht habe, schlug &confirm=no_antivirus vor, aber das funktioniert nicht.

10voto

maniac Punkte 1074

Der einfachste Weg ist:

  1. Erstellen Sie einen Download-Link und kopieren Sie die Datei-ID
  2. Download mit WGET: wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=DATEIID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=DATEIID" -O DATEINAME && rm -rf /tmp/cookies.txt

9voto

danieltan95 Punkte 764

Die oben genannten Antworten sind veraltet für April 2020, da Google Drive jetzt eine Weiterleitung zum tatsächlichen Speicherort der Datei verwendet.

# Dies wird für direkte Downloads von Drive verwendet
function download-google(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  curl -L -b .tmp/$1cookies "$(egrep -o "https.+download" .tmp/$1intermezzo.html)" > $2;
}

# Einige Dateien werden mit einem indirekten Download geteilt
function download-google-2(){
  echo "https://drive.google.com/uc?export=download&id=$1"
  mkdir -p .tmp
  curl -c .tmp/$1cookies "https://drive.google.com/uc?export=download&id=$1" > .tmp/$1intermezzo.html;
  code=$(egrep -o "confirm=(.+)&id=" .tmp/$1intermezzo.html | cut -d"=" -f2 | cut -d"&" -f1)
  curl -L -b .tmp/$1cookies "https://drive.google.com/uc?export=download&confirm=$code&id=$1" > $2;
}

# Verwendung:
download-google

8voto

mmj Punkte 5051

Keine Antwort bietet, was für mich funktioniert (Quelle):

curl -L https://drive.google.com/uc?id={FileID}

vorausgesetzt, die Google Drive-Datei wurde mit denen geteilt, die den Link haben, und {FileID} ist der String hinter ?id= in der freigegebenen URL.

Obwohl ich es nicht mit großen Dateien getestet habe, glaube ich, dass es nützlich sein könnte zu wissen.

7voto

aularon Punkte 10922

Verwenden Sie youtube-dl!

youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890

Sie können auch --get-url übergeben, um eine direkte Download-URL zu erhalten.

7voto

mattbell87 Punkte 525

Ich hatte das gleiche Problem mit Google Drive.

So habe ich das Problem mit Links 2 gelöst.

  1. Öffnen Sie einen Browser auf Ihrem PC, navigieren Sie zu Ihrer Datei in Google Drive. Geben Sie Ihrer Datei einen öffentlichen Link.

  2. Kopieren Sie den öffentlichen Link in Ihre Zwischenablage (z.B. Rechtsklick, Linkadresse kopieren)

  3. Öffnen Sie ein Terminal. Wenn Sie die Datei auf einen anderen PC/Server/Maschine herunterladen möchten, sollten Sie sich zu diesem Zeitpunkt per SSH verbinden

  4. Installieren Sie Links 2 (Debian/Ubuntu Methode, verwenden Sie Ihr entsprechendes Betriebssystem)

    sudo apt-get install links2

  5. Fügen Sie den Link in Ihr Terminal ein und öffnen Sie ihn mit Links wie folgt:

    links2 "Link hier einfügen"

  6. Navigieren Sie innerhalb von Links mit Ihren Pfeiltasten zum Download-Link und drücken Sie Enter

  7. Wählen Sie einen Dateinamen und die Datei wird heruntergeladen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X