Скачивание с rutube
Dec. 22nd, 2012 06:46 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Скачивание с rutube.ru по rtmp-ссылкам
Rutube >
Вступление
- rtmpdump / adobehds.php (GNU/Linux, Windows, Android)
- Mozilla Firefox: дополнение UnPlug (GNU/Linux, Windows)
- GUI: Raljeta (Windows)
- GUI: RutubeGet (Windows)
- Hensense Coojah 6 (Windows)
- Orbit Downloader: GrabPro (Windows)
Вступление
Примерно с начала 2010 года рутуб начал переводить выдачу контента своих серверов с обычного HTTP протокола на RTMP.
Подробности мне неизвестны, я лишь немного осведомлен в том, что rtmp-ссылки начали отдаваться в первую очередь иностранным
пользователям, то есть появилось разграничение по геолокации, вычисляемой через IP-адреса (определение страны:
http://rutube.ru/api/geoip/country/). Потом rtmp-ссылки постепенно начали вползать в поля браузеров/менеджеров
закачек российских пользователей; многочисленные сайты по выдаче прямых ссылок на видео начали по-быстрому сдуваться,
выдавая кривые ссылки либо выплевывая невесть что. Известное дополнение для Firefox'а, DownloadHelper, работает
только с http-ссылками, начисто игнорируя RTMP. С июля 2012 года к существующему способу отдачи видео добавилась
технология HDS (HTTP Dynamic Streaming) и отдача уже зашифрованных файлов по RTMP-протоколу.
rtmpdump / adobehds.php (GNU/Linux, Windows, Android)
Оф. сайт/репозиторий: rtmpdump, AdobeHDS.php
MS Windows: rtmpdump-2.4, AdobeHDS.php (PHP + php_curl уже в архиве)
GNU/Linux (Debian Squeeze): rtmpdump >= 2.4., AdobeHDS.php нужно взять из архива для Windows -- он модифицирован для работы с rutube.
sudo apt-get update && apt-get install rtmpdump php5-curl
Rutube отдаёт ссылки на видеоролики по трём технологиям (по состоянию на 25 августа 2012 г.):
- Нешифрованное видео по протоколу RTMP. Для закачки используется rtmpdump (версия не ниже 2.4).
- Шифрованное видео по RTMP. Хоть и скачается rtmpdump'ом, но воспроизвести его не удастся. Решение для этого типа ссылок не найдено.
- Нешифрованное видео по технологии HTTP Dynamic Streaming. Для закачки используется скрипт AdobeHDS.php
Сначала определяем, какой тип отдачи используется для требуемого видеоролика:
На странице ролика в блоке "Код для блога" можно увидеть код для встраивания. Нам нужен ID видео:


Открываем файл с информацией о видео:
http://video.rutube.ru/5bc45bc80ad9f9597a8e1de3e0cf69f6 => http://rutube.ru/trackinfo/5bc45bc80ad9f9597a8e1de3e0cf69f6.xml
http://rutube.ru/embed/5835442 => http://rutube.ru/trackinfo/5835442.xml
В этом файле нужна ссылка из тега <videoBalancer>/<default>: http://bl.rutube.ru/5bc45bc80ad9f9597a8e1de3e0cf69f6.f4m
Это файл-манифест. Открыв его, смотрим на теги <baseURL> и <media>. Определяем тип отдачи по их содержимому:
- RTMP, если baseURL == rtmp://video-N-N.rutube.ru/bla-bla-bla, а атрибут url тега media содержит расширение .mp4 в тексте ссылки.
- Шифрованное видео по RTMP, если тот же атрибут url содержит расширение .f4f. Скачанное видео не воспроизводится.
- Нешифрованное видео по HDS, если baseURL == http://video-N-N.rutube.ru, тег(и) media указывает на манифест (ссылка с расширением .f4m) либо сразу на mp4-файл.
RTMP
Тег <baseURL> содержит имя хоста, порт и переменную "app". Атрибут url тега <media> содержит путь к потоку (playpath):
rtmp://video-N-N.rutube.ru(:1935)/<app>/mp4:volNN/movies/.*
|____________host___________|__app__|_____playpath____|
где переменная app может принимать следующие значения:
- vod/
- rutube/
- rutube_vod_[0-9]/
- rutube_vod_[0-9]/_definst_/
Из параметров, предлагаемых дампером (rtmpdump --help), нам нужны следующие:
--rtmp URL (напр. rtmp://host[:port]/) --app Переменная app. --playpath Перезаписывает playpath, указанный в --rtmp --swfUrl Ссылка на swf-плеер. --flv Название конечного FLV-файла. --live Для rtmp-ссылок, переменная app которых равна "vod/".
Примеры закачки ссылок:
rtmp://video-1-12.rutube.ru:1935/rutube_vod_2/_definst_/mp4:vol12/movies/b5/e0/b5e08ad46a65d700dd0da2f7b40e2fc0.mp4?e=1288635285&s=740fa844fc6687ac03681a0eb72d003e
sh/cmd:
rtmpdump --rtmp "rtmp://video-1-12.rutube.ru:1935/" --app "rutube_vod_2/_definst_/" --swfUrl "http://rutube.ru/player.swf" --playpath "mp4:vol12/movies/b5/e0/b5e08ad46a65d700dd0da2f7b40e2fc0.mp4?e=1288635285&s=740fa844fc6687ac03681a0eb72d003e" --flv "output_video.flv"
rtmp://video-102-1.rutube.ru:1935/vod/mp4:rutube/vol41/movies/a2/05/a205ff4b2073c18522253585224f7a7c.mp4?e=1287342905&s=813f44d26fe97cd7ef670cb8d44e36e2
sh/cmd:
rtmpdump --rtmp "rtmp://video-1-12.rutube.ru:1935/" --app "vod/" --swfUrl "http://rutube.ru/player.swf" --playpath "mp4:rutube/vol41/movies/a2/05/a205ff4b2073c18522253585224f7a7c.mp4?e=128734&s=813f44d26fe97cd7ef670cb8d4" --flv "output_video.flv" --live
Не забудьте про параметр --live, используемый при переменной app равной "vod/". Иначе видео будет качаться в размере, в два-три раза превышающий указанный на сайте. Также --swfUrl, он должен быть равен адресу флеш-плеера: "http://rutube.ru/player.swf".
HDS
С HDS-ссылками проще, достаточно ссылки на f4m-файл:sh/cmd:
php.exe AdobeHDS.php --manifest "http://bl.rutube.ru/5bc45bc80ad9f9597a8e1de3e0cf69f6.f4m" --outfile "output_video.mp4"
Mozilla Firefox: UnPlug + rtmpdump
Скачиванием архив с rtmpdump по ссылке из раздела выше и распаковываем его. Устанавливаем дополнение, затем заходим в его настройки и выбираем вкладку Downloads:

Жмём "Edit" и в появившемся окне указываем путь к ранее распакованному файлу rtmpdump.exe. Открываем страницу с нужным роликом и вызываем UnPlug. Появится окно с предлагающимися для закачки ссылками. Download.

Raljeta (Windows)
Оболочка к утилите rtmpdump. Ссылка и справка по использованию на странице программы.
RutubeGet (Windows)
Еще одна оболочка (GUI) для rtmpdump, настроенная специально для работы с сайтом rutube. // Alina
Hensense Coojah 6 (Windows)
Hensense Coojah 6 - с официального сайта
Моя сборка - патченая от показа рекламных баннеров и почти полностью русифицированная.
Для запуска требуются права администратора.
UPD Coojah перестал качать ссылки с app="vod".
В принципе, ничего сложного в работе с программой нет. Основной момент в том, что мы разрешаем Кудже внедряться в наш браузер и следить, каким содержимым он промышляет. Внедрение происходит путём инжектирования поставляемой с программой библиотеки URLSniffer.dll в процесс нашего любимого инет-серфера.
Причем есть такой момент с Авастом 5.0: при загрузке/выгрузке сниффера какой-то из модулей Аваста сразу же зависает, проявляется это в нерабочем интернете в том браузере, в который мы внедрились. После перезапуска модулей все работает, причем всё это безобразие проявляется только при первой загрузке сниффера в память – в остальное время библиотека тихо висит в памяти и никому не мешает.
Запускаем CooJah.exe, и сразу же появляется окно, предлагающее установить наблюдение (изображения кликабельны).
Видим сообщение о необходимости перезапуска программы. Готово.
Теперь идем на любую страницу с Rutube (под любой я подразумеваю как сам сайт Рутуба с роликами на нем, так и всевозможные сайты, которые используют встроенные видео на основе RuTube (а также и Myvi, Mail, Vimeo и т.д.) Жмём на плэй, ролик проинициализирует подключение к серверу, если прогресс закачки пополз/либо вы уверены, что ролик точно начался – бежим в Куджи, открываем вкладку "Видео" и видим:
Так, ссылку мы отловили. Как видите, мне попалась сначала http-ссылка, которая также успешно отловилась наравне с rtmp. Правый клик по строке с видео -> "Скачать Blader‘ом".
Запускается Blader с уже прописанными данными для закачки по RTMP. Остаётся указать желаемые путь и имя файла, и вперёд.
Загрузка началась.
Orbit Downloader: GrabPro (Windows)
Для этого способа будет использоваться Internet Explorer. Мы установим Orbit Downloader с включением надстройки GrabPro для IE. Не путать со сниффером Grab++, который может следить за сетевой активностью в браузерах Mozilla Firefox, Opera и т.д., но тем не менее бесполезен в деле отлова rtmp-потока с rutube. Отличие этого способа от rtmpdump/Coojah в том, что видео захватывается по мере его просмотра в браузере и, самое главное, сохраняется в файл.
Устанавливая Orbit Downloader, отмечаем опцию "Enable GrabPro for Internet Explorer":

Открываем Internet Explorer, сверху должна появиться панель GrabPro:

Открываем страницу с нужным видеороликом и начинаем просмотр ролика. При этом панель проявит активность:

В списке два элемента. Первый - реклама при старте ролика, второй - нужный нам поток stream.flv. Естественно, по мере роста количества просмотренных роликов этот список будет увеличиваться (для данной вкладки браузера, т.е. для каждой вкладки создается свой список):

Download it. Начинается захват видео. Проигрывание ролика останавливать нельзя - иначе получите ровно столько видео, сколько удалось захватить до момента паузы. После полного проигрывания ролика информация о файле переместится в список завершенных:

http://tradiz.org/rutube/skachivanie-s-rutuberu-po-rtmp-ssylkam