jak pobierać pliki dropbox za pomocą polecenia wget?

72

Wydaje się, że mogę pobierać pliki dropbox tylko przy użyciu Eksploratora, takiego jak Chrome i Firefox. Jeśli użyję wget do pobrania, otrzymam plik w formacie HTML. Dlaczego?

Na przykład możesz otworzyć ten link

Nie dostaniesz zawartości tego pliku, dlaczego? Poniższa część jest częścią test.txt, aby ją pobrać, to wcale nie jest zawartość test.txt.

Czy można zatem pobierać pliki Dropbox za pomocą przeglądarki wgetzamiast eksploratora?

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

Nie mogę uzyskać test.txt z poleceniem

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
źródło
Głupie pytanie: czy byłeś zalogowany do DropBox, gdy próbowałeś pobrać za pomocą przeglądarki?
1
Używanie wgetna twoim linku pobiera test.txt(zawierające 4 bajty „test”) po mojej stronie. Może coś w tobie .wgetrcto powoduje?
jjlin
@jjlin, jakie jest twoje polecenie? moja jest dodana powyżej
hugemeow
5
Kiedyś wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Dla mnie to działało dobrze, ale jeśli chcesz wymusić pobranie, możesz spróbować wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'zamiast tego (zwróć uwagę na ?dl=1parametr zapytania).
jjlin
@jjlin, więc może potrzebuję skryptu, jeśli chcę pobrać plik z
Dropbox

Odpowiedzi:

21

Link w twoim pytaniu nie jest linkiem do pliku, jest linkiem do strony Dropbox tego pliku.
Jeśli chcesz go wgetpobrać, skopiuj link do bezpośredniego pobierania z menu, które spada po naciśnięciu przycisku pobierania w prawo.

W moim przypadku działało dobrze. Czasami jednak problemy z pobieraniem linków spoza przeglądarki dotyczą parametrów innych niż sam link. Częstym elementem, który nie istnieje po prostu po skopiowaniu linku, są pliki cookie witryny.

Wypróbuj ten fajny dodatek FF, aby uzyskać prawidłowe wgetlinki

A także, szczególnie jeśli mówimy o znanej stacji roboczej, a nie zwykłej, możesz oczywiście zainstalować klienta Dropbox. To będzie najłatwiejszy sposób, po prostu pozwól swojemu pudełku być częścią struktury pliku i wyeliminuj potrzebę skomplikowanych pobrań.
Zobacz ten post askubuntu.com i stronę pobierania Dropbox .

amotzg
źródło
4
Próbując uzyskać bezpośredni link w przeglądarce, pojawia się reklama opcji aktualizacji. Widzę, że inna odpowiedź ( superuser.com/a/486351/106977 ) jest zaangażowana ?dl=1, ale to również nie pozwala na uzyskanie linku (prawdopodobnie z powodu uniemożliwienia użycia Boxa, chyba że przeprowadzisz aktualizację).
bgoodr
@amotzg czy istnieje sposób, aby wznowić pobieranie z Dropbox z flagą --continue? Wydaje mi się, że to nie działa. ( unix.stackexchange.com/questions/174850/… )
prayagupd
@PrayagUpd, uznał ten stackoverflow.com/questions/18084677/... .
amotzg
1
Ten dodatek pomógł w udostępnianiu linku dropbox, który wymaga hasła do pobrania. Uwaga: kliknięcie prawym przyciskiem myszy przycisku „pobierz”, wybranie cliget daje adres URL wyjścia? Dl = 0, czyli mniejszego pliku. Zmiana na? Dl = 1 daje prawidłową ścieżkę pobierania.
JonTheNiceGuy
116

Po prostu dodaj ?dl=1na końcu linku! Na przykład:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Powinno to zapewnić dokładne pobranie danego pliku bez dodawania czegokolwiek do pliku.

Jeszcze jedna rzecz! Jeśli chcesz zapisać plik w innym miejscu, skorzystaj z takiej -Oopcji

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

A jeśli chcesz mieć trochę GUI, możesz użyć zenitydo zaznaczenia lokalizacji, do której plik zostanie pobrany!

Oto przykładowy kod:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"
Ismael Segui
źródło
To niesamowite, działa od
razu po
Właśnie skorzystałem z Twojej sugestii, aby uzyskać folder współdzielony i otrzymałem niesamowity plik zip (miss o nazwie). Niesamowite! Wielkie dzięki!!
Rafareino
1
Znacznie lepsza odpowiedź niż zaakceptowana. To bardzo pomogło, dzięki.
Seiyria,
3
Czy ta metoda nadal działa? Za pomocą polecenia wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'ciągle się pojawia ERROR 400: Bad Request.
Paul Rougieux,
Teraz rozumiem 500 Internal Server Error, Dropbox to prawdziwa bzdura.
Avio
15

