como baixar arquivos do dropbox usando o comando wget?

72

Parece que só posso baixar arquivos da caixa de depósito usando o Explorer, como o Chrome e o Firefox. Se eu usar o wget para baixar, obteria um arquivo no formato html. Por quê?

Por exemplo, você pode abrir este link

Você não obteria o conteúdo deste arquivo, por quê? A seguir, parte do test.txt para baixá-lo, esse não é o conteúdo do test.txt.

Então, é possível baixar arquivos do Dropbox usando o wgetinvés do 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)                        });
                    } 

Não consigo obter o test.txt com o 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
hugemeow
fonte
Pergunta estúpida: você estava logado no DropBox quando tentou fazer o download usando um navegador?
11
Usando wgetno seu link recupera test.txt(contendo os 4 bytes "teste") muito bem do meu lado. Talvez algo no seu .wgetrcesteja causando isso?
jjlin
@jjlin qual é o seu comando? o meu é adicionar acima
hugemeow
5
Eu usei wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Isso funcionou bem para mim, mas se você deseja forçar um download, considere tentar wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'(observe o ?dl=1parâmetro de consulta).
Jjlin # 6/12
@jjlin então talvez um script é necessária se eu quiser baixar arquivos do Dropbox :)
hugemeow

Respostas:

21

O link na sua pergunta não é o link para o arquivo, é um link para a página do Dropbox desse arquivo.
Se você deseja usar o wgetdownload, copie o link para fazer o download direto no menu que aparece ao pressionar o botão de download para a direita.

No meu caso, isso funcionou bem. No entanto, às vezes, os problemas no download de links de fora do navegador estão relacionados a outros parâmetros que não o próprio link. Um elemento comum que não existe quando você simplesmente copia o link são os cookies do site.

Experimente este complemento legal do FF para obter os wgetlinks corretos

E também, especialmente se estamos falando de uma estação de trabalho conhecida e não casual, é claro que você pode instalar o cliente Dropbox. Essa será a maneira mais fácil, deixe sua caixa fazer parte da estrutura de arquivos e elimine a necessidade de downloads complicados.
Veja esta publicação do askubuntu.com e a página de download do Dropbox .

amotzg
fonte
4
Tentar obter o link direto no navegador exibe um anúncio para uma opção de atualização. Vejo a outra resposta ( superuser.com/a/486351/106977 ) envolvente ?dl=1, mas isso também não permite acessar o link (provavelmente devido à prevenção de uso do Box, a menos que você atualize).
bgoodr
@amotzg existe uma maneira de retomar o download do dropbox com a bandeira --continue? Parece que não está funcionando para mim. ( unix.stackexchange.com/questions/174850/… )
prayagupd
@PrayagUpd, encontrou este stackoverflow.com/questions/18084677/… .
amotzg
11
Este complemento ajudou com um link de caixa compartilhada que requer uma senha para fazer o download. Observe que, clicando com o botão direito do mouse no botão "baixar", selecionar cliget fornece a URL para a saída? Dl = 0, que é um arquivo menor. Alterar isso para? Dl = 1 fornece o caminho de download correto.
precisa saber é o seguinte
116

Basta adicionar ?dl=1no final do link! Por exemplo:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Isso deve fornecer uma boa recuperação do arquivo em questão sem adicionar nada ao arquivo.

Mais uma coisa! Se você quiser salvar o arquivo em outro lugar, use a -Oopção como esta

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

E se você quiser ter um pouco de GUI, pode usar zenitypara marcar o local para onde o arquivo será baixado!

Aqui está um código de exemplo:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"
Ismael Segui
fonte
Isso é incrível, trabalha fora da caixa ...
slotishtype
Apenas usei sua sugestão para obter uma pasta compartilhada e recebi um incrível arquivo zip (denominado miss). Impressionante! Muito obrigado!!
Rafareino 15/11
11
Resposta muito melhor do que a aceita. Isso ajudou muito, obrigado.
Seiyria 22/09
3
Este método ainda está funcionando? Usando o comando que wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'eu continuo recebendo ERROR 400: Bad Request.
Paul Rougieux 7/11
Agora entendi 500 Internal Server Error, o Dropbox é uma verdadeira porcaria.
Avio
15

