Переход к предыдущей публикации Использование nice, renice, kill, killall для манипулирования процессами во FreeBSD EACCELERATOR hit и httpd-error.log Переход к следущей публикации

Wget и cookies. Закачка в консоли с файлообменников.

Понедельник, 18 февраля, 2008 10:55:51 EET

Исправления от 16 марта, 2009 23:04:08

Выделенные сервера дешевле обычного хостинга

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

Итак, когда-то почти год назад, моя ненаглядная возжелала получить видеоуроки по… кройке и шитью. ;) Она нашла их на одном форуме, где были выложены ссылки, а сами файлы были залиты на rapidshare.com. Ну возжелала значит нужно качать. А качать много, больше трех гигабайт. Ну, надеюсь все знают, что такое файлообменник и как с него обычно качаешь. Платишь деньги за премиум доступ - качаешь без гемороя. Не платишь - получаешь лимиты в виде задержек между скачиваниями одного файла, закачка в один поток и только одного файла одновременно и т.д. Качать три гига на бесплатном аккаунте можно было долго и потому было решено купить премиум-аккаунт.

С этим проблем не возникло. Благо в Сети их сейчас продают “на каждом углу”… Ссылки на архивы собраны в текстовый файл, браузер авторизовался на rapidshare.com и Рапида готова отдавать файлы без всяких глупостей. Закладывай список ссылок в менеджер закачек и качай. Но вот проблемка. С домашнего подключения качать три гига немного будет накладно. Безлимиткой пока не обзавелся. Да и дома постоянно работающий компьютер уже кое-кому надоел. ;) Закачку можно оставить на сервере приятеля, у которого имеется канал в Сеть, хоть и не очень “толстый” зато безлимитный и бесплатный. После закачки можно будет прийти с винтом и слить файлы… И самое основное - будущий сервер “качальщик” запущен на FreeBSD. Вот здесь нам и поможет wget - *nix’овый консольный менеджер закачек.

Wget, пожалуй, наиболее известный и удобный консольный “качальщик”. Он умеет очень много для того, чтобы полностью решить вопрос с автоматизацией закачки любых объемов. Программа умеет работать в фоновом режиме, поддерживать докачку, работать через прокси… Да ну мало ли. Из всего многообразия настроек, также следует упомянуть возможность ограничения скорости закачки. Это для нас очень актуально.

Немаловажен еще и тот факт, что справка по wget появляется у Вас на русском языке если у Вас русифицированая консоль.

Вот вывод команды wget –help

$ wget -h
GNU Wget 1.11, программа для загрузки файлов из сети в автономном режиме.
Использование: wget [ОПЦИЯ]... [URL]...

Обязательные аргументы для длинных опций также являются обязательными и для коротких опций.

