Загрузка на depositfiles.com с помощью curl

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

Небольшая справка. DepositFiles.com — это файловый хостинг, позволяющий закачивать файлы размером до 2 Гб на достаточно хорошей скорости, при этом файл хранится практически вечно (если его кто-нибудь скачивает хотя бы раз в месяц). Для пользователей, не имеющих платного аккаунта (цена — 12wmz в месяц), действует ограничение на число скачиваний с одного IP. Также система имеет неплохую партнерскую программу. В общем, достаточно приятный сервис.

Curl — бесплатная утилита для работы с протоколами HTTP, FTP, SCP, TELNET и другими. С ее помощью, к примеру, можно послать POST-запрос на веб-сервер или скачивать файлы по FTP. Curl поддерживает SSL, кукисы, аутентификацию и другие полезные вещи. Работает как под UNIX, так и под Windows. Скачать можно с curl.haxx.se, пользователи FreeBSD могут поставить ее из портов — /usr/ports/ftp/curl. Вообще-то я предпочел бы использовать утилиту wget, но она не поддерживает multipart/form-data формы.

Заходим на depositfiles.com, смотрим html-код страницы и ищем в нем форму для отправки файлов. У меня она выглядела так:

Код формы на depositfiles.com

Тут мы видим достаточно много аргументов, но на практике, как выяснилось, достаточно отправить только один из них:

<div><input type="file" size="51" name="files" class="file"/></div>

Немного покурив в man-page утилиты curl, я выполнил такую команду:

curl -F "files=@path/to/my/file" http://fileshare261.depositfiles.com/ru/FS261-3u/?X-Progress-ID=4e12cc6de5c56ee0d40fed3f8d73f21c

Адрес для отправки формы тут скопирован из атрибута action формы. В ответ был получен примерно такой ответ (id файла заменен):

<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01 transitional//EN">
<html>
<body>
<script>
try{

document.domain = 'depositfiles.com';
parent.ud_download_url = 'http://depositfiles.com/files/abcdefghi';
parent.ud_delete_url = 'http://depositfiles.com/ru/rmv/0123456789012345';
parent.ud_download_url_truncated = 'http://depositfiles.com/files/abcdefghi';
parent.upload_done();

}catch(err){}
</script>
</body>
</html>

Как видите, тут все достаточно просто и написать скрипт на Perl для автоматической загрузки не представляет собой проблему. Я написал 4 скрипта для загрузки файлов на depositfiles.com, rapidshare.[com|ru] и hotfile.com. Находятся они в этом архиве.

При загрузке больших файлов, в несколько сотен мегабайт, эти скрипты могут сбоить (выяснять причину было лень), но файлы размером несколько мегабайт загружают на отлично. Надеюсь, кому-нибудь они пригодятся.

Подпишитесь на блог с помощью RSS, E-Mail, Google+ или Twitter!
Также, пользуясь случаем, приглашаю вас посетить мой форум.

  • Гость

    не проще ли по фтп?

    например так(linux):
    ncftpput -u [username] -p [password] ftpupload.depositfiles.com [directory_on_server] [path_to_file]

  • the Гость

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

  • http://eax.me/ Безумный Программист

    Пожалуйста. На самом деле меня интересует не только depositfiles.com — хотелось описать универсальный способ, который будет работать с любым файлообменником с веб-интерфейсом и без капчи. А что, используя FTP, возникают проблемы с определением URL?

    • Senior-cu4erenko2010

      Привет Москве из солнечной Украины.Александр,подскажи если можно популярнее такую вещь.Я хочу попробовать подработать на депозитфайле.Как надо закачивать свои файлы,вернее как закачивать я знаю.Как сохранить ссылку которую мне выдаст модератор,или кто там ее выдает,а потом эту ссылку отправить на сайты?Где эту ссылку хранить у себя?Как описывать свой загружаемый файл и т.д. и т.п..Буду очень признателен.

      • http://eax.me/ Безумный Программист

        Ой не советую связываться с заработком таким. По тому, что я слышал-читал, там копейки. На котнекстной рекламе и то проще заработать.

  • SHok

    Вы написали что curl такжэ работает с TELNET, можэте ли вы написать допуттип пример перезагрузки роутэра через TELNET. Я бы сам покурил маны но с английским не очень дружу :)

  • http://eax.me/ Безумный Программист

    Вот это может помочь http://ubuntuforums.org/showthread.php?t=674843

  • Qzaki

    А возможно ли написать скрипт скачки с этих обменников чтоб скрипт скачивал по набору ссылок файл себе на хостинг. И работал автономно

  • Qzaki

    Я имею ввиду с своего рода грабер файов с depositfile

  • http://eax.me/ Безумный Программист

    Можно, почему бы и нет.

  • GRIFON

    сенкс за статью,
    подскажите плиз в чем косяк, авторизируюсь, отправляю файл, получаю ссылку, но этот файл не попадает в загруженные файлы моим аккаунтом
    вот код, он на пхп но какая разница
    [cut-cut-cut]

    • http://eax.me/ Безумный Программист

      Предлагаю обсудить это на моем форуме http://it-talk.org/

      Комментарии в блоге — не лучшее место для выкладывания кода и его обсуждения.

  • KODER

    архив битый..

    • http://eax.me/ Безумный Программист

      Проверил. Не битый. Чем распаковываете?

      • koder

        Странно, если хромом качать, то скачивается архив 0байт.

        А как загруженный файл привязывается к твоей учетной записи? ты ж не где авторизацию не проводишь..

        • http://eax.me/ Безумный Программист

          1. В хроме много есть такого, что и не снилось нашим мудрецам :)
          2. Заливаем под анонимусом.

  • http://www.muzhiks.com Andrew Aronsky

    Загрузка файлов на depositfiles это, конечно, хорошо, но каким образом можно получать ссылки на загружаемые файлы? Попытка просмотреть отправляемые браузером запросы после загрузки файла результатов не принесли. DF не работает без JS. Есть какие-нибудь варианты, Александр?

    • http://eax.me/ Безумный Программист

      А что, скрипты из прилагающегося архива не работают? JS не нужен совершенно. Все необходимое есть в веб-странице, выдаваемой после загрузки.