Open listen1 opened 1 year ago
cookie 加了Hm_token属性,32位随机的,请求头加了Cross ,Hm_token的md5值
cookie 加了Hm_token属性,32位随机的,请求头加了Cross ,Hm_token的md5值
非常感谢
又又又改了,先SHA1,再MD5
谢谢,已经再次修复了该问题
https://github.com/QiuYaohong/kuwoMusicApi/issues/19 又改了,这次无法获取付费歌曲了
好像又不行了
这接口一天改8遍,放个kotlin的实现
fun main() {
//t是随机的32位字符串
val t = "6Q5tPYAYEdQSz888887jh5FTKaMRXwdx"
//e是固定的Cookie名称
val e = "Hm_Iuvt_cdb524f42f0ce19b169b8072123a4727"
//n是e的ASCII码拼接
var n = e.toCharArray().joinToString("") { it.code.toString() }
println(n)
val r = floor(n.length / 5.0).toInt()
println("r=$r")
val o = (n[r].toString() + n[2 * r] + n[3 * r] + n[4 * r] + n[5 * r]).toInt()
println("o=$o")
val l = ceil(e.length / 2.0).toInt()
println("l=$l")
val c = (2.0.pow(31.0) - 1).toInt()
println("c=$c")
val d = (Math.round(1e9 * Math.random()) % 1e8).toInt()
println("d=$d")
n = "$n$d"
//===========一个神奇的算法START,后期大概率会改===================================
//这是上面计算的n值7210995731171181169599100985350521025250102489910149579849545798564855504950519752555055
while (n.length > 10) {
val a1 = n.substring(0, 10)
val a2 = n.substring(10, n.length)
//第一次循环7210995731 17118116959910098535052102525010248991014957984954579856485550495051975255505545084407
//第二次循环1.71181169 59910098E85
//这里竟然生成了科学计数
//js中用了parseInt,但是在kotlin中‘59910098E85’带有字母会报错,这里用了parseDouble,替换了‘E’,实现了和js一样的效果
//最后计算出来的值是59910099
println("$a1 $a2")
n = if (a2.contains("E")) {
(parseDouble(a1).toInt() + parseDouble(a2.replace("E", ".")).toInt()).toString()
} else {
(parseDouble(a1) + parseDouble(a2)).toString()
}
}
//===========一个神奇的算法END===================================
println("n=$n")
n = ((o * n.toDouble() + l) % c).toString()
//由于上面算法科学计数剪切问题,随机数d被剪切丢失,这里n其实是一个固定值798334170
//上面算法都是废话
val f = t.toCharArray().joinToString("") {
val h = it.code xor (floor(n.toDouble() / c * 255)).toInt()
n = ((o * n.toDouble() + l) % c).toString()
h.toString(16).padStart(2, '0')
}
println(f)
val dd = d.toString(16).padStart(8, '0')
//计算出来的Secret
println(f + dd)
}
获取列表的接口从网页抓一个secret保存下来就可以实现了。但获取播放路径的接口,如果是vip会直接返回"该歌曲为付费内容,请下载酷我音乐客户端后付费收听",所以目前只能播放非vip歌曲。 这是我的一个项目穷人音乐盒,可供参考,后续如果找到了新接口也会持续更新
接口是有的。在这个 https://github.com/QiuYaohong/kuwoMusicApi/issues/19 中我们介绍了用python与Java写的处理api的代码,但咱能力有限,如果能转换为js或者php就会好办很多。
请善用github,知道地址了比如"[http://mobi.kuwo.cn/mobi.s",直接搜索这个地址,切到code,查看用这个地址的项目,或者下面选语言,要找的代码不就出来了]
Python 版本的代码就是这样搜出来的,但没找到JS、php可用的实例
请善用github,知道地址了比如"[http://mobi.kuwo.cn/mobi.s",直接搜索这个地址,切到code,查看用这个地址的项目,或者下面选语言,要找的代码不就出来了]
Python 版本的代码就是这样搜出来的,但没找到JS、php可用的实例
我用你发的python脚本转成c#代码了,让chatgpt去翻译就好,目前我这个项目穷人音乐盒已经可以播放了,有需要的话你也可以拿这个代码https://github.com/Mcdull0921/PoorMusic/blob/main/MusicLibrary/KuwoDES.cs
酷我最近更新了api的加密算法,之前的km_token直接作为csrf字段的方式已经失效,新的加密算法使用了Cookie中的Hm_token字段,并采用了一段转换代码将这个字段变成另一个字符串后,使用http header中的Cross字段发出。
计划尽快的修复该问题。