fix: 修复评论接口

This commit is contained in:
ElyPrism 2026-07-17 20:11:20 +08:00
parent 321c25bd7d
commit 2fa78c3826
No known key found for this signature in database
10 changed files with 62 additions and 10 deletions

View File

@ -8,7 +8,7 @@ module.exports = async (query, request) => {
} }
const option = createOption(query, 'xeapi') const option = createOption(query, 'xeapi')
option.checkToken = true option.checkToken = 'v2'
const res = await request(`/api/ad/get`, data, option) const res = await request(`/api/ad/get`, data, option)
const raw = res.body const raw = res.body

View File

@ -75,7 +75,7 @@ module.exports = async (query, request) => {
const res = await request( const res = await request(
`/api/ad/listening/rights/gain`, `/api/ad/listening/rights/gain`,
data, data,
createOption(query, 'xeapi', true), createOption(query, 'eapi', 'v2'),
) )
return { return {

View File

@ -25,6 +25,6 @@ module.exports = (query, request) => {
return request( return request(
`/api/resource/comments/${query.t}`, `/api/resource/comments/${query.t}`,
data, data,
createOption(query, 'weapi'), createOption(query, 'xeapi', 'v3'),
) )
} }

View File

@ -9,6 +9,6 @@ module.exports = (query, request) => {
? { checkToken: query.checkToken || APP_CONF.checkToken } ? { checkToken: query.checkToken || APP_CONF.checkToken }
: {}), : {}),
} }
query.checkToken = true // 强制开启checkToken query.checkToken = 'v2' // 强制开启checkToken
return request(`/api/playlist/${path}`, data, createOption(query, 'eapi')) return request(`/api/playlist/${path}`, data, createOption(query, 'eapi'))
} }

View File

@ -0,0 +1,38 @@
// 易盾反作弊 Token 注册端点
// 调用后获取实时 token 并存入共享存储,供后续带 checkToken 的请求使用
//
// GET /register/checktoken → 返回当前 token尚无则自动获取
// POST /register/checktoken → 强制刷新 token
// GET /register/checktoken?refresh=1 → 强制刷新
//
const { default: axios } = require('axios')
const { APP_CONF } = require('../util/config.json')
const URL = APP_CONF.dunDomainV2 + '/v2/config/js?pn=YD00000558929251'
let _token = ''
async function fetch() {
const res = await axios.get(URL, { timeout: 10000 })
const data = res.data
if (data && data.code === 200 && data.result && data.result.conf) {
return data.result.conf
}
throw new Error('易盾返回异常: ' + JSON.stringify(data).substring(0, 200))
}
// 端点处理
module.exports = async (query) => {
const refresh = query.refresh === '1' || query.refresh === 'true'
let token = refresh ? null : _token
if (!token) {
token = await fetch()
_token = token
}
return {
status: 200,
body: { code: 200, token, registered: !!token },
}
}
// 给 request.js 读取用
module.exports.getToken = () => _token

View File

@ -8,7 +8,7 @@
const { default: axios } = require('axios') const { default: axios } = require('axios')
const { APP_CONF } = require('../util/config.json') const { APP_CONF } = require('../util/config.json')
const URL = APP_CONF.dunDomain + '/v3/b?pn=YD00000558929251' const URL = APP_CONF.dunDomainV3 + '/v3/b?pn=YD00000558929251'
let _token = '' let _token = ''
async function fetch() { async function fetch() {

View File

@ -172,7 +172,7 @@
setTag('s1tag', 'busy', '注册中…') setTag('s1tag', 'busy', '注册中…')
setNum('s1num', false) setNum('s1num', false)
try { try {
const res = await fetch(nocache(base + '/register/checktoken?refresh=1')) const res = await fetch(nocache(base + '/register/checktoken/v2?refresh=1'))
const data = await res.json() const data = await res.json()
$('s1pre').textContent = JSON.stringify(data, null, 2) $('s1pre').textContent = JSON.stringify(data, null, 2)
if (data.token) { if (data.token) {

View File

@ -88,7 +88,7 @@
tag.textContent = '获取中…' tag.textContent = '获取中…'
try { try {
const url = base + '/register/checktoken' + (refresh ? '?refresh=1' : '') const url = base + '/register/checktoken/v2' + (refresh ? '?refresh=1' : '')
const res = await fetch(url) const res = await fetch(url)
const data = await res.json() const data = await res.json()
$('respDisplay').textContent = JSON.stringify(data, null, 2) $('respDisplay').textContent = JSON.stringify(data, null, 2)

View File

@ -15,7 +15,8 @@
"domain": "https://music.163.com", "domain": "https://music.163.com",
"clDomian": "https://clientlog.music.163.com", "clDomian": "https://clientlog.music.163.com",
"clDomian3": "https://clientlog3.music.163.com", "clDomian3": "https://clientlog3.music.163.com",
"dunDomain": "https://ac.dun.163yun.com", "dunDomainV3": "https://ac.dun.163yun.com",
"dunDomainV2": "https://ac.dun.163.com",
"encrypt": true, "encrypt": true,
"encryptResponse": false, "encryptResponse": false,
"clientSign": "18:C0:4D:B9:8F:FE@@@453832335F384641365F424635335F303030315F303031425F343434415F343643365F333638332@@@@@@6ff673ef74955b38bce2fa8562d95c976ed4758b1227c4e9ee345987cee17bc9", "clientSign": "18:C0:4D:B9:8F:FE@@@453832335F384641365F424635335F303030315F303031425F343434415F343643365F333638332@@@@@@6ff673ef74955b38bce2fa8562d95c976ed4758b1227c4e9ee345987cee17bc9",

View File

@ -18,7 +18,12 @@ const {
} = require('./index') } = require('./index')
const { URLSearchParams, URL } = require('url') const { URLSearchParams, URL } = require('url')
const { APP_CONF } = require('../util/config.json') const { APP_CONF } = require('../util/config.json')
const { getToken: antiCheatToken } = require('../module/register_checktoken') const {
getToken: antiCheatTokenV2,
} = require('../module/register_checktoken_v2')
const {
getToken: antiCheatTokenV3,
} = require('../module/register_checktoken_v3')
// 预先读取匿名token并缓存 // 预先读取匿名token并缓存
const anonymous_token = fs.readFileSync( const anonymous_token = fs.readFileSync(
@ -182,7 +187,15 @@ const generateRequestId = () => {
} }
const createRequest = (uri, data, options) => { const createRequest = (uri, data, options) => {
const token = options.checkToken ? antiCheatToken() : '' let token = ''
switch (options.checkToken) {
case 'v2':
token = antiCheatTokenV2()
break
case 'v3':
token = antiCheatTokenV3()
break
}
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// 变量声明和初始化 // 变量声明和初始化