Роман Кистин, сейчас не могу точно сказать насчёт алгоритма шифрования, но указанная ссылка успешно расшифровывается кодом из ответа и с помощью онлайн сервиса, где не внесены никакие изменения.
Роман Кистин, получение аудио работает, но к id нужно добавить через символ _ два хэша, третий и шестой, которые берутся из массива, который получается разбивкой строки из data-audio по символу / . Судя по исходному коду, хэши могут быть пустыми. Эти строки также есть в исходном коде страницы.
Роман Кистин, токен от Kate Mobile, полученный с помощью example_microg.php или example_droidguard_str.php, подходит только для usage/example_kate.php. Токен, секрет и ID устройства, полученные с помощью example_vkofficial.php, подходят только для usage/example_vkofficial.php. Это и в комментариях в примерах использования написано.
Роман Кистин вы используете не тот токен. Токен из цифр нужен для GMS, а токен ВК — это последняя строка, которую выводит скрипт. Поиск по аудио можно делать и с помощью токена от официального клиента, как в первом вызове API в example_vkofficial.php.
ILoveYAnny способ с расшифровкой ссылок актуален, алгоритм пока не поменялся. Антон Тихомиров там разве не достаточно поменять User-Agent? Поставил в User-Agent Switcher в Chrome значение этого заголовка как для IPhone 6 и меня пустило даже без авторизации.
ILoveYAnny, в мобильной версии прямые ссылки на видео есть в коде страницы, ещё можно послать такой запрос
t = new XMLHttpRequest();
t.open("POST", "https://vk.com/al_video.php", true);
t.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
t.send("act=show&al=1&video=-155639180_456239126");
ovt00, едва ли здесь что-то можно придумать. Скорее всего там просто чёрный список IP-адресов для определённых аудиозаписей. При использовании Audio API тоже можно получить не все аудиозаписи.
Антон Тихомиров, Если расшифрованная ссылка будет прямо в коде страницы — чем это отличается от отсутствия шифровки вообще? Я, наверное, опять не так понял. Вообще, если бы существовал стопроцентно надёжный способ шифровки, он был бы уже реализован ВКонтакте.
alexchervon Формируется на сервере, по определённому методу шифровки, аналогичный алгоритм приведён на Github. Потом клиент получает зашифрованную ссылку, сделав запрос к al_audio.php и расшифровывает её.
Антон Тихомиров Я вас не очень понял, ссылка и так формируется на сервере. Клиенту же все равно как-то нужно расшифровать ссылку, поэтому код расшифровки должен присутствовать на странице. Можно, наверное, провести аналогии с взломом программ — как ни придумывай защиту, все равно, теоретически взломать можно.
Антон Тихомиров там второй аргумент — тоже строка и поэтому происходит исключающее или не самих чисел, а их ASCII кодов и на выходе тоже строка с этими кодами. Думаю, даже 32-битного int хватит, так как число пользователей ВКонтакте пока что меньше.
nelolka можно пример ссылки, которая не работает в самой верхней версии PHP кода? Я бы тогда исправил. Кстати, тот код на Pastebin пока не учитывает последнюю добавленную функцию.
romalu У меня расширение, я использую лишь получение ссылки по id. Не знаю насчёт остального. Нужно экспериментировать и подбирать аналогичную формулу.
romalu Раньше они возвращали пустой ответ вместо этого. И лимиты всегда были, причём не только в секунду, но и в несколько, и вроде бы ещё была блокировка в несколько минут если не обращать внимание. У меня стоит ограничение limit = 5 * ((t+3) ^ (0.7)), где t — время в секундах, limit — число запросов, но все равно иногда получаю такие ошибки.
Martyn911 приложение для этого выполняет запрос auth.refreshToken с параметрами access_token и receipt. Последний параметр получается в результате запроса к https://android.clients.google.com/c2dm/register3, там много параметров, но существенно то, что параметры X-pub2 и X-sig как-то очень хитро генерируются на стороне приложения. Как я уже написал выше, нужна декомпиляция. Ну или анализировать трафик, чтобы получить токен вручную.