确认事项
我已经搜索了现有的issues,确认这不是重复问题
我使用的是最新版本的API, 而且是官方发布的版本,而不是fork或修改版
不处理别人搭建的线上服务的问题,此项目提供任何线上服务不保证质量
如果不是提建议,提 issues 如果不照着模版来将不会优先处理或放着不管
维护项目都是业余时间,精力有限,我只能挑容易解决的issues处理,为了节约双方时间,请尽可能提供足够的有用的信息,给的信息不够我只能根据精力和时间看情况处理,如果模板信息看都不看就删掉,我不会进行任何回复,并且一个月后close掉issue
API版本
Latest Vercel
操作系统或平台
Windows 11
部署平台
Vercel
Bug描述
if ( ! options . randomCNIP ) {
// 当 randomCNIP 不为 true 时,才进去处理真实客户端 IP
// 如果是本地回环地址 ::1,就用全局的随机中国 IP (global.cnIp) 兜底
}
// 如果 options.randomCNIP 为 true,直接跳过 if,什么也不执行
重现步骤
/check/music?id=3316968660&randomCNIP=true不工作,/check/music?id=3316968660&realIP=116.25.146.177工作。
期望行为
/check/music?id=3316968660&randomCNIP=true工作,/check/music?id=3316968660&realIP=116.25.146.177工作。
const obj = [ ...params ]
obj [ 2 ] = obj [ 2 ] || { }
const options = obj [ 2 ]
// 1. 安全提取客户端 IP
let clientIp = req . ip || ''
if ( typeof clientIp === 'string' && clientIp . startsWith ( '::ffff:' ) ) {
clientIp = clientIp . substring ( 7 )
}
// 2. 修正 randomCNIP 的逻辑分支
if ( options . randomCNIP ) {
// 显式开启了随机中国 IP,则直接注入全局已经生成好的随机 IP
obj [ 2 ] . ip = global . cnIp
} else {
// 没开启随机 IP,正常使用客户端真实 IP
// 特殊情况:如果客户端是本地回环(无法代表真实地理位置),用全局随机 IP 兜底
if ( clientIp === '::1' || clientIp === '127.0.0.1' ) {
obj [ 2 ] . ip = global . cnIp
} else {
obj [ 2 ] . ip = clientIp
}
}
return request ( ...obj )
实际行为
/check/music?id=3316968660&randomCNIP=true不工作,/check/music?id=3316968660&realIP=116.25.146.177工作。
错误输出日志
额外信息
No response
愿意协助
确认事项
API版本
Latest Vercel
操作系统或平台
Windows 11
部署平台
Vercel
Bug描述
重现步骤
/check/music?id=3316968660&randomCNIP=true不工作,/check/music?id=3316968660&realIP=116.25.146.177工作。期望行为
/check/music?id=3316968660&randomCNIP=true工作,/check/music?id=3316968660&realIP=116.25.146.177工作。实际行为
/check/music?id=3316968660&randomCNIP=true不工作,/check/music?id=3316968660&realIP=116.25.146.177工作。错误输出日志
额外信息
No response
愿意协助