¿Cómo descargar archivos de Dropbox usando el comando wget?

72

Parece que solo puedo descargar archivos de Dropbox usando el explorador como Chrome y Firefox. Si uso wget para descargar, obtendría un archivo que está en formato html. ¿Por qué?

Por ejemplo, puedes abrir este enlace

No obtendrías el contenido de este archivo, ¿por qué? Lo siguiente es parte de test.txt para descargarlo, este no es el contenido de test.txt en absoluto.

Entonces, ¿es posible descargar archivos de Dropbox utilizando en wgetlugar de explorador?

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)                        });
                    } 

No puedo obtener test.txt con el 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
enormemeow
fuente
Pregunta estúpida: ¿inició sesión en DropBox cuando intentó descargar usando un navegador?
1
El uso wgeten su enlace recupera test.txt(que contiene la "prueba" de 4 bytes) de mi parte. Tal vez algo en tu .wgetrcestá causando esto?
jjlin
@jjlin, ¿cuál es tu comando? la mía se agrega arriba
hugemeow
55
He utilizado wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Eso funcionó bien para mí, pero si desea forzar una descarga, puede considerar intentarlo wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'(tenga en cuenta el ?dl=1parámetro de consulta).
jjlin
@jjlin así que tal vez se necesita un script si quiero descargar archivos desde Dropbox :)
hugemeow

Respuestas:

21

El enlace en su pregunta no es el enlace al archivo, es un enlace a la página de Dropbox de este archivo.
Si desea usarlo wgetpara descargarlo, debe copiar el enlace a la descarga directa desde el menú que aparece al presionar el botón de descarga a la derecha.

En mi caso, eso funcionó bien. Sin embargo, a veces los problemas para descargar enlaces desde fuera del navegador se relacionan con parámetros distintos al enlace en sí. Un elemento común que no existe cuando simplemente copia el enlace son las cookies del sitio.

Prueba este genial complemento FF para obtener los wgetenlaces correctos

Y también, especialmente si estamos hablando de una estación de trabajo conocida y no informal, por supuesto, puede instalar el cliente de Dropbox. Esta será la forma más fácil, solo deje que su caja sea parte de su estructura de archivos y elimine la necesidad de descargas complicadas.
Consulte esta publicación de askubuntu.com y la página de descarga de Dropbox .

amotzg
fuente
44
Al intentar obtener el enlace directo en el navegador, aparece un anuncio para una opción de actualización. Veo la otra respuesta ( superuser.com/a/486351/106977 ) que implica ?dl=1, pero eso tampoco permite que uno acceda al enlace (probablemente debido a que Box evita el uso a menos que actualice).
bgoodr el
@amotzg, ¿hay alguna manera de reanudar la descarga desde Dropbox con la bandera --continue? Parece que no me funciona. ( unix.stackexchange.com/questions/174850/… )
prayagupd
@PrayagUpd, encontró este stackoverflow.com/questions/18084677/… .
amotzg
1
Este complemento ayudó con un enlace compartido de Dropbox que requiere una contraseña para descargarlo. Tenga en cuenta que al hacer clic derecho en el botón "descargar", seleccionar cliget le da la URL a la salida? Dl = 0, que es un archivo más pequeño. Cambiar eso a? Dl = 1 proporciona la ruta de descarga correcta.
JonTheNiceGuy
116

¡Solo agregue ?dl=1al final del enlace! Por ejemplo:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Eso debería darle una buena recuperación del archivo en cuestión sin agregar nada al archivo.

¡Una cosa más! Si desea guardar el archivo en otro lugar, use la -Oopción como esta

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

¡Y si desea tener un poco de GUI, puede usar zenitypara marcar la ubicación donde se descargará el archivo!

