Предисловие
Здравствуйте. В этой статье я поделюсь с вами пожалуй единственным способом получения ссылки на видео из контакта.
Всё началось с того, когда мне в процессе разработки своего 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/videos750c48ae2867-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-<ag=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-<ag=1423ac11&vkid=92359355&
Отлично! Это говорит нам о том, что мы все таки можем достать прямую ссылку!
Алгоритм получения ссылки
1) С помощью запроса к API получаем id видео и ссылку на плеер
2) С помощью регулярок парсим код на наличие строки с параметром vtag и вытаскиваем идентификатор
3) Строим прямую ссылку:
465.gt3.vkadre.ru/assets/videos/идентификатор-id видеозаписи.vk.формат