29 декабря 2011 в 22:44

Получение прямой ссылки на видео vkontakte из песочницы

Предисловие


Здравствуйте. В этой статье я поделюсь с вами пожалуй единственным способом получения ссылки на видео из контакта.
Всё началось с того, когда мне в процессе разработки своего android-клиента потребовалась функция воспроизведения и скачивания видео. А для этого, естественно необходима ссылка. А как вы знаете, максимум, что мы можем получить — это ссылку на страничку с плеером, откуда прямую ссыль хрен выудишь.
Тогда я начал гуглить на эту тему, но ничего толкового не нашёл.
И тогда я решил придумать свой способ её получения.

Что я придумал


Первым делом я обратил внимание на программу VK Saver. А в частности на их сайт. Там всё происходит таким образом:
1) Вы устанавливаете программу, которая в последствии интегрируется в браузер.
2) Теперь при заходе на страничку с видео у вас внизу появляется кнопочка s, которая ведёт на ссылку вида v.audiovkontakte.ru/video-xxxxx (xxxxxx-это id этого видео.)
3) На этой страничке можно это видео посмотреть и скачать, нажав на специальную кнопочку)

Порывшись в исходном коде этой страницы я кое-что нашёл:

Вот этот элемент:

<form action="/download.php?type=vks&host=465.gt3.vkadre.ru&no_flv=0&vtag=750c48ae2867-&vkid=92359355&uid=0&hd=0&plugin_hash=202cb962ac59075b964b07152d234b70&plugin_ver=3.1.110425.1262&vvideo_id=161693266&artist_name=&clip_name=%25ED%25E5%2B%25E4%25E0%25E9%2B%25C1%25EE%25E3%2B%25F2%25E0%25EA%25EE%25E5%2B%25EF%25F0%25E8%25F1%25ED%25E8%25F2%25F1%25FF%2521" target="_blank" method="POST"><div class="clip_name"><strong>не дай Бог такое приснится!</strong></div><div id="player"><embed src="/images/player/player.swf" width="460" height="345" allowscriptaccess="always" allowfullscreen="true" flashvars="height=345&width=460&file=http://465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv&image=http://465.gt3.vkadre.ru/assets/thumbnails/750c48ae2867-92359355.320.vk.jpg&displayheight=345&searchbar=false" /></div><div class="download_url"><a href="javascript:document.forms[0].submit();" onclick="p = document.getElementById('player'); if (p) {p.style.display = 'none'; p.style.display = 'block'; p.innerHTML = p.innerHTML + ' '}" title="Скачать">СКАЧАТЬ</a>


Обратите внимание на строку
flashvars="height=345&width=460&file=http://465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv&image=http://465.gt3.vkadre.ru/assets/thumbnails/750c48ae2867-92359355.320.vk.jpg&displayheight=345&searchbar=false"


И здесь мы замечаем ссылку 465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv

Перейдя по ней, мы загрузим видео!
По идее это и есть то, что нам нужно.
И обычный пользователь легко может скачать видео, даже не влезая в исходный код.
Но для моих целей это явно не подходило.
Хотя с первого взгляда всё было элементарно: Получаем id видео, строим ссыль на v.audiovkontakte.ru, и парсим с помощью регулярок исходный код на наличие нужной нам ссылки.
Но первая проблема обнаружилась, когда я попытался собрать ссылку и перейти по ней.
Но почему-то меня сразу же выкидывало на главную страницу сайта.
Оказывается, что преход возможен только через нажатие на кнопку.
Поэтому мне пришлось отложить эту идею.
Но у меня остался формат прямой ссылки на видео.
И вроде бы всё хорошо, но нам остаётся неизвестным происхождение одной строки:
465.gt3.vkadre.ru/assets/videos/750c48ae2867-92359355.vk.flv
Скорее всего это какой-то хэш или идентификатор этой записи, и как его получить — неизвестно.

Совсем отчаившись, я решил последний раз глянуть на плеер, ссылку на который мы можем получить либо нажав на кнопку поделится>Получить код видео (
<iframe src="http://vkontakte.ru/video_ext.php?oid=13257647&id=161693266&hash=5817a3ba0588efa8&sd" width="607" height="360" frameborder="0"></iframe>
), либо послав запрос к API, что, я думаю, будет более актуально.

Меня заинтересовал следующий блок:

