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

8

Что-то давненько я не писал в блог, верно? В этой заметке я расскажу, как можно закачивать файлы на 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 для автоматической загрузки не представляет собой проблему. Можете считать это домашним заданием, если хотите. Велика вероятность, что скоро я выложу несколько скриптов для закачки на depositfiles.com, rapidshare.ru и другие файловые хостинги. Чтобы ничего не пропустить, подпишитесь на RSS ;)

Update: обещанные скрипты выложил, правда не в этом блоге, а на UnixTalks.ru.

Похожие посты:


  • Гость

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

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

  • the Гость

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

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

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

  • SHok

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

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

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

  • Qzaki

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

  • Qzaki

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

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

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

blog comments powered by Disqus