Aquí hay un código de ejemplo:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"
Ismael Segui
fuente
Eso es increíble, funciona de forma
inmediata
Acabo de utilizar su sugerencia para obtener una carpeta compartida y recibí un increíble archivo zip (nombre de la señorita). ¡Increíble! ¡¡Muchas gracias!!
Rafareino
1
Respuesta mucho mejor que la aceptada. Esto ayudó mucho, gracias.
Seiyria
3
¿Sigue funcionando este método? Usando el comando wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'que sigo recibiendo ERROR 400: Bad Request.
Paul Rougieux el
Ahora entiendo 500 Internal Server Error, Dropbox es una verdadera basura.
Avio
15

Dropbox lo ha modificado para que wgethaga lo correcto y recupere el archivo en lugar del intersticial.

Use "Compartir enlace" para recuperar el enlace directo al archivo.

Ryan
fuente
Esta debería ser la respuesta correcta, es trivial con el enlace compartido.
davidparks21
¡Agradable! Obtuve un wget: No matchresultado, que se resolvió utilizando el enlace entre comillas simples (¿debido a ?la URL quizás?)
Matifou
3

Vi esta pregunta y pensé que esto podría ayudar a alguien que intenta descargar muchos archivos a la vez.

Aquí hay un pequeño script CMD / Batch de Windows que puede usar.
Se puede ajustar fácilmente para trabajar bajo un shell Bash (Mac / Linux / etc.).
Utiliza CURL . WGET también debería funcionar con algunos ajustes menores.

1. Instale Curl para Windows.

2. Coloque los enlaces COMPARTIDOS individuales en un archivo de texto (1 por línea).

3. Ajuste todos los parámetros "? Dl = 0" en su archivo de texto a "? Dl = 1" y guárdelos.

4. Copie el script a continuación en un archivo llamado 'geturllist.cmd' (o su elección)

5. Abra una solicitud CMD y ejecute el script CMD.

Los archivos descargados aparecerán en el directorio de trabajo actual desde el que ejecutó el script.

NOTA:
Debe tener los ENLACES COMPARTIDOS formateados correctamente que "Cualquiera con el enlace" pueda abrir. Este script NO funciona con enlaces o recursos compartidos protegidos por contraseña basados ​​en un inicio de sesión / correo electrónico de Dropbox.
NOTA:
Si el archivo único o el grupo de archivos (comprimido automáticamente) supera un determinado tamaño, fallará con un error ("El archivo (zip) es demasiado grande. Agréguelo a su Dropbox"). En este caso, debe hacer lo que dice ... este script no funcionará porque compartir el enlace no se puede descargar directamente.

Archivo de texto de ejemplo:
("RandomShareCharacters / Here" se reemplazará con lo que dice en el enlace compartido)

 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.

Ejemplo de uso:

geturllist.cmd X:\somepath\dropbox.txt

bshea
fuente
1
Los votos negativos sin comentarios son encantadores. Gracias. ¿Herir tus sentimientos?
bshea
1
Increíble por qué la gente rechazó esta respuesta ffs, votó positivamente.
Josyula Krishna
0

Obtendrá algo llamado "archivo" o algún nombre extraño ... Simplemente cambiar el nombre de ese archivo a lo que quiera hará el truco. El archivo realmente descargado es el archivo que deseabas solo con un nombre extraño y sin el atributo de tipo de archivo.

Kruno
fuente
-2

El método más fácil y más garantizado para este tipo de descargas es usar las herramientas de desarrollo de Google Chrome.

  • Presione F12 para abrir herramientas de desarrollador
  • Ir a la pestaña de red
  • Presione el enlace de descarga para iniciar la descarga
  • Encuentra el evento de descarga en los eventos de red
  • Haga clic derecho en la línea y seleccione "Copiar como cURL (bash)" o Windows si lo desea

  • La url se verá así:

    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"
    
  • Reemplazar curlconwget

  • Reemplazar -H "some headers"con--header="some headers"
  • Pegue eso en su ventana bash y agregue el -oparámetro. (Si no agrega este parámetro, la salida se imprimirá en la consola.
  • Presione enter y disfrute de su descarga.
Hüseyin Yağlı
fuente
OP solicitó el uso con wget.
twerdster
Puede convertir fácilmente de curl a wget: stackoverflow.com/a/25044709/531524
Hüseyin Yağlı el