Данный способ работает во всех браузерах, на странице мои ацдиозаписи, и в поиске аудио.
1. Откройте "вконтакте" страницу с музыкой с которой вы собираетесь скачать.
2. Копируйте в буфер код, приведенный ниже. Для скачивания со страницы "Мои аудиозаписи"
Для скачивания со страницы "Поиск музыки"
3. В окне контакта подменяем URL. Вместо http://www.vkontakte.ru/audio... Вставляем скопированный код и жмемEnter.
4. Вам показалось что ничего не произошло? Тогда нажмите на play и посмотрите ) Жмем и качаем в удобное место на диске вашего компьютера )
5. На вашем компьютере встроен QuickTimePlayer? Тогда сохраняем файл средствами браузера.
6. Еще может случиться так, что в Вашем браузере отключено Меню. Тогда смотрите ниже пример как его вернуть обратно для Internet Explorer. В других браузерах это делается аналогичным образом. Жмем правой кнопкой мыши в верхней области браузера и выбираем пункт "Строка меню".
7. Скачивание музыки в браузере Chrome. Все просто! После нажаия на Play появится вот такое серое окно. Нажмите в любом месте окна правой кнопкой мыши и далее "Сохранить как".
Вот и все, информация ниже будет интересна тем, кому интересно как этот скрипт работает.
Информация для тех, кому интересно как же это все работает. И как можно было самому до всего этого дойти. Конечно тут без знания программирования, HTML, Javascript не обойтись. Если у Вас нет этих знаний, то скорее всего информация, которая пойдет ниже, Вам не поможет.
Первое что нужно понять - это что такое подмена URL в браузере и что нам дает вставка такогоJavascript кода в адресной строке. Так вот, когда страница контакта с музыкой открыта, то HtmlDocument браузера содержится полностью ее код. И здесь не только HTML, но и подгруженныеCSS, Javascripts и так далее. Когда же мы вставляем Javascript в адресную строку, то он тут же прописывается в HtmlDocument.
Вернемся к странице с музыкой, давайте посмотрим ее HTML код. В нем вы можете увидеть тэги, в которые завернуты мини-плееры для песен. Выглядят они следующим образом:
По названию любой композиции легко можно найти кусок 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. Пользуйтесь на здоровье! Источник.