Как скачать файлы Dropbox с помощью команды Wget?

72

Кажется, я могу загружать файлы Dropbox только с помощью проводника, такого как Chrome и Firefox. Если я использую wget для загрузки, я получу файл в формате html. Почему?

Например, вы можете открыть эту ссылку

Вы не получили бы содержимое этого файла, почему? Следующее является частью test.txt для его загрузки, это вовсе не содержимое test.txt.

Так можно ли скачивать файлы Dropbox, используя wgetпроводник?

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

Я не могу получить test.txt с помощью команды

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
источник
Глупый вопрос: входили ли вы в DropBox при попытке загрузки с помощью браузера?
1
Использование wgetпо вашей ссылке извлекает test.txt(содержащий 4 байта "test") просто отлично на моей стороне. Может быть, что-то в вашем .wgetrcвызывает это?
Jjlin
@jjlin какая у тебя команда? мой - добавить выше
огромный день
5
Я использовал wget --no-check-cert https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt. Это хорошо для меня, но если вы хотите принудительно загрузить, вы можете попробовать wget --no-check-cert 'https://dl.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1'вместо этого (обратите внимание на ?dl=1параметр запроса).
Jjlin
@jjlin, так что, может быть, нужен скрипт, если я хочу скачать файл из Dropbox :)
огромный,

Ответы:

21

Ссылка в вашем вопросе не является ссылкой на файл, это ссылка на страницу Dropbox этого файла.
Если вы хотите использовать его wgetдля загрузки, скопируйте ссылку для прямой загрузки из меню, которое открывается при нажатии кнопки загрузки вправо.

В моем случае это работало нормально. Однако иногда проблемы с загрузкой ссылок извне браузера связаны с параметрами, отличными от самой ссылки. Обычным элементом, который не существует, когда вы просто копируете ссылку, являются файлы cookie сайта.

Попробуйте это крутое дополнение FF, чтобы получить правильные wgetссылки

А также, особенно если мы говорим об известной рабочей станции, а не случайной, вы, конечно, можете установить клиент Dropbox. Это будет самый простой способ, просто пусть ваш ящик будет частью вашей файловой структуры и избавит от необходимости сложных загрузок.
Смотрите этот пост askubuntu.com и страницу загрузки Dropbox .

amotzg
источник
4
При попытке получить прямую ссылку в браузере всплывает объявление о возможности обновления. Я вижу другой ответ ( superuser.com/a/486351/106977 ) ?dl=1, но он также не позволяет получить доступ к ссылке (вероятно, из-за того, что Box запрещает использование, если вы не обновитесь).
bgoodr
@amotzg есть ли способ возобновить загрузку с Dropbox с флагом --continue? Кажется, не работает для меня. ( unix.stackexchange.com/questions/174850/… )
praagagupd
@PrayagUpd, нашел этот stackoverflow.com/questions/18084677/… .
amotzg
1
Это дополнение помогло с общей ссылкой на Dropbox, которая требует пароль для загрузки. Обратите внимание: если щелкнуть правой кнопкой мыши кнопку «скачать», при выборе cliget вы получите URL-адрес для вывода? Dl = 0, который является файлом меньшего размера. Изменение этого значения на? Dl = 1 дает правильный путь загрузки.
JonTheNiceGuy
116

Просто добавьте ?dl=1в конце ссылки! Например:https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1

Это должно дать вам точный поиск файла без добавления чего-либо в файл.

Еще кое-что! Если вы хотите сохранить файл в другом месте, используйте -Oопцию

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

И если вы хотите иметь немного GUI, вы можете использовать, zenityчтобы отметить место, куда файл будет загружен!

Вот пример кода:

#!/bin/bash
dir=$(zenity --file-selection --directory)
wget -O $dir/test.txt "https://www.dropbox.com/s/mx9eqve5l2ipgyk/test.txt?dl=1"
Исмаэль Сеги
источник
Это потрясающе, работает из коробки ...
slotishtype
Просто воспользовался вашим предложением, чтобы получить общую папку, и получил удивительный zip-файл (Miss Name). Потрясающие! Большое спасибо!!
Рафарино
1
Гораздо лучший ответ, чем принятый. Это очень помогло, спасибо.
Сейрия
3
Этот метод все еще работает? Используя команду, wget 'https://www.dropbox.com/sh/my_folder_url?dl=1'я продолжаю получать ERROR 400: Bad Request.
Поль Ружье
Теперь я понял 500 Internal Server Error, что Dropbox - настоящая хрень.
Авио
15