Dropbox zmodyfikował go, aby działał wgetpoprawnie i pobierał plik zamiast reklamy pełnoekranowej.

Użyj „Udostępnij link”, aby pobrać bezpośredni link do pliku.

Ryan
źródło
To powinna być poprawna odpowiedź, to jest banalne z linkiem do udostępniania.
davidparks21
Miły! Mam wget: No matchwynik, który został rozwiązany za pomocą linku zawartego w pojedynczym cudzysłowie (może z powodu ?
adresu
3

Widziałem to pytanie i pomyślałem, że może to pomóc komuś, kto próbuje pobrać wiele plików jednocześnie.

Oto mały skrypt Windows CMD / Batch, którego możesz użyć.
Można go łatwo dostosować do pracy pod powłoką Bash (Mac / Linux / etc).
Używa CURL . WGET powinien również działać z pewnymi drobnymi korektami.

1. Zainstaluj Curl dla Windows.

2. Umieść poszczególne UDOSTĘPNIANE linki w pliku tekstowym (1 na linię).

3. Ustaw wszystkie parametry „? Dl = 0” w pliku tekstowym na „? Dl = 1” i zapisz.

4. Skopiuj poniższy skrypt do pliku o nazwie „geturllist.cmd” (lub do wyboru)

5. Otwórz monit CMD i uruchom skrypt CMD.

Pobrane pliki pojawią się w bieżącym katalogu roboczym, z którego wykonałeś skrypt.

UWAGA:
Musisz poprawnie sformatować UDOSTĘPNIONE LINKI, które może otworzyć „Każdy z linkiem”. Ten skrypt NIE działa w przypadku chronionych hasłem łączy ani udziałów opartych na loginie / e-mailu Dropbox.
UWAGA:
Jeśli pojedynczy plik lub grupa plików (automatyczne spakowanie) ma określony rozmiar, zakończy się niepowodzeniem z błędem („Plik (zip) jest zbyt duży. Dodaj go do Dropbox.”). W takim przypadku musisz postępować zgodnie z instrukcją ... ten skrypt nie będzie działał, ponieważ łącza udostępniania nie można pobrać bezpośrednio.

Przykładowy plik tekstowy:
(„RandomShareCharacters / Here” zostanie zastąpione tym, co mówi w linku udostępniania)

 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.

Przykładowe użycie:

geturllist.cmd X:\somepath\dropbox.txt

bshea
źródło
1
Głosy w dół bez komentarzy są piękne. Dzięki. Zranić twoje uczucia?
bshea,
1
Niewiarygodne, dlaczego ludzie głosowali tę odpowiedź ffs, głosowali pozytywnie.
Josyula Krishna
0

Dostaniesz coś o nazwie „plik” lub jakąś dziwną nazwę ... Wystarczy zmienić nazwę tego pliku na cokolwiek chcesz. Właściwie pobrany plik to plik, który chciałeś tylko z dziwną nazwą i bez atrybutu typu pliku.

Kruno
źródło
-2

Najłatwiejszą i najbardziej gwarantowaną metodą dla tego rodzaju pobrań jest użycie narzędzi programistycznych Google Chrome.

  • Naciśnij klawisz F12, aby otworzyć narzędzia programistyczne
  • Przejdź do zakładki sieci
  • Naciśnij link do pobrania, aby rozpocząć pobieranie
  • Znajdź zdarzenie pobierania w zdarzeniach sieciowych
  • Kliknij linię prawym przyciskiem myszy i wybierz „Kopiuj jako cURL (bash)” lub Windows, jeśli chcesz

  • Adres URL będzie wyglądał następująco:

    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"
    
  • wymienić curlzwget

  • wymienić -H "some headers"z--header="some headers"
  • Wklej to do swojego okna bash i dodaj -oparametr. (Jeśli nie dodasz tego parametru, dane wyjściowe zostaną wydrukowane w konsoli.
  • Naciśnij enter i ciesz się z pobierania.
Hüseyin Yağlı
źródło
OP zażądało użycia z wget.
twerdster,
Możesz łatwo przekonwertować z curl na wget: stackoverflow.com/a/25044709/531524
Hüseyin Yağlı