Главная | Контакты | Настройки СМЕНИТЬ ПАЛИТРУ:

Главная > Программы

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

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

Итак, когда-то почти год назад, моя ненаглядная возжелала получить видеоуроки по: кройке и шитью. Она нашла их на одном форуме, где были выложены ссылки, а сами файлы были залиты на 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/<br>$ wget -bc --limit-rate=32k -i=links.txt -load-cookies=rapid.txt

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

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


Главная > Программы