admin管理员组文章数量:1583565
通过js解析酷我音乐的流地址
- 缘由
- 思路
- java的js执行引擎
缘由
最近经常听到的一首歌曲,但是不知道是什么歌曲名,直到一个偶然的机会,我找到了这个音乐
清新的小女孩,习惯于其他音乐播放器的我,希望下载这首动听的歌曲,但是有意思的是歌曲的下载必须要下载客户端。由于某人比较懒,所以就开启了解析解析之路
(1)http://m.kuwo.cn/newh5/singles/songinfoandlrc?musicId=72891154&reqId=5e80bd50-69f9-11ea-91f5-c5b065da4b63
(2)http://www.kuwo.cn/url?format=mp3&rid=73068685&response=url&type=convert_url3&br=128kmp3&from=web&t=1584632489746&reqId=17b249acXea5dX4164Xb6eeX8de501c2ed6a
思路
- 先请求(1)链接,获取到 reqid ,36位字符串。拼接到(2),就可以获取到这首歌mp3的下载地址
- 所以目标变成了,如何获取到(1)中的 ·
reqId
,类似于(5e80bd50-69f9-11ea-91f5-c5b065da4b63)这一字符串的形式,这个是通过 js获取到的
这边整理了一个js文件,通过js引擎获取到参数
kuwomusic.js
l = function(t){
var n, o, h = 0, d = 0 ,e;
var f = [157, 158, 13, 133, 205, 78];
var i = e && r || 0
, b = e || new Uint8Array(16)
, v = o;
var y = (new Date).getTime()
, w = d + 1
, dt = y - h + (w - d) / 1e4;
if (dt < 0 && void 0 === t.clockseq && (v = v + 1 & 16383),
(dt < 0 || y > h) && void 0 === t.nsecs && (w = 0),
w >= 1e4)
throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");
h = y,
d = w,
o = v;
var A = (1e4 * (268435455 & (y += 122192928e5)) + w) % 4294967296;
b[i++] = A >>> 24 & 255,
b[i++] = A >>> 16 & 255,
b[i++] = A >>> 8 & 255,
b[i++] = 255 & A;
var T = y / 4294967296 * 1e4 & 268435455;
b[i++] = T >>> 8 & 255,
b[i++] = 255 & T,
b[i++] = T >>> 24 & 15 | 16,
b[i++] = T >>> 16 & 255,
b[i++] = v >>> 8 | 128,
b[i++] = 255 & v;
for (var x = 0; x < 6; ++x)
b[i + x] = f[x];
return b;
};
c = function(t, e) {
for (var r = [], i = 0; i < 256; ++i)
r[i] = (i + 256).toString(16).substr(1);
var i = e || 0
, n = r;
return [n[t[i++]], n[t[i++]], n[t[i++]], n[t[i++]], "-", n[t[i++]], n[t[i++]], "-", n[t[i++]], n[t[i++]], "-", n[t[i++]], n[t[i++]], "-", n[t[i++]], n[t[i++]], n[t[i++]], n[t[i++]], n[t[i++]], n[t[i++]]].join("")
};
java的js执行引擎
/**
* 酷我音乐
*/
public class KuwoMusic {
public static void main(String[] args) {
String fileName = "e:/video/kuwomusic.js"; // 调用以上的js文件脚本
Object l = parseJs("l", 4, fileName);
Object reqId = parseJs("c", l, fileName);
System.out.println(reqId);
/**
* 然后执行
* http://m.kuwo/newh5/singles/songinfoandlrc?musicId=72891154&reqId=5e80bd50-69f9-11ea-91f5-c5b065da4b63
*
* 获取到 reqid
* 再请求 http://www.kuwo/url?format=mp3&rid=73068685&response=url&type=convert_url3&br=128kmp3&from=web&t=1584632489746&reqId=17b249acXea5dX4164Xb6eeX8de501c2ed6a
*/
}
/**
* 通过js解析 获取 reqId 的值
*
* @param method
* @param param
* @param fileName
* @return
*/
private static Object parseJs(String method, Object param, String fileName) {
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine javascript = engineManager.getEngineByName("javascript");
FileReader reader = null;
try {
reader = new FileReader(fileName);
javascript.eval(reader);
if (javascript instanceof Invocable) {
Invocable invocation = (Invocable) javascript;
return invocation.invokeFunction(method, param);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (Exception e) {
}
}
}
return null;
}
}
至此,也就可以获取到 reqId
的值,然后根据以下的连接,也就可以获取到这首心仪的歌曲的下载地址
(1)http://m.kuwo.cn/newh5/singles/songinfoandlrc?musicId=72891154&reqId=5e80bd50-69f9-11ea-91f5-c5b065da4b63
(2)http://www.kuwo.cn/url?format=mp3&rid=73068685&response=url&type=convert_url3&br=128kmp3&from=web&t=1584632489746&reqId=17b249acXea5dX4164Xb6eeX8de501c2ed6a
本文标签: 音乐
版权声明:本文标题:酷我音乐解析mp3 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727920109a1138109.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论