Dropbox изменил его так, что wgetбудет делать правильные вещи и извлекать файл, а не вставку.

Используйте «Share Link» для получения прямой ссылки на файл.

Райан
источник
Это должен быть правильный ответ, он тривиален со ссылкой на ссылку.
davidparks21
Приятно! Я получил wget: No matchвывод, который был решен с помощью ссылки, заключенной в одинарные кавычки (возможно, из-за ссылки ?в URL)
Matifou
3

Видел этот вопрос и думал, что это может помочь кому-то, пытающемуся загрузить много файлов одновременно.

Вот небольшой Windows CMD / Batch скрипт, который вы можете использовать.
Его можно легко настроить для работы под оболочкой Bash (Mac / Linux / etc).
Он использует CURL . WGET также должен работать с некоторыми незначительными изменениями.

1. Установите Curl для Windows.

2. Поместите отдельные ссылки SHARED в текстовый файл (по 1 на строку).

3. Настройте все параметры «? Dl = 0» в текстовом файле на «? Dl = 1» и сохраните.

4. Скопируйте приведенный ниже скрипт в файл с именем 'geturllist.cmd' (или по вашему выбору).

5. Откройте приглашение CMD и выполните сценарий CMD.

Загруженные файлы появятся в текущем рабочем каталоге, из которого вы выполнили скрипт.

ПРИМЕЧАНИЕ.
У вас должны быть правильно отформатированные ОБЩИЕ ССЫЛКИ, которые может открыть «Любой, у кого есть ссылка». Этот скрипт НЕ работает с защищенными паролем ссылками или общими ресурсами, основанными на логине / электронной почте Dropbox.
ПРИМЕЧАНИЕ.
Если размер одного файла или группы файлов (с автоматическим заархивированием) превышает определенный размер, произойдет сбой с ошибкой («Файл (zip) слишком велик. Пожалуйста, добавьте его в свой Dropbox.»). В этом случае вы должны сделать, как говорится .. этот скрипт не будет работать, потому что ссылка для совместного использования не может быть загружена напрямую.

Пример текстового файла:
(«RandomShareCharacters / Here» будет заменено тем, что написано в ссылке «Поделиться»)

 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.

Пример использования:

geturllist.cmd X:\somepath\dropbox.txt

bshea
источник
1
Голоса без комментариев прекрасны. Благодарю. Больно твои чувства?
bshea
1
Невероятно, почему люди проголосовали против этого ответа, проголосовали.
Джосюла Кришна
0

Вы получите что-то с именем «файл» или какое-то странное имя ... Просто переименование этого файла в любое, что вы хотите, поможет. Фактически загруженный файл - это файл, который вы хотели получить только со странным именем и без атрибута типа файла.

Kruno
источник
-2

Самый простой и самый гарантированный способ для этого типа загрузок - использовать инструменты разработчика Google Chrome.

  • Нажмите F12, чтобы открыть инструменты разработчика
  • Перейти на вкладку сети
  • Нажмите на ссылку для загрузки, чтобы начать загрузку
  • Найти событие загрузки в сети событий
  • Щелкните правой кнопкой мыши по строке и выберите «Копировать как cURL (bash)» или окна, если хотите

  • URL будет выглядеть так:

    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"
    
  • Заменить curlнаwget

  • Заменить -H "some headers"на--header="some headers"
  • Вставьте это в окно bash и добавьте -oпараметр. (Если вы не добавите этот параметр, вывод будет выведен на консоль.
  • Нажмите Enter и наслаждайтесь загрузкой.
Хусейн Яглы
источник
OP запросил использование с помощью wget.
twerdster
Вы можете легко конвертировать из curl в wget: stackoverflow.com/a/25044709/531524
Hüseyin Yağlı