O Dropbox o modificou para wgetfazer a coisa certa e recuperar o arquivo em vez do intersticial.

Use "Compartilhar link" para recuperar o link direto para o arquivo.

Ryan
fonte
Essa deve ser a resposta correta, é trivial com o link de compartilhamento.
precisa saber é o seguinte
Agradável! Eu tenho uma wget: No matchsaída, que foi resolvido usando o link entre aspas simples (devido à ?na url talvez?)
Matifou
3

Vi essa pergunta e achei que isso poderia ajudar alguém tentando baixar muitos arquivos ao mesmo tempo.

Aqui está um pequeno script Windows CMD / Batch que você pode usar.
Ele pode ser facilmente ajustado para funcionar em um shell Bash (Mac / Linux / etc).
Ele usa CURL . O WGET também deve funcionar com alguns pequenos ajustes.

1. Instale o Curl para Windows.

2. Coloque os links compartilhados individuais em um arquivo de texto (1 por linha).

3. Ajuste todos os parâmetros "? Dl = 0" no seu arquivo de texto para "? Dl = 1" e salve.

4. Copie o script abaixo para um arquivo chamado 'geturllist.cmd' (ou sua escolha)

5. Abra um prompt do CMD e execute o script CMD.

Os arquivos baixados aparecerão no diretório de trabalho atual do qual você executou o script.

NOTA:
Você deve ter LINKS COMPARTILHADOS formatados corretamente para que "Qualquer pessoa com o link" possa abrir. Esse script NÃO funciona com links ou compartilhamentos protegidos por senha, com base em um login / email do Dropbox.
NOTA:
Se o arquivo único ou o grupo de arquivos (zipado automaticamente) tiver um determinado tamanho, ocorrerá um erro ("O arquivo (zip) é muito grande. Adicione-o ao seu Dropbox."). Nesse caso, você deve fazer o que diz .. esse script não funcionará porque o link de compartilhamento não pode ser baixado diretamente.

Exemplo de arquivo de texto:
("RandomShareCharacters / Here" será substituído pelo que diz no link de compartilhamento)

 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.

Exemplo de uso:

geturllist.cmd X:\somepath\dropbox.txt

bshea
fonte
11
Votos negativos sem comentários são adoráveis. Obrigado. Machucar seus sentimentos?
precisa saber é
11
Inacreditável por que as pessoas votaram negativamente nesta resposta ffs, votadas positivamente.
Josyula Krishna 16/09
0

Você receberá algo chamado "arquivo" ou algum nome estranho ... Apenas renomear esse arquivo para o que você quiser fará o truque. O arquivo realmente baixado é o arquivo que você queria apenas com nome estranho e sem o atributo de tipo de arquivo.

Kruno
fonte
-2

O método mais fácil e garantido para esse tipo de download é usar as ferramentas de desenvolvedor do google chrome.

  • Pressione F12 para abrir as ferramentas do desenvolvedor
  • Vá para a guia rede
  • Pressione o link de download para iniciar o download
  • Encontre o evento de download nos eventos de rede
  • Clique com o botão direito do mouse na linha e selecione "Copiar como cURL (bash)" ou janelas, se desejar

  • O URL ficará assim:

    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"
    
  • Substitua curlporwget

  • Substitua -H "some headers"por--header="some headers"
  • Cole isso na sua janela do bash e adicione o -oparâmetro (Se você não adicionar este parâmetro, a saída será impressa no console.
  • Pressione enter e aproveite o seu download.
Hüseyin Yağlı
fonte
O OP solicitou o uso com o wget.
Twerdster 14/11
Você pode facilmente converter de curl para wget: stackoverflow.com/a/25044709/531524
Hüseyin Yağlı