come scaricare i file dropbox usando il comando wget?


72

Sembra che posso solo scaricare file dropbox usando explorer come chrome e firefox. Se uso wget per il download, otterrei un file in formato html. Perché?

Ad esempio puoi aprire questo link

Non otterresti il ​​contenuto di questo file, perché? Quanto segue fa parte di test.txt per scaricarlo, questo non è affatto il contenuto di test.txt.

Quindi è possibile scaricare i file Dropbox utilizzando wgetanziché Explorer?

document.observe('script:loaded', function() {
SharingModel.init('test\x2etxt', Util.from_json('\x7b\x22item\x5fid\x22\x3a\x20\x22\x22\x2c\x20\x22secure\x5fhash\x22\x3a\x20\x22\x22\x2c\x20\x22subpath\x22\x3a\x20\x22\x22\x2c\x20\x22tkey\x22\x3a\x20\x22mx9eqve5l2ipgyk\x22\x7d'))
SharingModel.init_file()
$('emsnippet-9911dfc627e1d541').innerHTML = 'test\x2etxt'.em_snippet(50, 0.750).escapeHTML();
$('emsnippet-add7879f5d805012').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
$('emsnippet-981ac0639529f983').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
FilePreview.init_text('https\x3a\x2f\x2fdl\x2edropbox\x2ecom\x2fs\x2fmx9eqve5l2ipgyk\x2ftest\x2etxt', 0)                        });
                    } else if (window.jQuery) {
jQuery(function () {
SharingModel.init('test\x2etxt', Util.from_json('\x7b\x22item\x5fid\x22\x3a\x20\x22\x22\x2c\x20\x22secure\x5fhash\x22\x3a\x20\x22\x22\x2c\x20\x22subpath\x22\x3a\x20\x22\x22\x2c\x20\x22tkey\x22\x3a\x20\x22mx9eqve5l2ipgyk\x22\x7d'))
SharingModel.init_file()
$('emsnippet-9911dfc627e1d541').innerHTML = 'test\x2etxt'.em_snippet(50, 0.750).escapeHTML();
$('emsnippet-add7879f5d805012').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
$('emsnippet-981ac0639529f983').innerHTML = 'test\x2etxt'.em_snippet(20, 0.750).escapeHTML();
FilePreview.init_text('https\x3a\x2f\x2fdl\x2edropbox\x2ecom\x2fs\x2fmx9eqve5l2ipgyk\x2ftest\x2etxt', 0)                        });
                    } 

Non riesco a ottenere test.txt con comando

wget https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.tx


ls -l 
-rw-rw-r-- 1 mirror mirror  30K Sep  6 15:01 test.txt

Domanda stupida: sei entrato in DropBox quando hai provato a scaricare usando un browser?

1
Usando wgetsul tuo link recupera test.txt(contenente i 4 byte "test") proprio dalla mia parte. Forse qualcosa nel tuo .wgetrcsta causando questo?
jjlin,

@jjlin qual è il tuo comando? il mio è aggiunto sopra
hugemeow il

5
Ho usato wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Per me ha funzionato bene, ma se si desidera forzare un download, è possibile provare a provare wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'invece (notare il ?dl=1parametro query).
jjlin,

@jjlin quindi forse è necessario uno script se voglio scaricare il file dalla
casella personale

Risposte:


21

Il link nella tua domanda non è il link al file, è un link alla pagina Dropbox di questo file.
Se si desidera utilizzare wgetper scaricarlo, è necessario copiare il collegamento per il download diretto dal menu che si abbassa quando si spinge il pulsante di download verso destra.

Nel mio caso, ha funzionato bene. Tuttavia, a volte i problemi nel download di collegamenti dall'esterno del browser si riferiscono a parametri diversi dal collegamento stesso. Un elemento comune che non esiste quando si copia semplicemente il collegamento sono i cookie del sito.

Prova questo fantastico componente aggiuntivo FF per ottenere i wgetcollegamenti corretti

