Как получить URL mp3, когда он играет - PullRequest
5 голосов
/ 14 октября 2019

Мы можем воспроизводить mp3-файлы из браузеров, социальных сетей, приложений ... Я хочу получить URL-адрес mp3 во время воспроизведения. Один из способов - создать расширение в браузере. Но в других приложениях мы не можем. Вот пример: я захожу на какой-то сайт и открываю mp3:

mp3 from sote

Если вы видите, что музыка играет и у нее есть URL. Я хочу получить этот URL, когда музыка начинает играть. Как я могу это сделать? И как я могу получить URL музыки, которая играет в каком-то приложении? Возможно ли это?

Ответы [ 2 ]

2 голосов
/ 23 октября 2019

Если вы видите, что музыка играет и у нее есть URL. Я хочу получить этот URL, когда музыка начинает играть. Как я могу это сделать?

Если вы загружаете сайт в WebView, самый простой способ получить URL-адрес - перехватить запросы через WebViewClient и проверить, содержит ли URL-адрес».mp3' . См. Следующий пример:

public class YourWebViewClient extends WebViewClient {
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
            String url = request.getUrl().toString();
            if (url.contains(".mp3")) {
                Log.d(TAG, "MP3 url = [" + url + "]");
            }
            return super.shouldInterceptRequest(view, request);
        }
}

И как я могу получить URL музыки, которая играет в каком-то приложении? Возможно ли это?

Да, возможно, но не слишком просто, особенно если вы собираетесь получать его из трафика SSL. Чтобы прослушать сетевой трафик другого приложения, вам нужно выполнить MITM . В магазине игр есть пара приложений, которые делают одно и то же. Вы можете заглянуть в приложение HttpCanary для справки. В основном вам необходимо выполнить следующие шаги -

  1. Настройка прокси-сервера
  2. Настройка устройства для передачи сетевого трафика на этот прокси-сервер
  3. Запрос проксисервер, чтобы предоставить вам сетевые данные
  4. Анализировать сетевые данные, чтобы увидеть, содержит ли он 'mp3' URL

Если вам нужно перехватить трафик https, вам нужно сгенерировать и установитьSSL-сертификат.

1 голос
/ 18 октября 2019

Сначала импортируйте библиотеку JSOUP из maven

compile 'org.jsoup:jsoup:1.12.1'

, после этого используйте этот код

            Document doc = Jsoup.connect(url).get();
            System.out.println(doc.title());
            Elements h1s = doc.select(".jp-type-single"); 
            System.out.println("Number of results: " + h1s.size());
            for (Element element : h1s) { 
            String mp3Url = element.attr("data-xc-filepath"); 
            System.out.println("mp3 url: " + mp3Url);
            file_num++;
            URLConnection conn = new URL(mp3Url).openConnection();
            InputStream is = conn.getInputStream();
            OutputStream outstream = new FileOutputStream(new 
            File("/users/pelican/downloads/"+file_num+"file.mp3"));
            byte[] buffer = new byte[4096];
            int len;
            while ((len = is.read(buffer)) > 0) {
                outstream.write(buffer, 0, len);
            }

, теперь позвольте мне объяснить, что JSOUP извлек веб-страницу, используя ваш HTML-URL

после этого он преобразуется в doc

и после этого он выбирает элемент с помощью метода select, и здесь мы получаем первый аудио-тег, который мы хотим найти.

...