<param name="flashvars" value="uid=0&vid=161693266&oid=13257647&host=465.gt3.vkadre.ru&vtag=750c48ae2867-&ltag=1423ac11&vkid=92359355&md_title=%D0%BD%D0%B5+%D0%B4%D0%B0%D0%B9+%D0%91%D0%BE%D0%B3+%D1%82%D0%B0%D0%BA%D0%BE%D0%B5+%D0%BF%D1%80%D0%B8%D1%81%D0%BD%D0%B8%D1%82%D1%81%D1%8F%21&md_author=%D0%94%D0%B8%D0%BC%D0%BE%D0%BD+%D0%A8%D0%B8%D1%80%D0%BE%D0%BA%D0%BE%D0%B2&hd=0&no_flv=0&hd_def=-1&dbg_on=0&t=&thumb=http://465.gt3.vkadre.ru/assets/thumbnails/1423ac1192359355.460.vk.jpg&hash=3b900fad1e7a6c5606e40e31273ca26d&hash2=5817a3ba0588efa8&is_vk=0&is_ext=1&lang_volume_on=%D0%92%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C+%D0%B7%D0%B2%D1%83%D0%BA&lang_volume_off=%D0%A3%D0%B1%D1%80%D0%B0%D1%82%D1%8C+%D0%B7%D0%B2%D1%83%D0%BA&lang_volume=%D0%93%D1%80%D0%BE%D0%BC%D0%BA%D0%BE%D1%81%D1%82%D1%8C&lang_hdsd=%D0%A1%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C+%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE&lang_fullscreen=%D0%9D%D0%B0+%D0%B2%D0%B5%D1%81%D1%8C+%D1%8D%D0%BA%D1%80%D0%B0%D0%BD&lang_window=%D0%A1%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C&lang_rotate=%D0%9F%D0%BE%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C&video_play_hd=%D0%A1%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C+%D0%B2+%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%BE%D0%BC+%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5&video_stop_loading=%D0%9E%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C+%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D1%83&video_player_version=%D0%92%D0%9A%D0%BE%D0%BD%D1%82%D0%B0%D0%BA%D1%82%D0%B5+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE+%D0%BF%D0%BB%D0%B5%D0%B5%D1%80+&video_player_author=%D0%90%D0%B2%D1%82%D0%BE%D1%80+%D0%BF%D0%BB%D0%B5%D0%B5%D1%80%D0%B0+-+%D0%90%D0%BB%D0%B5%D0%BA%D1%81%D0%B5%D0%B9+%D0%A5%D0%B0%D1%80%D1%8C%D0%BA%D0%BE%D0%B2&goto_orig_video=%D0%9F%D0%B5%D1%80%D0%B5%D0%B9%D1%82%D0%B8+%D0%BA+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D0%B8&video_get_video_code=%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+%D0%BA%D0%BE%D0%B4+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE&video_load_error=%D0%92%D0%B8%D0%B4%D0%B5%D0%BE%D1%84%D0%B0%D0%B9%D0%BB+%D0%B5%D1%89%D0%B5+%D0%BD%D0%B5+%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D0%BB%D1%81%D1%8F+%D0%B8%D0%BB%D0%B8+%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80+%D1%81+%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%BC+%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE+%D0%BD%D0%B5%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B5%D0%BD&video_get_current_url=%D0%9A%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D1%83+%D0%BD%D0%B0+%D0%BA%D0%B0%D0%B4%D1%80"></param>


А если проверить его на наличие совпадений с тем самым хешем, то он будет сдесь: value=«uid=0&vid=161693266&oid=13257647&host=465.gt3.vkadre.ru&vtag=750c48ae2867-&ltag=1423ac11&vkid=92359355&

Отлично! Это говорит нам о том, что мы все таки можем достать прямую ссылку!

Алгоритм получения ссылки



1) С помощью запроса к API получаем id видео и ссылку на плеер
2) С помощью регулярок парсим код на наличие строки с параметром vtag и вытаскиваем идентификатор
3) Строим прямую ссылку:
465.gt3.vkadre.ru/assets/videos/идентификатор-id видеозаписи.vk.формат
+1
29973
33
trollface 3,0

Комментарии (12)

+15
DoctorChaos, #
1. открываем firebug/dragnfly/etc.
2. запускаем видео.
3. смотрим, куда пошел запрос.
4. ????
5. PROFIT!!!
+3
gvsmirnov, #
Автор топика же автоматический способ это сделать искал, чтобы в свой андроид-клиент для вконтактика впиндюрить. Признайтесь, только тему прочитали?
+1
oe24, #
Получение прямой ссылки на видеозапись ВКонтакте, возможно, также с помощью сервиса Savefrom.net и их расширений для браузеров. Так что Ваш способ — далеко не единственный.
Так что могли бы его назвать техническим способом, а то звучит, как популярный способ)
0
xrays72, #
Я через этот набор js-скриптов всё скачиваю (+ всякие дополнительные функции). Ещё нравится, то что через эти скрипты можно увидеть оригиналы фото, которые заливал пользователь (на выбор HD3, HD2, HD1).
+1
SpaceW, #
Flashget + Flashgot под мозиллу — ловит видео и аудио почти везде.
+1
volnov, #
Flashgot с головой хватает.
+1
Useless_guy, #
Сейчас, делая видео-плеер для контакта под WP7, обнаружил аж целых два способа получить ссылку на видео:
1) Через официальный api можно получить ссылку на страницу с плеером, откуда url можно вытащить банальной регуляркой.
Плюсы: очень просто сделать. Дает тамбнейлы вплоть до 320p
Минусы: API страшно глючит, сегодня утром пробовал и не смог получить нормальную ссылку, получалась каша. Невозможно получить видео, с качеством выше, чем 360p (возможно это опять же глюк).
2) Парсить al_video.
Плюсы: работает :D
Минусы: пока разбирался с парсингом, 10% моих волос поседели. Возможно в будущем изменится способ получения, тогда придется переписывать. Даёт тамбнейлы в низком качестве.

Если людям интересно, могу написать подробнее об этом, вместе с авторизацией, плюс гибридны вариант, сочетающих плюсы первого и второго похода.
+2
imsamurai, #
Уважаемый, вы сломали хабр)
0
ShadowPrince, #
Оказывается, что преход возможен только через нажатие на кнопку.

Так отправьте не GET, а POST запрос с необходимыми данными!
0
echoes, #
Еще в Safari можно открыть окно «Активность» (Command+Option+A), там найти flv-файл и скачать его.
0
kadukmm, #
Алгоритм получения прямой ссылки на видео vkontakte:
1) Купить Mac
2) Запустить Safari
3) Открыть видео
4) Открыть окно «Активность» (Command+Option+A)
5) Найти там flv-файл и скачать его!
6) PROFIT!
0
echoes, #
Первый пункт необязателен — Safari и для Windows есть.

Только зарегистрированные пользователи могут оставлять комментарии.
Войдите, пожалуйста.