Работа с закрытым VK API

Работа с закрытым VK API

@Flerry

Всем привет, дамы и господа! Прошло уже много дней с момента закрытия музыкальной составляющей VK API и многие подумали, что это все, но не сегодня! Представляю вам две интересных штуки для восстановления доступа к API и немного сладкого. Поехали!


Лазейки, дающие нам доступ к API:

  1. Конечно, они могли нам закрыть доступ, ведь мы же "смертные", но как же "большие проекты"? Stelio, Lync, Kate и многие другие?? Им-то точно нужна музыка! Вот под них мы и замаскируемся :) Берем отсюда любой token и наслаждаемся! Одно но: ссылки на audio мы получить не сможем, однако, по слухам, можно взять там же официальные токены и замаскироваться под мобильное приложение, отправив в заголовке строку от мобильного приложения вк.
  2. Самое интересное! Кто нас спасет? Нас спасет код! И действительно, если авторизоваться любым приложением, получить token и позже использовать его в голых get-запросах из своего кода, то у нас все получится! Нам даже ссылки отдают без боя О.о

Доказательство:

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;

public class AudioSearch extends Thread {
    private String songName;
    private Long chatId;

   public AudioSearch(String songName, Long chatId) {
        this.songName = songName;
        this.chatId = chatId;
    }

    @Override
    public void run() {
        TgBot bridge = new TgBot();

        StringBuilder sb = new StringBuilder();

        String VkQuery = null;
        try {
            VkQuery = "https://api.vk.com/method/audio.search?q=" + URLEncoder.encode(songName, "UTF-8") + "&count=10&sort=2&access_token=your_token&v=5.60";
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        int counter;

        HttpURLConnection connection = null;
        try {
            connection = (HttpURLConnection) new URL(VkQuery).openConnection();

            connection.setRequestMethod("GET");

            if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
                String response;
                while ((response = in.readLine()) != null) {
                    JSONObject obj = new JSONObject(response);
                    JSONArray parseAll = obj.getJSONObject("response").getJSONArray("items");
                    for (counter = 0; counter < 10; counter++) {
                        try {    
                            JSONObject all = parseAll.getJSONObject(counter);

                            sb.append("Исполнитель:").append(" ").append(all.getString("artist")).append("\n");

                            sb.append("Название:").append(" ").append(all.getString("title")).append("\n");

                            sb.append("Ссылка:").append(" ").append(all.getString("url")).append("\n\n");           

                        } catch (Exception e) {
                            System.out.println("Not find");
                        }
                    }

                }
                bridge.sendMsgCustomUser(chatId, sb.toString());

            } else {
                System.out.println("fail:" + connection.getResponseCode() + ", " + connection.getResponseMessage());
            }
        } catch (Throwable cause) {
            cause.printStackTrace();
        } finally {
            if (connection != null) {
                connection.disconnect();
            }
            if (!currentThread().isInterrupted()) {
                currentThread().interrupt();
            }
        }

        if (!currentThread().isInterrupted()) {
            currentThread().interrupt();
        }

    }
}






Это готовый код, в который надо лишь подставить token, ну и чуток его подравнять (сделать URIBilder и т.д.).

Результат - @VkASBot . Сделано на коленке и нормально работает.

Ну или часть от бота @URLMediaBot. Тоже мое и работает с ВК на ура (ну и всякими вашими ютьюбами, soundcloud, facebook... etc...)


Небольшой набор сайтов для скачки музыки без ботов/написания своего:

https://downloadmusicvk.ru (хорошая штука, можно даже с помощью нее и качать (просто берем url и подставляем в него нужные данные, спаршенные с вк)


http://vk-music.ru/?q=Beatles (вроде ничего... Немного пугает дизайн)


http://vk-music.biz (замечательная штука, говорят, правда, что есть небольшие ограничения, но это лишь слухи)


P/s Любые вопросы/предложения и всякую всячину можно скидывать мне в Telegram - @Flerry . Я не кусаюсь :)




Report Page