Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取mp3播放时的URL_Java_Android_Download_Mp3 - Fatal编程技术网

Java 如何获取mp3播放时的URL

Java 如何获取mp3播放时的URL,java,android,download,mp3,Java,Android,Download,Mp3,我们可以播放来自浏览器、社交网络、应用程序的mp3文件。。。我想得到mp3播放时的URL。这里的一种方法是在浏览器中创建扩展。但在其他应用程序中,我们不能。以下是一个例子: 我去了一些网站,打开了一些mp3: 如果你能看到正在播放的音乐,它有一个URL。我想在音乐开始播放时获取此URL。我该怎么做?我怎样才能获得在某些应用程序中播放的音乐的URL?有可能吗?首先从maven导入JSOUP库 compile 'org.jsoup:jsoup:1.12.1' 之后,请使用此代码

我们可以播放来自浏览器、社交网络、应用程序的mp3文件。。。我想得到mp3播放时的URL。这里的一种方法是在浏览器中创建扩展。但在其他应用程序中,我们不能。以下是一个例子: 我去了一些网站,打开了一些mp3:


如果你能看到正在播放的音乐,它有一个URL。我想在音乐开始播放时获取此URL。我该怎么做?我怎样才能获得在某些应用程序中播放的音乐的URL?有可能吗?

首先从maven导入JSOUP库

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方法来选择元素,这里我们得到了我们想要搜索的第一个音频标签

如果你能看到正在播放的音乐,它有一个URL。我想去 音乐开始播放时创建此URL。我该怎么做

如果要将网站加载到
WebView
,最简单的方法是通过
WebViewClient
截取请求并检查URL是否包含“.mp3”来获取URL。参见下面的示例

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通信中获得它时。要嗅探其他应用程序的网络流量,您需要执行以下操作。play store中有几个应用程序正在做完全相同的事情。您可以查看应用程序以供参考。基本上,您需要执行以下步骤-

  • 设置代理服务器
  • 将设备配置为将其网络流量传递到该代理服务器
  • 请代理服务器向您提供网络数据
  • 分析网络数据,查看其是否包含“mp3”URL

  • 如果您需要拦截https流量,则需要生成并安装SSL证书。

    您尝试播放的mp3是什么?我的意思是,如果您正在播放mp3,您的存储中应该已经有它的url或文件路径,否则您将无法播放任何mp3。@Jaswansh我们可以从网站、应用程序(例如VK、Facebook…)播放mp3,而不仅仅是从存储中播放如果您使用Facebook或YouTube作为源,由于这些网站没有透露mp3的来源,因此无法获取mp3的url。此外,下载这些mp3是不合法的。Afaik@JaswantSingh,明白了,浏览器呢?如果你注意到了,有些网站由于隐私和其他原因而不显示url(源),而有些网站则会这样做,要从这些网站获取url,你需要解析完整的HTML(DOM)页面以查找音频源,方法是使用某种正则表达式来查找模式。