Inoltre, soprattutto se stiamo parlando di una workstation nota e non casuale, puoi ovviamente installare il client Dropbox. Questo sarà il modo più semplice, lascia che il tuo box faccia parte della struttura dei tuoi file ed elimini la necessità di download complicati.
Vedi questo post di askubuntu.com e la pagina di download di Dropbox .


4
Cercando di ottenere il collegamento diretto nel browser, viene visualizzato un annuncio per un'opzione di aggiornamento. Vedo coinvolta l'altra risposta ( superuser.com/a/486351/106977 ) ?dl=1, ma ciò non consente neanche di accedere al collegamento (probabilmente a causa dell'uso preventivo di Box a meno che non si aggiorni).
bgoodr,

@amotzg c'è un modo per riprendere il download da dropbox con flag --continue? Non sembra funzionare per me. ( unix.stackexchange.com/questions/174850/… )
prayagupd

@PrayagUpd, ha trovato questa stackoverflow.com/questions/18084677/... .
amotzg

1
Questo componente aggiuntivo ha aiutato con un collegamento dropbox condiviso che richiede una password per scaricarlo. Nota, facendo clic con il tasto destro del mouse sul pulsante "download", selezionando Cliget si ottiene l'URL dell'output? Dl = 0, che è un file più piccolo. Modificandolo in? Dl = 1 si ottiene il percorso di download corretto.
JonTheNiceGuy

116

Aggiungi solo ?dl=1alla fine del link! Per esempio:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Questo dovrebbe darti un ottimo recupero del file in questione senza aggiungere nulla al file.

Un'altra cosa! Se vuoi salvare il file da qualche altra parte usa questa -Oopzione

wget -O /root/Desktop/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"

E se vuoi avere un po 'di GUI puoi usare zenityper contrassegnare la posizione in cui il file verrà scaricato!

Ecco un esempio di codice:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"

È fantastico, funziona fuori dagli schemi ...
slotishtype

Ho appena usato il tuo suggerimento per ottenere una cartella condivisa e ho ricevuto un fantastico file zip (nome mancante). Eccezionale! Molte grazie!!
Rafareino,

1
Risposta molto migliore di quella accettata. Questo mi ha aiutato molto, grazie.
Seiyria,

3
Questo metodo funziona ancora? Usando il comando wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'continuo a ricevere ERROR 400: Bad Request.
Paul Rougieux,

Ora capisco 500 Internal Server Error, Dropbox è una vera merda.
Avio,

15

Dropbox lo ha modificato in modo da wgetfare la cosa giusta e recuperare il file anziché l'interstiziale.

Utilizzare "Condividi collegamento" per recuperare il collegamento diretto al file.


Questa dovrebbe essere la risposta corretta, è banale con il link di condivisione.
davidparks21,

Bello! Ho ottenuto un wget: No matchrisultato, che è stato risolto utilizzando il collegamento racchiuso tra virgolette singole ( ?forse a causa dell'URL?)
Matifou,

3

Ho visto questa domanda e ho pensato che questo potesse aiutare qualcuno a provare a scaricare molti file contemporaneamente.

Ecco un piccolo script CMD / Batch di Windows che puoi usare.
Può essere facilmente regolato per funzionare con una shell Bash (Mac / Linux / ecc.).
Usa CURL . WGET dovrebbe funzionare anche con alcune piccole modifiche.

1. Installa Curl per Windows.

2. Inserire i singoli collegamenti CONDIVISI in un file di testo (1 per riga).

3. Regola tutti i parametri "? Dl = 0" nel tuo file di testo su "? Dl = 1" e salva.

4. Copia lo script seguente in un file chiamato 'geturllist.cmd' (o a tua scelta)

5. Aprire un prompt CMD ed eseguire lo script CMD.

I file scaricati verranno visualizzati nella directory di lavoro corrente da cui hai eseguito lo script.

NOTA:
è necessario disporre di LINK CONDIVISI correttamente formattati che "Chiunque abbia il collegamento" può aprire. Questo script NON funziona con collegamenti o condivisioni protetti da password basati su un login / e-mail Dropbox.
NOTA:
se il singolo file o gruppo di file (con compressione automatica) supera una determinata dimensione, non verrà eseguito l'errore ("Il file (zip) è troppo grande. Aggiungilo al tuo Dropbox."). In questo caso devi fare come dice .. questo script non funzionerà perché il link di condivisione non è direttamente scaricabile.

File di testo di esempio:
("RandomShareCharacters / Here" verrà sostituito con ciò che dice nel link di condivisione)

 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1
 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1
 https://www.dropbox.com/sh/RandomShareCharacters/Here?dl=1

geturllist.cmd:

@echo off
set count=0
setlocal ENABLEDELAYEDEXPANSION
IF [%1]==[] GOTO BLANK
SET PARAMETER=%1
SET _PARAMETER=%PARAMETER:~0,2%

IF [%1]==[/?] GOTO HELP
IF [%1]==[--help] GOTO HELP
IF %_PARAMETER%==-h GOTO HELP

IF EXIST %1 (

  for /f "delims=" %%u in (%1) do (

      set /a count=count+1
      curl -kL "%%u" -O -J

      REM For other share sites:
      REM (ZIP EXAMPLE) if no filename type header sent:
      REM > curl -kL "%%u" -o "!count!.zip"
      REM > echo "!count!.zip"
      REM Will download file(s) called 1.zip, 2.zip, etc.
      )
  ) ELSE (
GOTO BLANK
)
GOTO DONE

:HELP
ECHO.
ECHO    Usage:
ECHO.
ECHO    geturllist [path]\[filename]
ECHO.
ECHO.
ECHO    Required Parameters:
ECHO.
ECHO    [filename]  A text file with one url per line
ECHO    -h      Help
ECHO.
GOTO DONE

:BLANK
ECHO.
ECHO Error: no input file found

:HELPMSG
ECHO.
ECHO Try -h for Help

:DONE
ECHO.
ECHO Exiting.
ECHO.

Esempio di utilizzo:

geturllist.cmd X:\somepath\dropbox.txt


1
I voti negativi senza commenti sono adorabili. Grazie. Ferire i tuoi sentimenti?
bshea,

1
Incredibile perché le persone hanno votato in negativo questa risposta ffs, hanno votato in alto.
Josyula Krishna,

0

Otterrai qualcosa chiamato "file" o un nome strano ... Basta rinominare quel file con quello che vuoi farà il trucco. Il file effettivamente scaricato è il file desiderato solo con un nome strano e senza l'attributo del tipo di file.


-2

Il metodo più semplice e garantito per questo tipo di download è utilizzare gli strumenti per sviluppatori di Google Chrome.

  • Premi F12 per aprire gli strumenti di sviluppo
  • Vai alla scheda di rete
  • Premere il collegamento per il download per avviare il download
  • Trova l'evento di download negli eventi di rete
  • Fare clic con il tasto destro del mouse sulla riga e selezionare "Copia come cURL (bash)" o Windows se lo si desidera

  • L'URL sarà simile al seguente:

    curl "http://yoururl.com/yourfile" -H "Pragma: no-cache" -H "Origin: http://yoururl.com" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: en-US;q=0.8,en;q=0.6,fr;q=0.4" -H "User-Agent: Mozilla/5.0 bla bla" -H "Content-Type: text/plain;charset=UTF-8" -H "Accept: */*" -H "Cache-Control: max-age=0" -H "Referer: http://yoururl.com/downloadpage" -H "Cookie: e07214fb60a1a; _ga=98987; " -H "Connection: keep-alive"
    
  • Sostituisci curlconwget

  • Sostituisci -H "some headers"con--header="some headers"
  • Incollalo nella finestra bash e aggiungi il -oparametro. (Se non si aggiunge questo parametro, l'output verrà stampato sulla console.
  • Premi Invio e goditi il ​​download.

OP ha richiesto l'utilizzo con wget.
Twerdster,

È possibile convertire facilmente da curl per wget: stackoverflow.com/a/25044709/531524
Hüseyin Yagli
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.