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.

20voto

Aatif Khan Punkte 318

Basierend auf der Antwort von Roshan Sethia

Verwendung von WGET:

  1. Erstellen Sie ein Shell-Skript namens wgetgdrive.sh wie folgt:

    #!/bin/bash
    
    # Dateien von Google Drive abrufen
    
    # $1 = Datei-ID
    # $2 = Dateiname
    
    URL="https://docs.google.com/uc?export=download&id=$1"
    
    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 $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
  2. Geben Sie die richtigen Berechtigungen zum Ausführen des Skripts.

  3. Führen Sie im Terminal aus:

    ./wgetgdrive.sh  

    Zum Beispiel:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip

15voto

Kos Punkte 4870

Sie können diese Lösung verwenden:

https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t

Quelle der "Viruswarnungsseite":

Geben Sie hier eine Bildbeschreibung ein

Das Formular "Trotzdem herunterladen" wird an dieselbe URL übergeben, jedoch mit drei zusätzlichen Parametern:

  • t
  • confirm
  • uuid

Wenn Sie Ihre ursprüngliche URL ändern und einen davon hinzufügen: confirm=t, wird die Datei ohne eine Warnungsseite heruntergeladen.

Ändern Sie also einfach Ihre URL zu

https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t 

Zum Beispiel:

$ curl -L 'https://drive.google.com/uc?export=download&id=FILE_ID' > large_video.mp4
  % Gesamt    % Empfangen % Übertragen  Durchschn. Geschwindigkeit  Zeit     Zeit     Zeit  Aktuell
                             Heruntergeladen  Hochgeladen   Gesamt   Verstrichen  Verbleibend   Geschw.  Zeit
100  2263    0  2263    0     0   5426      0 --:--:-- --:--:-- --:--:--  5453

Nach Hinzufügen von confirm=t wird das Ergebnis:

$ curl -L 'https://drive.google.com/uc?export=download&id=FILE_ID&confirm=t' > large_video.mp4
  % Gesamt    % Empfangen % Übertragen  Durchschn. Geschwindigkeit  Zeit     Zeit     Zeit  Aktuell
                             Heruntergeladen  Hochgeladen   Gesamt   Verstrichen  Verbleibend   Geschw.  Zeit
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  128M  100  128M    0     0  10.2M      0 0:00:12  0:00:12 --:--:-- 10.9M

12voto

jturi Punkte 1349

--AKTUALISIERT--

Um die Datei herunterzuladen, erhalten Sie zuerst youtube-dl für Python von hier:

youtube-dl: https://rg3.github.io/youtube-dl/download.html

oder installieren Sie es mit pip:

sudo python2.7 -m pip install --upgrade youtube_dl 
# oder 
# sudo python3.6 -m pip install --upgrade youtube_dl

AKTUALISIERUNG:

Ich habe gerade das hier herausgefunden:

  1. Klicken Sie mit der rechten Maustaste auf die Datei, die Sie von drive.google.com herunterladen möchten

  2. Klicken Sie auf Freigablink erhalten

  3. Schalten Sie Linkfreigabe ein

  4. Klicken Sie auf Freigabeeinstellungen

  5. Klicken Sie auf den oberen Dropdown für Optionen

  6. Klicken Sie auf Weitere

  7. Wählen Sie [x] Ein - Jeder mit Link

  8. Link kopieren

    https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing
    (Dies ist keine echte Dateiadresse)

Kopieren Sie die ID nach https://drive.google.com/file/d/:

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

Fügen Sie dies in die Befehlszeile ein:

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

Fügen Sie die ID hinter open?id= ein

youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Webseite herunterladen
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Anforderung der Quelldatei
[download] Ziel: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB bei  2321.53MiB/s (00:01)

Hoffe es hilft

12voto

CoderBlue Punkte 406

Alle obigen Antworten scheinen die Einfachheit der Antwort zu verschleiern oder haben einige Nuancen, die nicht erklärt werden.

Wenn die Datei öffentlich freigegeben ist, können Sie einen direkten Download-Link generieren, indem Sie einfach die Datei-ID kennen. Die URL muss in der Form "https://drive.google.com/uc?id=[FILEID]&export=download" sein. Dies erfordert nicht, dass der Empfänger sich bei Google anmeldet, erfordert aber, dass die Datei öffentlich freigegeben wird.

  1. In Ihrem Browser navigieren Sie zu drive.google.com.

  2. Klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie "Freigabelink erstellen".

    Rechtsklick Freigabelink erhalten

  3. Öffnen Sie einen neuen Tab, wählen Sie die Adressleiste aus und fügen Sie den Inhalt Ihrer Zwischenablage ein, was der Freigabelink sein wird. Sie sehen die Datei, die von Googles Viewer angezeigt wird. Die ID ist die Nummer direkt vor dem "Anzeigen"-Bestandteil der URL:

    Bildbeschreibung hier eingeben

  4. Bearbeiten Sie die URL, damit sie das folgende Format hat, wobei "[FILEID]" durch die ID Ihrer freigegebenen Datei ersetzt wird:

    https://drive.google.com/uc?id=[FILEID]&export=download
  5. Das ist Ihr direkter Download-Link. Wenn Sie darauf in Ihrem Browser klicken, wird die Datei nun "heruntergeladen", öffnet den Download-Dialog und ermöglicht es Ihnen, die Datei zu speichern oder zu öffnen. Sie können diesen Link auch in Ihren Download-Skripten verwenden.

  6. Also wäre der entsprechende curl-Befehl:

    curl -L "https://drive.google.com/uc?id=AgOATNfjpovfFrft9QYa-P1IeF9e7GWcH&export=download" > phlat-1.0.tar.gz

11voto

mher Punkte 349

Ich habe den Curl-Schnipsel von @Amit Chahar verwendet, der eine gute Antwort in diesem Thread gepostet hat. Ich fand es nützlich, ihn in eine Bash-Funktion anstatt in eine separate .sh-Datei zu setzen

function curl_gdrive {

    GDRIVE_FILE_ID=$1
    DEST_PATH=$2

    curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${GDRIVE_FILE_ID}" > /dev/null
    curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${GDRIVE_FILE_ID}" -o ${DEST_PATH}
    rm -f cookie
}

Dies kann z.B. in einer ~/.bashrc inkludiert werden (nachdem es natürlich eingebunden wurde, falls es nicht automatisch eingebunden wird) und wie folgt verwendet werden

curl_gdrive 153bpzybhfqDspyO_gdbcG5CMlI19ASba imagenet.tar

Aktualisierung 2022-03-01: wget Version, die auch funktioniert, wenn Virenscan ausgelöst wird

function wget_gdrive {

    GDRIVE_FILE_ID=$1
    DEST_PATH=$2

    wget --save-cookies cookies.txt 'https://docs.google.com/uc?export=download&id='$GDRIVE_FILE_ID -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1/p' > confirm.txt
    wget --load-cookies cookies.txt -O $DEST_PATH 'https://docs.google.com/uc?export=download&id='$GDRIVE_FILE_ID'&confirm='$(

`Beispielverwendung:

wget_gdrive 1gzp8zIDo888AwMXRTZ4uzKCMiwKynHYP foo.out`

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