s

Данный способ работает во всех браузерах, на странице мои ацдиозаписи, и в поиске аудио. 


1. Откройте "вконтакте" страницу с музыкой с которой вы собираетесь скачать. 


2. Копируйте в буфер код, приведенный ниже. 
Для скачивания со страницы "Мои аудиозаписи"

Для скачивания со страницы "Поиск музыки"


 

3. В окне контакта подменяем URL. Вместо http://www.vkontakte.ru/audio... Вставляем скопированный код и жмем Enter.

4. Вам показалось что ничего не произошло? Тогда нажмите на play и посмотрите ) Жмем и качаем в удобное место на диске вашего компьютера )

5. На вашем компьютере встроен QuickTimePlayer? Тогда сохраняем файл средствами браузера. 


6. Еще может случиться так, что в Вашем браузере отключено Меню. Тогда смотрите ниже пример как его вернуть обратно для Internet Explorer. В других браузерах это делается аналогичным образом. Жмем правой кнопкой мыши в верхней области браузера и выбираем пункт "Строка меню".


7. Скачивание музыки в браузере Chrome. Все просто! После нажаия на Play появится вот такое серое окно. Нажмите в любом месте окна правой кнопкой мыши и далее "Сохранить как".


Вот и все, информация ниже будет интересна тем, кому интересно как этот скрипт работает.

Информация для тех, кому интересно как же это все работает. И как можно было самому до всего этого дойти. Конечно тут без знания программирования, HTMLJavascript не обойтись. Если у Вас нет этих знаний, то скорее всего информация, которая пойдет ниже, Вам не поможет.

    Первое что нужно понять - это что такое подмена URL в браузере и что нам дает вставка такогоJavascript кода в адресной строке. Так вот, когда страница контакта с музыкой открыта, то HtmlDocument браузера содержится полностью ее код. И здесь не только HTML, но и подгруженныеCSSJavascripts и так далее. Когда же мы вставляем Javascript в адресную строку, то он тут же прописывается в HtmlDocument.


    Вернемся к странице с музыкой, давайте посмотрим ее HTML код. В нем вы можете увидеть тэги, в которые завернуты мини-плееры для песен. Выглядят они следующим образом:

<tr>
 <td style="width: 20px; vertical-align:top">
  <img class="playimg" 
          onclick="return operate(63101308,4373,18572987,'037180c89420',279);" 
          id="imgbutton63101308" nosorthandle="true" src="images/play.gif"/>
 </td>
 <td style="width: 440px;">
  <div style='float:left'>
   <b id="performer63101308">
    <a href='gsearch.php?section=audio&c[q]=Alexander Rybak'>Alexander Rybak</a>
   </b> -
   <span id="title63101308">Fairytale (Subway Funk drum'n'bass bootleg)</span>
   </div><div class="duration">4:39</div>
 </td>
</tr>

    По названию любой композиции легко можно найти кусок HTML кода, отвечающий за отображение плеера для этой песни. Посмотрим внимательнее на этот блок. В нем видно, что при нажатии на картинку с классом playimg вызывается некоторая функцияoperate(63101308,4373,18572987,'037180c89420',279). Мне кажется, что тут даже из названий все понятно. Очевидно, что функция operate и есть та самая функция, которая заставляет зазвучать песню. Будем искать ее реализацию.

    Смотрим снова HTML код страницы, а именно ищем в head подключение Javascript-ов. В коде можно найти целых 7 таких подключений. К счастью их названия говорят сами за себя, поэтому нам не придется искать нашу функцию во всех, а мы сразу заглянем в /js/audio.js. Открыть этот файл можно по адресу http://vkontakte.ru/js/audio.js. Если вы воспользуетесь поиском и найдете в файле функциюoperate, то здесь вы увидите, что данная функция разбирает входные параметры и с ними вызывает другую функцию doOperate. Сейчас мне интересна функция doOperate, т.к. в ней происходит классная вещь: параметры записываются в некий массив fileInfo! А нам разве не mp3 файл вытащить нужно?

    Осталось понять что из себя представляет структура fileInfo, т.е. как из нее получить имя файла. Если еще покопаться в Javascript файле, то можно найти очень много интересных функций. Не буду описывать все мои поиски, основной находкой было то, что есть еще некая флэшка, находящаяся по адресу http://vkontakte.ru/swf/AudioPlayer_wall.swf. Я ее зачем-то выкачал, думал декомпилироваться прийдется. Потом вспомнил, что к флэшке все равно по GET или POST запросу пойдет обращение. Поэтому все обошлось без декомпиляций и помог мне обычный HTTP сниффер. Зашел я на страницу с песнями, запустил сниффер, нажал Play и увидел, что запрос идет сначала к флэшке, а потом уходит по адресу http://cs4373.vkontakte.ru/u18572987/audio/037180c89420.mp3. О да, этот URL имеет много общего с параметрами, передающимися в функцию operate.

    Кстати, флэшка эта похоже отвечает только за отображение бегунка, т.к. в нее никакие данные по HTTP не передавались, но все могло быть иначе. Конечно я сделал много лишних шагов. Можно было сразу сниффером воспользоваться, т.к. понятно, что mp3 где-то удаленно хранится и к ней 100% будет идти обращение. Тогда бы нам вообще никакого дела до флэшки не было. Но я надеюсь описание всего хода моих мыслей поможет Вам в поисках при решении других задач. 

    Дело остается за малым: написать свою функцию operate, которая будет обрабатывать событиеonclick и отдавать нам mp3-ку с сервера контакта. Для тех, кто увлекся и забыл: функция была приведена в начале статьи. Чтобы она сработала, мы ее просто вставляем в адресную строку браузера, подменяя ей ту, что была загружена вместе со страницей в HtmlDocument.  Пользуйтесь на здоровье!

Источник.
 

 

 

 

главная ]        предлагаем ]        работаем ]        встречаемся ]        пишем ]


[паранормальный кефир]
© 2010 ООО "Пестрый Кот" Екатеринбург

 

 

 

 


Телефон: +7 (343) 298 00 38
Факс: +7 (343) 298 00 38