Запуск:
  -V,  --version           вывод версии Wget и выход.
  -h,  --help              вывод этой справки.
  -b,  --background        после запуска перейти в фоновый режим.
  -e,  --execute=КОМАНДА   выполнить команду в стиле `.wgetrc'.

Журналирование и входной файл:
  -o,  --output-file=ФАЙЛ    записывать сообщения в ФАЙЛ.
  -a,  --append-output=ФАЙЛ  дописывать сообщения в конец ФАЙЛА.
  -d,  --debug               вывод большого количества отладочной информации.
  -q,  --quiet               молча (без выходных данных).
  -v,  --verbose             подробный вывод (по умолчанию).
  -nv, --no-verbose          отключение подробного режима, но не полностью.
  -i,  --input-file=ФАЙЛ     загрузка URL'ов, найденных в ФАЙЛЕ.
  -F,  --force-html          считать, что входной файл - HTML.
  -B,  --base=URL            добавление URL в начало относительных ссылок в файле -F -i.

Загрузка:
  -t,  --tries=ЧИСЛО             установить ЧИСЛО повторных попыток (0 без ограничения).
       --retry-connrefused       повторять, даже если в подключении отказано.
  -O,  --output-document=ФАЙЛ    записывать документы в ФАЙЛ.
  -nc, --no-clobber              пропускать загрузки, которые приведут к
                                 загрузке уже существующих файлов.
  -c,  --continue                возобновить загрузку частично загруженного файла.
       --progress=ТИП            выбрать тип индикатора выполнения.
  -N,  --timestamping            не загружать повторно файлы, только если они
                                 не новее, чем локальные.
  -S,  --server-response         вывод ответа сервера.
       --spider                  ничего не загружать.
  -T,  --timeout=СЕКУНДЫ         установка значений всех тайм-аутов в СЕКУНДЫ.
       --dns-timeout=СЕК         установка тайм-аута поиска в DNS в СЕК.
       --connect-timeout=СЕК     установка тайм-аута подключения в СЕК.
       --read-timeout=СЕК        установка тайм-аута чтения в СЕК.
  -w,  --wait=СЕКУНДЫ            пауза в СЕКУНДАХ между загрузками.
       --waitretry=СЕКУНДЫ       пауза в 1..СЕКУНДЫ между повторными попытками загрузки.
       --random-wait             пауза в 0...2*WAIT секунд между загрузками.
       --no-proxy                явно выключить прокси.
  -Q,  --quota=ЧИСЛО             установить величину квоты загрузки в ЧИСЛО.
       --bind-address=АДРЕС      привязка к АДРЕСУ (имя хоста или IP) локального хоста.
       --limit-rate=СКОРОСТЬ     ограничение СКОРОСТИ загрузки.
       --no-dns-cache            отключение кэширования поисковых DNS-запросов.
       --restrict-file-names=ОС  ограничение на символы в именах файлов,
                                 использование которых допускает ОС.
       --ignore-case             игнорировать регистр при сопоставлении
                                 файлов и/или каталогов.
  -4,  --inet4-only              подключаться только к адресам IPv4.
  -6,  --inet6-only              подключаться только к адресам IPv6.
       --prefer-family=СЕМЕЙСТВО подключаться сначала к адресам указанного семейства,
                                 может быть IPv6, IPv4 или ничего.
       --user=ПОЛЬЗОВАТЕЛЬ       установить и ftp- и http-пользователя в ПОЛЬЗОВАТЕЛЬ.
       --password=ПАРОЛЬ         установить и ftp- и http-пароль в ПАРОЛЬ.

Каталоги:
  -nd, --no-directories           не создавать каталоги.
  -x,  --force-directories        принудительно создавать каталоги.
  -nH, --no-host-directories      не создавать каталоги как на хосте.
       --protocol-directories     использовать имя протокола в каталогах.
  -P,  --directory-prefix=ПРЕФИКС сохранять файлы в ПРЕФИКС/...
       --cut-dirs=ЧИСЛО           игнорировать ЧИСЛО компонентов удалённого каталога.

Опции HTTP:
       --http-user=ПОЛЬЗОВАТЕЛЬ установить http-пользователя в ПОЛЬЗОВАТЕЛЬ.
       --http-password=ПАРОЛЬ  установить http-пароль в ПАРОЛЬ.
       --no-cache              отвергать кэшированные сервером данные.
  -E,  --html-extension        сохранять HTML-документы с расширением `.html'.
       --ignore-length         игнорировать поле заголовка `Content-Length'.
       --header=СТРОКА         вставить СТРОКУ между заголовками.
       --max-redirect          максимально допустимое число перенаправлений
                               на страницу.
       --proxy-user=ПОЛЬЗОВАТЕЛЬ установить ПОЛЬЗОВАТЕЛЯ в качестве имени пользователя для прокси.
       --proxy-password=ПАРОЛЬ   установить ПАРОЛЬ в качестве пароля для прокси.
       --referer=URL           включить в HTTP-запрос заголовок `Referer: URL'.
       --save-headers          сохранять HTTP-заголовки в файл.
  -U,  --user-agent=АГЕНТ      идентифицировать себя как АГЕНТ вместо Wget/ВЕРСИЯ.
       --no-http-keep-alive    отключить поддержание активности HTTP (постоянные подключения).
       --no-cookies            не использовать кукисы.
       --load-cookies=ФАЙЛ     загрузить кукисы из ФАЙЛА перед сеансом.
       --save-cookies=ФАЙЛ     сохранить кукисы в ФАЙЛ после сеанса.
       --keep-session-cookies  загрузить и сохранить кукисы сеанса (непостоянные).
       --post-data=СТРОКА      использовать метод POST; отправка СТРОКИ в качестве данных.
       --post-file=ФАЙЛ        использовать метод POST; отправка содержимого ФАЙЛА.
       --content-disposition   Учитывать заголовок Content-Disposition
                               при выборе имён для локальных файлов
                               (ЭКСПЕРИМЕНТАЛЬНЫЙ).

