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.

4voto

ppetraki Punkte 418

https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db

#!/bin/bash

QUELLE="$1"
if [ "${QUELLE}" == "" ]; then
    echo "Muss eine Quell-URL angeben"
    exit 1
fi

ZIEL="$2"
if [ "${ZIEL}" == "" ]; then
    echo "Muss einen Zielpfad angeben"
    exit 1
fi

DATEIID=$(echo $QUELLE | rev | cut -d= -f1 | rev)
COOKIES=$(mktemp)

CODE=$(wget --save-cookies $COOKIES --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${DATEIID}" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/Code: \1\n/p')

# Code aufräumen, Format ist 'Code: XXXX'
CODE=$(echo $CODE | rev | cut -d: -f1 | rev | xargs)

wget --load-cookies $COOKIES "https://docs.google.com/uc?export=download&confirm=${CODE}&id=${DATEIID}" -O $ZIEL

rm -f $COOKIES

4voto

Roshan Sethia Punkte 41

Ich habe eine funktionierende Lösung dafür gefunden... Verwenden Sie einfach das Folgende

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=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.zip && rm -rf /tmp/cookies.txt

3voto

Yesh Punkte 886

Es gibt einen einfacheren Weg.

Installieren Sie die cliget/CURLWGET-Erweiterung von Firefox/Chrome.

Laden Sie die Datei aus dem Browser herunter. Dadurch wird ein Curl/Wget-Link erstellt, der sich an die beim Herunterladen der Datei verwendeten Cookies und Header erinnert. Verwenden Sie diesen Befehl aus einer beliebigen Shell zum Herunterladen

3voto

castaway2000 Punkte 306

Für alle, die auf diesen Thread stoßen, funktioniert das Folgende ab Mai 2022, um die Antivirenprüfung bei großen Dateien zu umgehen:

#!/bin/bash
fileid="FILEIDENTIFIER"
filename="FILENAME"
html=`curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}"`
curl -Lb ./cookie "https://drive.google.com/uc?export=download&`echo ${html}|grep -Po '(confirm=[a-zA-Z0-9\-_]+)'`&id=${fileid}" -o ${filename}

3voto

S V Praveen Punkte 421

Alternative Methode

Funktioniert gut für Headless-Server. Ich habe versucht, eine ~200GB große private Datei herunterzuladen, konnte aber keine der anderen Methoden, die in diesem Thread erwähnt wurden, zum Laufen bringen.

  1. (Überspringen Sie diesen Schritt, wenn die Datei bereits in Ihrem eigenen Google Drive ist) Erstellen Sie eine Kopie der Datei, die Sie aus einem öffentlichen/geteilten Ordner herunterladen möchten, in Ihrem Google Drive-Konto. Datei auswählen -> Rechtsklick -> Kopie erstellen

    Demo Kopie erstellen

  2. Installieren und Einrichten von Rclone, einem Open-Source-Befehlszeilentool, um Dateien zwischen Ihrem lokalen Speicher und Google Drive zu synchronisieren. Hier ist ein schnelles Tutorial zur Installation und Einrichtung von rclone für Google Drive.

  3. Kopieren Sie Ihre Datei von Google Drive auf Ihren Computer mit Rclone

    rclone copy mygoogledrive:Pfad/zur/Datei /Pfad/zur/Datei/auf/lokaler/maschine -P

    Das -P Argument hilft dabei, den Fortschritt des Downloads zu verfolgen und informiert Sie, wenn dieser abgeschlossen ist.

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