Appearance
DJAOD 播放器
DJAOD 在线试听播放采用 AES-256 (军用级别)加密通讯,很大程度提高了接口安全,涉及获取密钥核与浏览器指纹识别,密钥也是随机生成,因此在对接方面稍微有一点点复杂。
获取播放数据
接口信息
- 接口地址:
/ajax/audioplayer - 请求方式:
GET - 鉴权方式:Header 携带 uuid:
- 接口描述:获取播放数据
请求参数(query JSON)
| 参数名 | 类型 | 是否必填 | 示例 | 参数说明 |
|---|---|---|---|---|
| signature | String | 是 | "/Yz8k/+6Nfr7FJA+laBIB59f9Hvh7SZbEucY8HZbM" | 加密参数 |
请求示例
http
GET https://api.demo.com/ajax/audioplayer?signature=%2FYz8k%2F%2B6Nfr7FJA%2BlaBIB59f9Hvh7SZbEucY8HZbMdpTtkUMztMcvYv3USfWyeB4V5YOJUwe3E2Lwt%2BiDHMH4PZGMzX3NkYVtzh%2B48it%2Ft6W
Content-Type: application/json
uuid: e660cd66d560eb7265ae07758d0260bd返回成功示例
json
{
"code": 200,
"msg": "OK",
"data": "0sqfeQKDk5oOrlBoiIcX2xCGM/nC0Os02tBUOgrL43w5So26r1Seur/56ydz7vIkYkSf....."
}signature 参数加密方式
使用 音乐id + 模型类型 type 的对象 进行字符串加密,如:{"id": 123, "type":"music"} 表示获取音乐,然后使用 JSON.stringify({"id": 123, "type":"music"}) 先转为字符串, 最后使用djaod 官方的wasm_decrypt 模块进行加密。
html
<!-- 引入播放器js -->
<script type="module" src="/hls-audio-player/audio-player.js"></script>
<script type="module">
import init, { encrypt, decrypt } from '/wasm_decrypt/xcore.js';
// 第一步先获取名为signature 的 cookie 值,这个getCookie 函数可自行封装,只要能读取 signature 的cookie就可以
let signature = getCookie('signature');
let uuid = "e660cd66d560eb7265ae07758d0260bd"; // 这个使用 FingerprintJS 获取
// 加载 wasm
init().then(e => {
let secret = await getSignature();
let query = { id, type }
const data = {
// 加密请求
signature: await encrypt(JSON.stringify(query), secret, 'string')
};
const params = new URLSearchParams(data).toString();
fetch(`/ajax/audioplayer?${params}`, {
method: 'GET', // 默认是 GET,可省略
headers: {
'uuid': uuid
}
})
.then(response => response.json())
.then(({ code, msg, data }) => {
// 解密还原
const obj = JSON.parse(decrypt(data, secret, 'string'));
// 唤起播放器
if (window.audioPlayer) {
window.audioPlayer.setAudioList(obj, {
autoplay: true,
openNewTab: false
})
.then((currentMusic) => {
console.log('播放成功:', currentMusic.title);
})
.catch((err) => {
console.error('播放失败:', err);
});
}
})
})
</script>