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

Кажется, я могу загружать только файлы 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

7 ответов

Решение

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

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

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

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

Просто добавь ?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"

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

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

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

Вот небольшой 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

На GitHub есть скрипт Python, который выполняет это:

https://github.com/dpdornseifer/dropbox_download

Также сервер Dropbox не поддерживает возобновление передачи.

Кажется, дропбокс поддерживает использование wget в качестве клиента и автоматически перенаправляет на нужный файл. Или, возможно, wget просто следует за перенаправлениями?

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

Самый простой и самый гарантированный метод для этого типа загрузок - использовать инструменты разработчика 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 и наслаждайтесь загрузкой.
Другие вопросы по тегам