This commit is contained in:
丹尼尔
2026-03-11 13:59:22 +08:00
parent 6da73da8d7
commit 152877cef2
18 changed files with 2930 additions and 33 deletions

View File

@@ -572,6 +572,9 @@
<button class="primary" id="btn-qrcode">
获取登录二维码
</button>
<button class="secondary" id="btn-wake">
唤醒
</button>
<button class="secondary" id="btn-check-scan">
检测扫码状态
</button>
@@ -686,11 +689,13 @@
var data62Input = $('data62Input');
var ticketInput = $('originalTicketInput');
var btnVerify = $('slider-btn-verify');
if (params) {
if (keyInput) keyInput.value = params.key || params.Key || '';
if (data62Input) data62Input.value = params.data62 || '';
if (ticketInput) ticketInput.value = params.ticket || params.original_ticket || '';
}
// 仅当有有效参数时填充,避免用 {} 清空已有数据
var keyVal = params && (params.key || params.Key);
var data62Val = params && params.data62;
var ticketVal = params && (params.ticket || params.original_ticket);
if (keyVal !== undefined && keyVal !== '') if (keyInput) keyInput.value = keyVal;
if (data62Val !== undefined && data62Val !== '') if (data62Input) data62Input.value = data62Val;
if (ticketVal !== undefined && ticketVal !== '') if (ticketInput) ticketInput.value = ticketVal;
function toggleVerifyBtn() {
if (!btnVerify) return;
var hasAll = keyInput && data62Input && ticketInput &&
@@ -750,6 +755,8 @@
function setLoading(loading) {
$('btn-qrcode').disabled = loading;
var btnWake = $('btn-wake');
if (btnWake) btnWake.disabled = loading;
$('btn-check-scan').disabled = loading;
$('btn-online').disabled = loading;
$('btn-logout').disabled = loading;
@@ -1008,9 +1015,22 @@
body: JSON.stringify({ key: payload.key, ...body }),
});
log('获取二维码成功');
(function() {
var valid = data._data62_valid;
var msg = data._data62_check || '未知';
var rawLen = data._data62_raw_length;
var cleanLen = data._data62_clean_length;
var preview = data._data62_preview || '';
var line1 = 'Data62检查: ' + (valid ? '完整有效' : '不完整/无效') + (msg && msg !== '完整有效' ? '' + msg + '' : '');
var line2 = '原始长度: ' + (rawLen !== undefined ? rawLen : '—') + ', 清理后长度: ' + (cleanLen !== undefined ? cleanLen : '—');
var line3 = preview ? ('预览: ' + preview) : '';
log(line1);
log(line2);
if (line3) log(line3);
})();
renderQrFromResponse(data);
updateLoginState('等待扫码 / 确认中', 'pending', '请在 60 秒内使用微信扫码。');
// 扫完码后自动检测:先 2 秒做一次检测,再每 5 秒轮询,避免误判为「二维码失效」
// 仅通过轮询检测扫码状态,不立即查状态(避免沿用上次的「需验证」误弹滑块)
if (state.pollingScan) {
clearInterval(state.pollingScan);
}
@@ -1053,15 +1073,19 @@
showSliderAreaAndFill(params);
}
// state == 2 → 登录成功,跳转后端管理页
if (stateVal === 2 || lower.includes('\"state\":2') || /\"state\"\\s*:\\s*2/.test(lower)) {
// 检测状态是否成功登录:state==2 或 Success+已登录 等,成功后自动跳转管理页
var loginSuccess = stateVal === 2 || lower.includes('\"state\":2') || /\"state\"\\s*:\\s*2/.test(lower) ||
(obj.Success === true && (lower.includes('登录') || lower.includes('online') || d && (d.state === 2 || d.State === 2)));
if (loginSuccess) {
updateLoginState('登录成功', 'ok', '');
if (state.pollingScan) {
clearInterval(state.pollingScan);
state.pollingScan = null;
}
log('检测到登录成功,正在跳转管理页…', 'ok');
showQrExpired('登录成功,正在跳转…');
window.location.href = 'manage.html';
var keyParam = payload.key ? '?key=' + encodeURIComponent(payload.key) : '';
window.location.href = 'manage.html' + keyParam;
// state == 1 → 先判定是否明确「过期」,否则一律视为可能需验证,继续轮询并优先根据 slider_url 切到滑块
} else if (stateVal === 1 || lower.includes('\"state\":1') || /\"state\"\\s*:\\s*1/.test(lower)) {
var needVerify = /请提交验证码|提交验证码后登录|验证码后登录|安全验证|完成验证/.test(text) ||
@@ -1150,6 +1174,16 @@
}
onGetQrCode();
});
$('btn-wake') && $('btn-wake').addEventListener('click', function(e) {
e.preventDefault();
var device = ($('device') && $('device').value) || '';
if (device === 'mac') {
if ($('slider-area') && $('slider-area').style.display !== 'none') showQrArea();
onGetQrCode();
} else {
log('唤醒:请先将「登录设备类型」选为 Mac再点击唤醒以获取二维码。', 'warn');
}
});
$('btn-show-slider') && $('btn-show-slider').addEventListener('click', function() {
if (state.sliderParams) showSliderAreaAndFill(state.sliderParams);
});

View File

@@ -219,6 +219,18 @@
const API_BASE = '';
const KEY_STORAGE = 'wechat_key';
(function applyKeyFromUrl() {
try {
var params = new URLSearchParams(window.location.search);
var k = params.get('key');
if (k && k.trim()) {
k = k.trim();
if ($('key')) $('key').value = k;
try { localStorage.setItem(KEY_STORAGE, k); } catch (_) {}
}
} catch (_) {}
})();
function getKey() {
const k = ($('key') && $('key').value ? $('key').value.trim() : '') || (typeof localStorage !== 'undefined' ? (localStorage.getItem(KEY_STORAGE) || '').trim() : '');
if (!k) { alert('请先登录'); return null; }