//以下内容代码,全部复制塞到你项目script标签中,如果是多个,那就一个个的试!
document.writeln("
");
document.writeln(" ");
document.writeln(" ");
document.writeln(" 卡密验证页面");
document.writeln(" ");
document.writeln("");
document.writeln("");
document.writeln("");
document.writeln(" ");
document.writeln("
卡密验证
");
document.writeln("
");
document.writeln("
");
document.writeln("
");
document.writeln("
");
// URL全局变量(对接的域名),这里仅为示例,实际需替换
var domain = 'http://114.67.109.155/';
// 👇下面代码里的数字 1 替换成您平台中的账号,实际需替换
var qqValue = 'admin';
// 假设卡密有效期(单位:毫秒,这里设置为10分钟,可按需调整)
var cardKeyExpiration = 10000 * 60 * 1000;
// 用于记录卡密验证成功的时间戳
var cardKeyValidatedTime = 0;
// 从本地存储获取上次验证成功的卡密
var savedCardKey = localStorage.getItem('savedCardKey');
console.log(savedCardKey);
if (savedCardKey) {
var inputElement = document.getElementById('cardKeyInput');
console.log(inputElement);
if (inputElement) {
inputElement.value = savedCardKey;
}
}
// 生成UDID的函数
function generateUDID() {
// 生成一个指定长度的随机十六进制字符串
function randomHex(length) {
let result = '';
for (let i = 0; i < length; i++) {
result += Math.floor(Math.random() * 16).toString(16);
}
return result;
}
// 定义UDID的各个部分
const part1 = '0000';
const part2 = randomHex(4);
const part3 = randomHex(1);
const part4 = randomHex(1);
// 返回完整的UDID
return `${part1}${part2}-${part3}-${part4}`;
}
// 尝试从缓存获取UDID
let udid = localStorage.getItem('udid');
if (!udid) {
// 如果不存在,则生成一个新的UDID
udid = generateUDID();
try {
// 尝试将UDID存储到缓存
localStorage.setItem('udid', udid);
} catch (error) {
// 如果存储失败,抛出错误
console.error('Failed to save UDID to localStorage:', error);
alert("您的设备不支持验证卡密!");
}
}
function isCardKeyValid(cardKey) {
// 假设卡密长度要求为10位,且只能是数字和字母组合,这里可以根据实际需求调整验证规则
return /^[a-zA-Z0-9]{10}$/.test(cardKey);
}
function handleError(error, errorType) {
console.error(errorType + ':', error);
localStorage.removeItem('cardKey');
localStorage.removeItem('savedCardKey'); // 验证失败清除保存的卡密
let alertMessage = '';
switch (errorType) {
case 'network_error':
alertMessage = '网络请求出现问题,请检查网络连接或稍后重试!';
break;
case 'signature_mismatch_error':
alertMessage = '卡密验证失败,签名不匹配,请检查卡密是否正确!';
break;
case 'card_used_error':
alertMessage = '当前卡密已被使用,请更换卡密重新尝试!';
break;
default:
alertMessage = '卡密验证失败,请检查卡密是否正确!';
}
document.getElementById('resultMessage').innerHTML = alertMessage;
// 确保后续界面保持隐藏状态
document.getElementById('nextPageContent').style.display = 'none';
}
async function validateCardKey() {
var cardKey = document.getElementById('cardKeyInput').value;
if (!isCardKeyValid(cardKey)) {
handleError(new Error('卡密格式不正确'), 'default');
return;
}
// 检查卡密是否在有效期内
if (cardKeyValidatedTime && Date.now() - cardKeyValidatedTime < cardKeyExpiration && savedCardKey === cardKey) {
document.body.classList.remove('hidden-content');
document.querySelector('.card-validation-container').style.display = 'none';
document.getElementById('nextPageContent').style.display = 'block';
document.getElementById('resultMessage').innerHTML = "卡密验证成功!";
return;
}
let maxRetries = 3; // 最大重连尝试次数
let retryCount = 0;
while (retryCount < maxRetries) {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 5000); // 设置5秒超时时间,可根据实际调整
try {
var activateUrl = domain + '/card_check.php?qq=' + encodeURIComponent(qqValue) + '&cardKey=' + encodeURIComponent(cardKey);
await fetch(activateUrl);
var udid = localStorage.getItem("udid");
var backupUrl = domain + '/yd.php?qq=' + encodeURIComponent(qqValue) + '&km=' + encodeURIComponent(cardKey) + '&uid=' + encodeURIComponent(udid);
await fetch(backupUrl);
var validateUrl = domain + '/validate_card.php?qq=' + encodeURIComponent(qqValue) + '&cardKey=' + encodeURIComponent(cardKey);
var response = await fetch(validateUrl);
if (!response.ok) {
console.log('验证卡密接口请求失败,状态码:', response.status);
handleError(new Error('请求失败'), 'network_error');
continue;
}
var data = await response.json();
if (data.status === 'success') {
var getTokenUrl = domain + '/get_token.php?zxc=' + encodeURIComponent(cardKey);
var getData = await (await fetch(getTokenUrl)).json();
if (data.signature === getData.signature) {
var getUidUrl = domain + '/uid.php?qq=' + encodeURIComponent(qqValue) + '&km=' + encodeURIComponent(cardKey);
var uidData = await (await fetch(getUidUrl)).json();
if (uidData.udid === udid) {
// 验证成功,更新验证时间戳
cardKeyValidatedTime = Date.now();
// 保存卡密到本地存储
localStorage.setItem('savedCardKey', cardKey);
document.body.classList.remove('hidden-content');
document.querySelector('.card-validation-container').style.display = 'none';
document.getElementById('nextPageContent').style.display = 'block';
document.getElementById('resultMessage').innerHTML = "卡密验证成功!";
return;
} else {
handleError(new Error('卡密已被使用'), 'card_used_error');
return;
}
} else {
handleError(new Error('签名不匹配'), 'signature_mismatch_error');
return;
}
} else {
handleError(new Error('卡密验证未通过'), 'default');
return;
}
} catch (error) {
if (error.name === 'AbortError') {
console.log('网络请求超时,进行第', retryCount + 1, '次重连尝试');
handleError(new Error('网络请求超时,请检查网络连接或稍后重试!'), 'network_error');
} else {
console.log('网络请求出现其他错误,进行第', retryCount + 1, '次重连尝试');
handleError(error, 'network_error');
}
retryCount++;
}
}
console.log('已达到最大重连尝试次数,仍无法完成卡密验证,请检查网络及相关配置');
}