// ==UserScript== // @name 网课账号助手(延时自动版) // @namespace wk-login-quick // @version 0.0.8 // @author useeseeu // @description 自动延时0.5秒读取剪贴板并填充账号密码 // @license MIT // @match *://*.chaoxing.com/* // @match *://*.hexuezx.cn/* // @match *://*.webtrn.cn/* // @match *://*.sccchina.net // @match *://*.sccchina.net/* // @match https://os.open.com.cn/* // @match https://www.qingshuxuetang.com/Login // @match https://passport.qlteacher.com // @match https://passport.qlteacher.com/* // @match https://sso.dtdjzx.gov.cn/sso/login // @match *xuehangyxt.com/login // @require https://code.jquery.com/jquery-4.0.0.min.js // @grant GM_getValue // @grant GM_info // @grant GM_setValue // @run-at document-idle // ==/UserScript== (function () { 'use strict'; console.log('网课账号助手(延时版)已启动'); // 1. 封装一个延时函数 (Promise 写法) const wait = (ms) => new Promise(resolve => setTimeout(resolve, ms)); // 2. 检查浏览器支持 if (!navigator.clipboard) { console.error('当前浏览器不支持 Clipboard API,请确保使用 HTTPS 或 localhost'); return; } // 3. 定义主执行函数 async function main() { try { // --- 核心修改:等待 0.5 秒 --- console.log('等待 0.5 秒等待页面元素加载...'); await wait(500); // 4. 读取剪贴板 const text = await navigator.clipboard.readText(); console.log('剪贴板内容:', text); if (!text) { console.log('剪贴板为空'); return; } // 5. 解析 JSON var json; try { json = JSON.parse(text); } catch (e) { console.error('剪贴板内容不是有效的JSON格式'); return; } const p = json.p; const u = json.u; const pwd = json.pwd; if (!p || !u || !pwd) { console.error('JSON 格式缺少必要字段 (p, u, pwd)'); return; } // 6. 根据不同平台填充表单 // 使用 jQuery 的 .val() 方法确保触发必要的事件 if (p == 'hxzx') { $('input[type=text]').eq(2).val(u); $('input[type=password]').eq(0).val(pwd); } else if (p == 'rxzx') { $('input[name=username]').val(u); $('input[name=password]').val(pwd); } else if (p == 'xueqi') { $('input[name=username]').val(u); $('input[name=password]').val(pwd); } else if (p == 'aopeng') { $('#username').val(u); $('#password').val(pwd); } else if (p == 'qingshu') { $('#uname').val(u); $('#pwd').val(pwd); } else if (p == 'qlteacher') { $('input[name=username]').val(u); $('input[name=password]').val(pwd); } else if (p == 'dtdjzx') { $('input[name=username]').val(u); $('input[name=password]').val(pwd); } else if (p == 'tcm512') { $('input[type=tel]').val(u); $('input[type=password]').val(pwd); } else if (p == 'xuehang') { $('input[type=text]').val(u); $('input[type=password]').val(pwd); } else { console.log('未匹配到平台标识:', p); return; } console.log('填充成功!平台:', p); // 7. 填充后清空剪贴板 await navigator.clipboard.writeText(''); console.log('剪贴板已自动清空'); } catch (err) { console.error('执行出错:', err); // 常见错误:NotAllowedError 通常是因为浏览器禁止网页自动读取剪贴板 if (err.name === 'NotAllowedError') { alert('读取剪贴板被浏览器拦截,请点击一下页面空白处后再试,或检查浏览器权限设置。'); } } } // 8. 立即执行 main(); })();