Опции HTTPS (SSL/TLS):
       --secure-protocol=ПР     выбор безопасного протокола: auto, SSLv2,
                                SSLv3 или TLSv1.
       --no-check-certificate   не проверять сертификат сервера.
       --certificate=FILE       файл сертификата пользователя.
       --certificate-type=ТИП   тип сертификата пользователя: PEM или DER.
       --private-key=ФАЙЛ       файл секретного ключа.
       --private-key-type=ТИП   тип секретного ключа: PEM или DER.
       --ca-certificate=ФАЙЛ    файл с набором CA.
       --ca-directory=КАТ       каталог, в котором хранится список CA.
       --random-file=ФАЙЛ       файл со случайными данными для SSL PRNG.
       --egd-file=ФАЙЛ          файл, определяющий сокет EGD со случайными данными.

Опции FTP:
       --ftp-user=ПОЛЬЗОВАТЕЛЬ установить ftp-пользователя в ПОЛЬЗОВАТЕЛЬ.
       --ftp-password=ПАРОЛЬ   установить ftp-пароль в ПАРОЛЬ.
       --no-remove-listing     не удалять файлы файлы `.listing'.
       --no-glob               выключить маски для имён файлов FTP.
       --no-passive-ftp        отключить "пассивный" режим передачи.
       --retr-symlinks         при рекурсии загружать файлы по ссылкам (не каталоги).
       --preserve-permissions  сохранять права доступа удалённых файлов.

Рекурсивная загрузка:
  -r,  --recursive          включение рекурсивной загрузки.
  -l,  --level=ЧИСЛО        глубина рекурсии (inf и 0 - бесконечность).
       --delete-after       удалять локальные файлы после загрузки.
  -k,  --convert-links      делать ссылки локальными в загруженном HTML.
  -K,  --backup-converted   перед преобразованием файла X делать резервную копию X.orig.
  -m,  --mirror             короткая опция, эквивалентная
                            -N -r -l inf --no-remove-listing.
  -p,  --page-requisites    загрузить все изображения и проч., необходимые для отображения HTML-страницы.
       --strict-comments    включить строгую (SGML) обработку комментариев HTML.

Разрешения/запреты при рекурсии:
  -A,  --accept=СПИСОК             список разрешённых расширений, разделённых запятыми.
  -R,  --reject=СПИСОК             список запрещённых расширений, разделённых запятыми.
  -D,  --domains=СПИСОК            список разрешённых доменов, разделённых запятыми.
       --exclude-domains=СПИСОК    список запрещённых доменов, разделённых запятыми.
       --follow-ftp                следовать по ссылкам FTP в HTML-документах.
       --follow-tags=СПИСОК        список используемых тегов HTML, разделённых запятыми.
       --ignore-tags=СПИСОК        список игнорируемых тегов HTML, разделённых запятыми.
  -H,  --span-hosts                заходить на чужие хосты при рекурсии.
  -L,  --relative                  следовать только по относительным ссылкам.
  -I,  --include-directories=СПИСОК список разрешённых каталогов.
  -X,  --exclude-directories=СПИСОК список исключаемых каталогов.
  -np, --no-parent                 не подниматься в родительский каталог.

Отчёты об ошибках и пожелания отправляйте на <bug-wget@gnu.org>.

В простейшем исполнении wget’ом можно пользоваться вот так:

$ wget http://rapidshare.com/file.rar

Стоит отметить, что если URL адрес ссылки содержит знаки “?” или “&” то его следует брать в кавычки, иначе командный интерпретатор при встрече таких знаков отреагирует по своему как следует оболочке.

Ставим закачку на сервер. Подгружаем текстовый файл со списком ссылок для закачки, например, в папку /home/daemony/download/. В принципе осталась одна маленькая деталь.

Как Рапида понимает “качающий - премиум-пользователь или нет”? Естественно, как это делают все ресурсы в сети Интернет, посредством кукисов (cookies). Если наш wget начнет сейчас качать напрямую ссылки из файла, у него ничего не выйдет и кроме как html страницы с ошибками от Рапиды он не получит. Для того, чтобы сервера rapidshare.com отдали wget’у нужные файлы, он должен отправить сначала свои cookies, в которых указана информация о премиум-аккаунте.

Как эти cookies получить? Очень просто. Из браузера. Обычного оконного браузера, которым Вы пользуетесь каждый день. Я приведу пример для Mozilla Firefox, которым пользуюсь я.

Firefox хранит все свои cookies в профиле пользователя, в файле USERPROFILE/Firefox/Profiles/default/cookies.txt Этот файл представляет собой набор записей, по одной в строке. Авторизуйтесь в премиум-зоне Рапиды (https://ssl.rapidshare.com/) и в этом файле появится соответсвующая запись. Она может быть похожа вот на эту:

 .rapidshare.com	TRUE / FALSE 1531710000	user c1363414-%34%34%34%34%34%30%32%36

Вобщем, поиск по файлу cookies.txt в текстовом редакторе по ключевому слову “rapidshare” Вам поможет. Скопируем ее и вставим в наш текстовый файл кукисов на сервере, где будет работать wget. Теперь все готово, можно запускать!

$ cd /home/daemony/download/
$ wget -bc --limit-rate=32k -i=links.txt –load-cookies=rapid.txt

Вышеприведенная команда запустит wget на скачивание файлов в фоновом режиме, с поддержкой докачки в случае обрыва связи. При этом wget будет качать со скоростью не больше чем 32 килобайта в секунду (256 килобит/с), для закачки будет брать ссылки из файла links.txt и перед началом работы загружать кукисы из файла rapid.txt

Можно забыть о процессе на несколько дней. Он будет работать себе потихоньку в фоне, а мы сможем наблюдать состояние закачки в файле wget.log, который появится в каталоге работы программы и в котором wget будет отображать прогресс закачки.

Похожие публикации

Выделенные сервера дешевле обычного хостинга

Комментариев 9

Meinung 6 мая, 2010 06:37:51 EEST .:. ID #28726 .:.

прикольно вариант с явным указанием лоига и пароля куда лучше чем ковырятся в обозревателе

Daemony 9 марта, 2009 19:40:03 EET .:. ID #6155 .:.

FredyBackSlash, спасибо. Решение действительно довольно симпатичное.

FredyBackSlash 8 марта, 2009 19:55:25 EET .:. ID #6060 .:.

лучше сделать вот так не привязываясь к файрфоксе

wget -=-ссылка-=- –no-check-certificate –post-data=”uselandingpage=1&login=login&password=password” –save-cookies=cookies.txt
wget –load-cookies=cookies.txt -i links.txt
unlink premiumzone.cgi

в файле links.txt список ссылок, можно и без списка по одному файлу

Vladimir 8 декабря, 2008 13:13:10 EET .:. ID #1055 .:.

По поводу cookie интересно почитать еще и аот это
Downloading content from Rapidshare.com using wget and bash

Pe6eHok 13 марта, 2008 15:13:27 EET .:. ID #481 .:.

Можно и так .. Просто у меня в screen мого чего вертится .. тот же rtorrent на пример

Daemony 13 марта, 2008 14:55:03 EET .:. ID #480 .:.

Ну если это так, то спасибо за подсказку.
Кстати, а зачем в screen, если можно wget -bc и в фон его? :)

Pe6eHok 13 марта, 2008 14:52:58 EET .:. ID #479 .:.

Именно так с рапиды и качаю уже года 1,5

P.S. В screen ставлю на ночь :)

Daemony 13 марта, 2008 12:46:54 EET .:. ID #476 .:.

Если я не ошибаюсь, то такой вариант следует указывать в случае использования HTTP авторизации, а не как на рапиде через cookies.

Ошибаюсь? Поправьте. :)

Pe6eHok 13 марта, 2008 12:44:36 EET .:. ID #475 .:.

А не проше указать пароль и логин

wget –http-user=XXXXX –http-password=XXXXXXXXX -=-ссылка-=-

Возник вопрос по этой теме, или есть что добавить? Говорите!

  1. Зарегистрированным пользователям вводить защитный код (captcha) не приходится.
  2. Загрузить свою аватарку Вы сможете, зарегистрировавшись на сервисе www.gravatar.com
Публикуя комментарий Вы подтверждаете, что ознакомились c Правилами и принимаете их!
HOMOSAPIENS ONLY! :)