Skip to content

DJAOD 播放器

DJAOD 在线试听播放采用 AES-256 (军用级别)加密通讯,很大程度提高了接口安全,涉及获取密钥核与浏览器指纹识别,密钥也是随机生成,因此在对接方面稍微有一点点复杂。

获取播放数据

接口信息

  • 接口地址:/ajax/audioplayer
  • 请求方式:GET
  • 鉴权方式:Header 携带 uuid:
  • 接口描述:获取播放数据

请求参数(query JSON)

参数名类型是否必填示例参数说明
signatureString"/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>

Released under the MIT License.