This commit is contained in:
qaiu
2024-10-23 18:04:34 +08:00
parent ff569d339c
commit 4158f869a3
10 changed files with 305 additions and 152 deletions

View File

@@ -124,4 +124,8 @@ public abstract class PanBase implements IPanTool {
}
}
protected void complete(String url) {
promise.complete(url);
}
}

View File

@@ -2,6 +2,10 @@ package cn.qaiu.parser;
import cn.qaiu.parser.impl.*;
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 枚举类 PanDomainTemplate 定义了不同网盘服务的模板信息,包括:
* <ul>
@@ -75,21 +79,54 @@ public enum PanDomainTemplate {
"https://474b\\.com/file/(.+)",
"https://474b.com/file/{shareKey}",
CtTool.class),
// =====================音乐类解析 分享链接标志->MxxS (单歌曲/普通音质)==========================
// http://163cn.tv/xxx
MNE("网易云音乐",
MNES("网易云音乐分享",
"http(s)?://163cn\\.tv/(.+)",
"http://163cn.tv/{shareKey}",
MneTool.class),
MnesTool.class),
MNE("网易云音乐",
"https://music\\.163\\.com/(#/)?song\\?id=(.+)",
"https://music.163.com/#/song?id={shareKey}",
MnesTool.MneTool.class),
// https://c6.y.qq.com/base/fcgi-bin/u?__=xxx
MQQ("QQ音乐",
MQQS("QQ音乐分享",
"https://(.+)\\.y\\.qq\\.com/base/fcgi-bin/u\\?__=(.+)",
"https://c6.y.qq.com/base/fcgi-bin/u?__={shareKey}",
MqqTool.class),
// https://y.qq.com/n/ryqq/songDetail/000XjcLg0fbRjv?songtype=0
MQQ("QQ音乐",
"https://y\\.qq\\.com/n/ryqq/songDetail/(.+)\\?.*",
"https://y.qq.com/n/ryqq/songDetail/{shareKey}",
MqqTool.class),
// https://t1.kugou.com/song.html?id=xxx
MKG("酷狗音乐",
MKGS("酷狗音乐分享",
"https://(.+)\\.kugou\\.com/song\\.html\\?id=(.+)",
"https://t1.kugou.com/song.html?id={shareKey}",
MkgTool.class),
MkgsTool.class),
// https://www.kugou.com/share/2bi8Fe9CSV3.html?id=2bi8Fe9CSV3#6ed9gna4"
MKGS2("酷狗音乐分享2",
"https://www\\.kugou\\.com/share/(.+).html\\?.*",
"https://www.kugou.com/share/{shareKey}.html",
MkgsTool.Mkgs2Tool.class),
// https://www.kugou.com/mixsong/2bi8Fe9CSV3
MKG("酷狗音乐",
"https://(.+)\\.kugou\\.com/song\\.html\\?id=(.+)",
"https://www.kugou.com/mixsong/{shareKey}",
MkgsTool.MkgTool.class),
//
MKWS("酷我音乐分享*",
"https://(.+)\\.kugou\\.com/song\\.html\\?id=(.+)",
"https://t1.kugou.com/song.html?id={shareKey}",
MkwTool.class),
//
MMGS("咪咕音乐分享",
"https://(.+)\\.kugou\\.com/song\\.html\\?id=(.+)",
"https://t1.kugou.com/song.html?id={shareKey}",
MkwTool.class),
// =====================私有盘解析==========================
// https://pan.huang1111.cn/s/xxx
// 通用域名([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}
CE("Cloudreve",
@@ -133,4 +170,22 @@ public enum PanDomainTemplate {
public Class<? extends IPanTool> getToolClass() {
return toolClass;
}
public static void main(String[] args) {
// 校验重复
Set<String> collect =
Arrays.stream(PanDomainTemplate.values()).map(PanDomainTemplate::getRegexPattern).collect(Collectors.toSet());
if (collect.size()<PanDomainTemplate.values().length) {
System.out.println("有重复枚举正则");
}
Set<String> collect2 =
Arrays.stream(PanDomainTemplate.values()).map(PanDomainTemplate::getStandardUrlTemplate).collect(Collectors.toSet());
if (collect2.size()<PanDomainTemplate.values().length) {
System.out.println("有重复枚举标准链接");
}
System.out.println(collect);
System.out.println(collect2);
}
}

View File

@@ -2,7 +2,6 @@ package cn.qaiu.parser.impl;
import cn.qaiu.entity.ShareLinkInfo;
import cn.qaiu.parser.PanBase;
import cn.qaiu.util.URLUtil;
import io.vertx.core.Future;
import io.vertx.core.MultiMap;
import io.vertx.core.json.JsonObject;
@@ -13,8 +12,12 @@ import java.util.regex.Pattern;
/**
* 酷狗音乐分享
* <a href="https://t1.kugou.com/song.html?id=2bi8Fe9CSV3">分享链接1</a>
* <a href="https://www.kugou.com/share/2bi8Fe9CSV3.html?id=2bi8Fe9CSV3#6ed9gna4">分享链接2</a>
* <a href="https://www.kugou.com/share/2bi8Fe9CSV3.html">分享链接3</a>
* <a href="https://www.kugou.com/mixsong/8odv4ef8.html">歌曲链接1</a>
*/
public class MkgTool extends PanBase {
public class MkgsTool extends PanBase {
public static final String API_URL = "https://m.kugou.com/app/i/getSongInfo.php?cmd=playInfo&hash={hash}";
@@ -57,7 +60,7 @@ public class MkgTool extends PanBase {
headers.set("Upgrade-Insecure-Requests", "1");
};
public MkgTool(ShareLinkInfo shareLinkInfo) {
public MkgsTool(ShareLinkInfo shareLinkInfo) {
super(shareLinkInfo);
}
@@ -66,32 +69,55 @@ public class MkgTool extends PanBase {
// String shareUrl = "https://t1.kugou.com/song.html?id=2bi8Fe9CSV3";
clientNoRedirects.getAbs(shareUrl).send().onSuccess(res -> {
String locationURL = res.headers().get("Location");
client.getAbs(locationURL).putHeaders(headers).send().onSuccess(res2->{
String body = res2.bodyAsString();
// 正则表达式匹配 hash 字段
String regex = "\"hash\"\s*:\s*\"([A-F0-9]+)\"";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(body);
// 查找并输出 hash 字段的值
if (matcher.find()) {
String hashValue = matcher.group(1); // 获取第一个捕获组
System.out.println(hashValue);
client.getAbs(UriTemplate.of(API_URL)).setTemplateParam("hash", hashValue).send().onSuccess(res3 -> {
JsonObject jsonObject = asJson(res3);
System.out.println(jsonObject.encodePrettily());
if (jsonObject.containsKey("url")) {
promise.complete(jsonObject.getString("url"));
} else {
fail("下载链接不存在");
}
}).onFailure(handleFail(API_URL.replace("{hash}", hashValue)));
} else {
fail("歌曲hash匹配失败, 可能分享已失效");
}
}).onFailure(handleFail(locationURL));
downUrl(locationURL);
}).onFailure(handleFail(shareUrl));
return promise.future();
}
protected void downUrl(String locationURL) {
client.getAbs(locationURL).putHeaders(headers).send().onSuccess(res2->{
String body = res2.bodyAsString();
// 正则表达式匹配 hash 字段
String regex = "\"hash\"\s*:\s*\"([A-F0-9]+)\"";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(body);
// 查找并输出 hash 字段的值
if (matcher.find()) {
String hashValue = matcher.group(1); // 获取第一个捕获组
System.out.println(hashValue);
client.getAbs(UriTemplate.of(API_URL)).setTemplateParam("hash", hashValue).send().onSuccess(res3 -> {
JsonObject jsonObject = asJson(res3);
System.out.println(jsonObject.encodePrettily());
if (jsonObject.containsKey("url")) {
promise.complete(jsonObject.getString("url"));
} else {
fail("下载链接不存在");
}
}).onFailure(handleFail(API_URL.replace("{hash}", hashValue)));
} else {
fail("歌曲hash匹配失败, 可能分享已失效");
}
}).onFailure(handleFail(locationURL));
}
public static class MkgTool extends MkgsTool{
public MkgTool(ShareLinkInfo shareLinkInfo) {
super(shareLinkInfo);
}
@Override
public Future<String> parse() {
downUrl(shareLinkInfo.getStandardUrl());
return promise.future();
};
}
public static class Mkgs2Tool extends MkgTool{
public Mkgs2Tool(ShareLinkInfo shareLinkInfo) {
super(shareLinkInfo);
}
}
}

View File

@@ -4,6 +4,7 @@ import cn.qaiu.entity.ShareLinkInfo;
import cn.qaiu.parser.PanBase;
import cn.qaiu.util.JsExecUtils;
import io.vertx.core.Future;
import io.vertx.core.json.JsonObject;
import io.vertx.uritemplate.UriTemplate;
import java.util.regex.Matcher;
@@ -41,9 +42,21 @@ public class MkwTool extends PanBase {
var token = matcher.group(2);
String sign = JsExecUtils.getKwSign(token, key);
System.out.println(sign);
clientSession.getAbs(UriTemplate.of(API_URL)).setQueryParam("mid", "395500809")
.putHeader("Secret", sign).putHeader("Cookie", key + "=" + token).send().onSuccess(res -> {
System.out.println(res.bodyAsString());
clientSession.getAbs(UriTemplate.of(API_URL)).setTemplateParam("mid", "395500809")
.putHeader("Secret", sign).send().onSuccess(res -> {
JsonObject json = asJson(res);
log.debug(json.encodePrettily());
try {
if (json.getInteger("code") == 200) {
complete(json.getJsonObject("data").getString("url"));
} else {
fail("链接已失效");
}
} catch (Exception e) {
e.printStackTrace();
fail("解析失败");
}
});
}
}

View File

@@ -1,36 +0,0 @@
package cn.qaiu.parser.impl;
import cn.qaiu.entity.ShareLinkInfo;
import cn.qaiu.parser.PanBase;
import cn.qaiu.util.URLUtil;
import io.vertx.core.Future;
import io.vertx.uritemplate.UriTemplate;
/**
* 网易云音乐, 单歌曲直链解析
* <a href="http://163cn.tv/ykLZJJT">示例分享1</a>
* <a href="https://music.163.com/#/song?id=472194327">示例分享2</a>
*/
public class MneTool extends PanBase {
public static final String API_URL = "https://music.163.com/song/media/outer/url?id={id}";
public MneTool(ShareLinkInfo shareLinkInfo) {
super(shareLinkInfo);
}
public Future<String> parse() {
String shareUrl = shareLinkInfo.getStandardUrl();
clientNoRedirects.getAbs(shareUrl).send().onSuccess(res -> {
String locationURL = res.headers().get("Location");
String id = URLUtil.from(locationURL).getParam("id");
clientNoRedirects.getAbs(UriTemplate.of(API_URL)).setTemplateParam("id", id).send()
.onSuccess(res2 -> {
promise.complete(res2.headers().get("Location"));
}).onFailure(handleFail(API_URL.replace("{id}", id)));
}).onFailure(handleFail(shareUrl));
return promise.future();
}
}

View File

@@ -0,0 +1,54 @@
package cn.qaiu.parser.impl;
import cn.qaiu.entity.ShareLinkInfo;
import cn.qaiu.parser.PanBase;
import cn.qaiu.util.URLUtil;
import io.vertx.core.Future;
import io.vertx.uritemplate.UriTemplate;
/**
* 网易云音乐, 单歌曲直链解析
* <a href="http://163cn.tv/ykLZJJT">示例分享1</a>
* <a href="https://music.163.com/#/song?id=472194327">示例分享2</a>
*/
public class MnesTool extends PanBase {
public static final String API_URL = "https://music.163.com/song/media/outer/url?id={id}";
public MnesTool(ShareLinkInfo shareLinkInfo) {
super(shareLinkInfo);
}
public Future<String> parse() {
String shareUrl = shareLinkInfo.getStandardUrl();
clientNoRedirects.getAbs(shareUrl).send().onSuccess(res -> {
String locationURL = res.headers().get("Location");
downUrl(locationURL);
}).onFailure(handleFail(shareUrl));
return promise.future();
}
protected void downUrl(String locationURL) {
String id = URLUtil.from(locationURL).getParam("id");
clientNoRedirects.getAbs(UriTemplate.of(API_URL)).setTemplateParam("id", id).send()
.onSuccess(res2 -> {
promise.complete(res2.headers().get("Location"));
}).onFailure(handleFail(API_URL.replace("{id}", id)));
}
public static class MneTool extends MnesTool{
public MneTool(ShareLinkInfo shareLinkInfo) {
super(shareLinkInfo);
}
@Override
public Future<String> parse() {
downUrl(shareLinkInfo.getStandardUrl());
return promise.future();
}
}
}

View File

@@ -329,73 +329,4 @@ public class AESUtils {
return _0x53928f + "-" + _0x430930 + "-" + _0x49ec94;
}
public static String encrypt(String str, String pwd) {
if (pwd == null || pwd.length() <= 0) {
throw new IllegalArgumentException("Please enter a password with which to encrypt the message.");
}
// 生成 prand 值
StringBuilder prand = new StringBuilder();
for (int i = 0; i < pwd.length(); i++) {
prand.append((int) pwd.charAt(i));
}
// 计算 sPos, mult, incr, modu
int sPos = prand.length() / 5;
long mult = Long.parseLong(prand.substring(sPos, sPos + 1) +
prand.substring(sPos * 2, sPos * 2 + 1) +
prand.substring(sPos * 3, sPos * 3 + 1) +
prand.substring(sPos * 4, sPos * 4 + 1) +
prand.substring(sPos * 5, sPos * 5 + 1));
int incr = (int) Math.ceil(pwd.length() / 2.0);
long modu = (long) Math.pow(2, 31) - 1;
if (mult < 2) {
throw new IllegalArgumentException("Algorithm cannot find a suitable hash. Please choose a different password.");
}
// 生成 salt 并加到 prand 上
long salt = Math.round(Math.random() * 1000000000) % 100000000;
prand.append(salt);
// 使用 BigInteger 处理超过 Long 范围的 prand 值
BigInteger prandValue = new BigInteger(prand.toString());
while (prandValue.toString().length() > 10) {
prandValue = prandValue.divide(BigInteger.TEN).add(prandValue.remainder(BigInteger.TEN));
}
// 将 prand 转换为 long 进行后续处理
prandValue = prandValue.multiply(BigInteger.valueOf(mult)).add(BigInteger.valueOf(incr)).mod(BigInteger.valueOf(modu));
// 加密过程
StringBuilder encStr = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
// 将字符和异或的结果强制转换为 int
int encChr = (int) (str.charAt(i) ^ (int) ((prandValue.doubleValue() / modu) * 255));
String hexStr = Integer.toHexString(encChr);
if (hexStr.length() < 2) {
encStr.append("0");
}
encStr.append(hexStr);
prandValue = prandValue.multiply(BigInteger.valueOf(mult)).add(BigInteger.valueOf(incr)).mod(BigInteger.valueOf(modu));
}
// 将 salt 转换为 16 进制并追加到加密结果
String saltHex = Long.toHexString(salt);
while (saltHex.length() < 8) {
saltHex = "0" + saltHex;
}
encStr.append(saltHex);
return encStr.toString();
}
public static void main(String[] args) {
// 示例
String encrypted = encrypt("HelloWorld", "password123");
System.out.println("Encrypted String: " + encrypted);
}
}

View File

@@ -167,8 +167,10 @@ public interface JsContent {
}
var salt = Math.round(Math.random() * 1000000000) % 100000000;
prand += salt;
var flag = 1;
while (prand.length > 10) {
prand = (parseInt(prand.substring(0, 10)) + parseInt(prand.substring(10, prand.length))).toString();
prand = (parseInt(prand.substring(0, 10)) + (flag ?parseFloat(prand.substring(10, prand.length)) : parseInt(prand.substring(10, prand.length)) )).toString();
flag = 0;
}
prand = (mult * prand + incr) % modu;
var enc_chr = "";

View File

@@ -8,8 +8,6 @@ import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import static cn.qaiu.util.AESUtils.encrypt;
/**
* 执行Js脚本
*
@@ -85,13 +83,10 @@ public class JsExecUtils {
public static void main(String[] args) {
//encrypt("ZYcEEs2JdncXG8zAaytJiXxmbyhH2wxb", "Hm_Iuvt_cdb524f42f23cer9b268564v7y735ewrq2324")
//'7909e8e754545a61ba4bc3c90c82cb6c69b6859d5ea2e46a6bf913d1b4f11dee011dced1'
// 1e3170f1cc1ca75172409e443b89261ec777e190ebc595b458b8e114a912a9544d2b467323f8ca011b2ed0
// 93a44ef48949d950c91303c84d36
// 95dea502a45fb153f68d8da0bf8e4a095a001e396f60837e9c1b58a48969eb77038234d2
// 93c3750f6ccf9d11b5c304b32495
System.out.println(getKwSign("Hm_lvt_cdb524f42f0ce19b169a8071123a4797", "1729503755"));
System.out.println(getKwSign("HelloWorld", "password123"));
// 1a9b1a33222a78d6506e0aeaacf5b9b69984954de79e98e3ef4766c009025b7000000000
// acb0a82caa6ee641ca99ad81ace7081f58412e2148619827aa0a038a8d76c75000000000
// f7a05b893131238ee4d1f31a85401b64056bb09988b5b9c2b87c12542578360600000000
System.out.println(getKwSign("c7nkKBeXXzCyTQ8Wc8DRNYc4Th3f6hTE", "Hm_Iuvt_cdb524f42f23cer9b268564v7y735ewrq2324"));
}

View File

@@ -2,6 +2,23 @@
#@no-redirect
https://t1.kugou.com/song.html?id=2bi8Fe9CSV3
###
#@no-cookie-jar
#@no-redirect
https://www.kugou.com/mixsong/8odv4ef8.html
accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
if-modified-since: Mon, 21 Oct 2024 08:45:50 GMT
priority: u=0, i
sec-ch-ua: "Microsoft Edge";v="129", "Not=A?Brand";v="8", "Chromium";v="129"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-dest: document
sec-fetch-mode: navigate
sec-fetch-site: none
sec-fetch-user: ?1
upgrade-insecure-requests: 1
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0
###
GET https://www.kugou.com/share/2bi8Fe9CSV3.html?id=2bi8Fe9CSV3
@@ -22,8 +39,8 @@ user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
https://www.kuwo.cn/api/v1/www/music/playUrl?mid=395500809&type=music&httpsStatus=1&reqId=&plat=web_www&from=
Cookie: Hm_Iuvt_cdb524f42f23cer9b268564v7y735ewrq2324=c7nkKBeXXzCyTQ8Wc8DRNYc4Th3f6hTE
Secret: 4067e5c95a650d73865fe3e81feb897a6bf7b58579a3ff335de848ffb0ee31c9058333c0
Cookie: Hm_Iuvt_cdb524f42f23cer9b268564v7y735ewrq2324=ikFKTAXkzeYGTnNTjE3i6Y7tmGSjA28r
Secret: 4a3bcde945663040a440f9d61fd4ff79628ac2be01a3ab7364c728f3c7b45dfe027e25ac
###
https://nmobi.kuwo.cn/mobi.s?f=kuwo&q=NI8S5evAnmGldi4g47EsqtfDbGsJckckbTQQd2LAgmDPITUWSd51OkjHRFj6xHPEQxNN6u+tD3K2e3HYhbE4U0pUYwqjd2kt
@@ -43,3 +60,95 @@ https://www.kuwo.cn/api/v1/www/music/playUrl?mid=395500809&type=music&httpsStatu
Cookie: Hm_Iuvt_cdb524f42f23cer9b268564v7y735ewrq2324=eZCHRdwSSYkG4d5XRGYtXrMpAXmGE5mh
Secret: 460ac8ea43431f788d7ccbd67fde84755a88a8a36f88d17748d816dec3b308e402f768e8
###
http://c.migu.cn/003sST?ifrom=1d0582bb0148c334cfc5bdea0805ddd4
## https://blog.csdn.net/panjiapengfly/article/details/103352409
###
#@no-cookie-jar
https://h5.nf.migu.cn/app/v3/p/share/song/index.html?id=600913000007297943&ifrom=1d0582bb0148c334cfc5bdea0805ddd4
###
https://c.musicapp.migu.cn/MIGUM2.0/v1.0/content/resourceinfo.do?resourceId=600913000007297943&resourceType=1
Host: c.migu.cn
ua: Android_migu
subchannel: 014000D
channel: 014000D
IMEI: h5page
IMSI: h5page
ogId: h5page[ac6c]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: keep-alive
###
https://music.migu.cn/v3/api/music/audioPlayer/songs?type=1&copyrightId=
### 咪咕
#@no-cookie-jar
#@no-redirect
https://freetyst.nf.migu.cn/public/product9th/product46/2024/09/2920/2024%E5%B9%B409%E6%9C%8829%E6%97%A515%E7%82%B949%E5%88%86%E7%B4%A7%E6%80%A5%E5%86%85%E5%AE%B9%E5%87%86%E5%85%A5%E7%A7%91%E5%A4%A7%E8%AE%AF%E9%A3%9E1%E9%A6%96915173/%E6%AD%8C%E6%9B%B2%E4%B8%8B%E8%BD%BD/MP3_40_16_Stero/6326951FKBL200422.mp3?Key=8358490c98c0156f&Tim=1729584947949&channelid=00&msisdn=e29ddec7374448c7aa1086b783561949&CI=6326951FKBL2600929000000926999&F=000009
###
#@no-cookie-jar
#@no-redirect
https://freetyst.nf.migu.cn/public/ringmaker01/n3/Product/2010/12/2010%E5%B9%B411%E6%9C%8816%E6%97%A5%E9%A2%84%E5%AE%A1%E5%94%90%E7%BE%BD%E6%96%87%E5%8C%9612%E9%A6%96/%E5%85%A8%E6%9B%B2%E4%B8%8B%E8%BD%BD/MP3_40_16_Stero/%E5%9F%8B%E8%91%AC%E5%86%AC%E5%A4%A9-%E6%B1%AA%E8%8B%8F%E6%B3%B7%2B%E9%98%BF%E6%82%84.mp3?Key=fce819d43d6876aa&Tim=1729585192341&channelid=00&msisdn=48a3433be88f44c8a3035b639d6ab6e1&CI=600787010992600902000008734476&F=000009
###
https://freetyst.nf.migu.cn/public/ringmaker01/n3/Product/2010/12/2010%E5%B9%B411%E6%9C%8816%E6%97%A5%E9%A2%84%E5%AE%A1%E5%94%90%E7%BE%BD%E6%96%87%E5%8C%9612%E9%A6%96/%E5%85%A8%E6%9B%B2%E4%B8%8B%E8%BD%BD/MP3_320_16_Stero/%E5%9F%8B%E8%91%AC%E5%86%AC%E5%A4%A9-%E6%B1%AA%E8%8B%8F%E6%B3%B7%2B%E9%98%BF%E6%82%84.mp3?Key=ab9f206abef3d9c6&Tim=1729585317592&channelid=00&msisdn=1969e2c2c1bf417087820aeef52517b2&CI=600787010992600902000008734476&F=020010
###
# curl 'https://music.migu.cn/v3/api/music/audioPlayer/getPlayInfo?dataType=2&data=U2FsdGVkX1%2FPz5AMzvLcNBppyNv%2FU5YkiRDE6M7BWD86KDZZv0U43iSMOPt8Ol5gvpGWDLCbi2O3ItIvdAG0PSNH6JxzPnN7Xxoo7rJ3mZ0%3D&secKey=jRw3a%2BdcOiZzIy%2FUdr2fHBHuBrkfP3AwhEpCOM92fZPHnjoFGlJK%2Bd2BrX%2FNp7mwtNwF8Bk7cCqwmD2eYYhnmUre7jwPrR33oVjT7B0FXXv7yc%2FFPBicIWjki%2BUD%2F1xBI5Hice5r6LaOXRO17luFV1ijw94s8iwEbWRJdnia2P8%3D'
# -H 'accept: application/json, text/plain, */*'
# -H 'accept-language: zh-CN,zh;q=0.9,en;q=0.8'
# -H 'cache-control: no-cache'
# -H 'cookie: mgAppH5CookieId=1253704085-1rriorf89d9c3e8cd314ff4011d5e4-1729576539; migu_cookie_id=81932e99-6f88-400b-89e9-af6dd5121945-n41729577064410; mg_uem_user_id_9fbe6599400e43a4a58700a822fd57f8=9c30c042-164c-423d-8476-e6d6586c6849; cookieId=ywE9A06YDMgOkf7EmsHa86Fr8ALGCrE1729577075545; idmpauth=true@passport.migu.cn; migu_music_status=true; migu_music_uid=a9d3d76a-11c1-4c14-b851-0b8ae3fda0dd; migu_music_avatar=%252F%252Fpl.migu.cn%252Fgroup2%252FM00%252F00%252F0F%252FCrUBJGEWf42IbL_lAABuET5vDLsAAALgwLGksAAAG4p174.jpg; migu_music_nickname=%E5%8D%83%E7%99%BE%E5%BA%A6; migu_music_level=0; migu_music_credit_level=3; migu_music_platinum=0; migu_music_msisdn=WGFyKQr5ehr1A6YwwgLxVA%3D%3D; migu_music_email=; migu_music_passid=84433242749912; migu_music_sid=s%3AbnlUvPcL1CjGvW3SpgTHmdnUhZ1b02IS.uwi4h8%2FYo7zk3ypFW%2FK%2Frf5r2i6EixZWnskoTvsryJk; player_stop_open=0; playlist_adding=1; addplaylist_has=1; audioplayer_new=1; add_play_now=1; audioplayer_exist=1; playlist_change=0; WT_FPC=id=20722ce68560244cd4a1729576539758:lv=1729577748219:ss=1729576539758; audioplayer_open=1'
# -H 'dnt: 1'
# -H 'pragma: no-cache'
# -H 'priority: u=1, i'
# -H 'referer: https://music.migu.cn/v3/music/player/audio'
# -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"'
# -H 'sec-ch-ua-mobile: ?0'
# -H 'sec-ch-ua-platform: "Windows"'
# -H 'sec-fetch-dest: empty'
# -H 'sec-fetch-mode: cors'
# -H 'sec-fetch-site: same-origin'
# -H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
#dataType: 2
#data: U2FsdGVkX1/Pz5AMzvLcNBppyNv/U5YkiRDE6M7BWD86KDZZv0U43iSMOPt8Ol5gvpGWDLCbi2O3ItIvdAG0PSNH6JxzPnN7Xxoo7rJ3mZ0=
#secKey: jRw3a+dcOiZzIy/Udr2fHBHuBrkfP3AwhEpCOM92fZPHnjoFGlJK+d2BrX/Np7mwtNwF8Bk7cCqwmD2eYYhnmUre7jwPrR33oVjT7B0FXXv7yc/FPBicIWjki+UD/1xBI5Hice5r6LaOXRO17luFV1ijw94s8iwEbWRJdnia2P8=
# auditionsFlag
#:
#0
#copyrightId
#:
#"60078701099"
#type
#:
#1
GET https://music.migu.cn/v3/api/music/audioPlayer/getPlayInfo?dataType=2&data=U2FsdGVkX1%2FPz5AMzvLcNBppyNv%2FU5YkiRDE6M7BWD86KDZZv0U43iSMOPt8Ol5gvpGWDLCbi2O3ItIvdAG0PSNH6JxzPnN7Xxoo7rJ3mZ0%3D&secKey=jRw3a%2BdcOiZzIy%2FUdr2fHBHuBrkfP3AwhEpCOM92fZPHnjoFGlJK%2Bd2BrX%2FNp7mwtNwF8Bk7cCqwmD2eYYhnmUre7jwPrR33oVjT7B0FXXv7yc%2FFPBicIWjki%2BUD%2F1xBI5Hice5r6LaOXRO17luFV1ijw94s8iwEbWRJdnia2P8%3D
accept: application/json, text/plain, */*
accept-language: zh-CN,zh;q=0.9,en;q=0.8
cache-control: no-cache
cookie: mgAppH5CookieId=1253704085-1rriorf89d9c3e8cd314ff4011d5e4-1729576539; migu_cookie_id=81932e99-6f88-400b-89e9-af6dd5121945-n41729577064410; mg_uem_user_id_9fbe6599400e43a4a58700a822fd57f8=9c30c042-164c-423d-8476-e6d6586c6849; cookieId=ywE9A06YDMgOkf7EmsHa86Fr8ALGCrE1729577075545; idmpauth=true@passport.migu.cn; migu_music_status=true; migu_music_uid=a9d3d76a-11c1-4c14-b851-0b8ae3fda0dd; migu_music_avatar=%252F%252Fpl.migu.cn%252Fgroup2%252FM00%252F00%252F0F%252FCrUBJGEWf42IbL_lAABuET5vDLsAAALgwLGksAAAG4p174.jpg; migu_music_nickname=%E5%8D%83%E7%99%BE%E5%BA%A6; migu_music_level=0; migu_music_credit_level=3; migu_music_platinum=0; migu_music_msisdn=WGFyKQr5ehr1A6YwwgLxVA%3D%3D; migu_music_email=; migu_music_passid=84433242749912; migu_music_sid=s%3AbnlUvPcL1CjGvW3SpgTHmdnUhZ1b02IS.uwi4h8%2FYo7zk3ypFW%2FK%2Frf5r2i6EixZWnskoTvsryJk; player_stop_open=0; playlist_adding=1; addplaylist_has=1; audioplayer_new=1; add_play_now=1; audioplayer_exist=1; playlist_change=0; WT_FPC=id=20722ce68560244cd4a1729576539758:lv=1729577748219:ss=1729576539758; audioplayer_open=1
dnt: 1
pragma: no-cache
priority: u=1, i
referer: https://music.migu.cn/v3/music/player/audio
sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
sec-fetch-dest: empty
sec-fetch-mode: cors
sec-fetch-site: same-origin
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36
###