// ==UserScript== // @name 学习通AI做题助手 // @namespace xyz_xyz-%E5%AD%A6%E4%B9%A0%E9%80%9AAI%E5%81%9A%E9%A2%98%E5%8A%A9%E6%89%8B // @version 1.1 // @description 免费使用;暂时仅支持作业,不支持考试;题型仅支持单选,多选,判断 // @author xyz_xyz // @match https://*.chaoxing.*/*/*/work/* // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @require https://html2canvas.hertzen.com/dist/html2canvas.min.js // @connect 14.103.139.99 // @icon https://ts3.tc.mm.bing.net/th/id/ODF.I1ucXmTxV5hOApxEEEsoqw?w=32&h=32&qlt=70&pcl=fffffa&o=7&cb=thws4&pid=1.2&rm=3 // ==/UserScript== (function () { 'use strict'; // 配置 const BACKEND_URL = "http://14.103.139.99:5000/api"; const TOKEN_STORAGE_KEY = "answer_token"; const DEVICE_ID_KEY = "answer_device_id"; // 创建UI面板 function createControlPanel() { // 面板容器 const panel = document.createElement('div'); panel.id = 'answer-control-panel'; panel.style.cssText = ` background: #fff; border-bottom: 2px solid #4CAF50; padding: 10px 20px; z-index: 999999; box-shadow: 0 2px 10px rgba(0,0,0,0.1); `; // 标题 const title = document.createElement('h3'); title.textContent = '智能答题助手'; title.style.margin = '0 0 10px 0'; title.style.color = '#333'; // Token输入区域 const tokenContainer = document.createElement('div'); tokenContainer.style.marginBottom = '10px'; const tokenLabel = document.createElement('label'); tokenLabel.textContent = '答题Token: '; tokenLabel.style.marginRight = '8px'; const tokenInput = document.createElement('input'); tokenInput.type = 'text'; tokenInput.id = 'token-input'; tokenInput.style.padding = '5px 8px'; tokenInput.style.width = '250px'; tokenInput.style.marginRight = '10px'; const saveTokenBtn = document.createElement('button'); saveTokenBtn.textContent = '保存Token'; saveTokenBtn.style.padding = '5px 15px'; saveTokenBtn.style.background = '#4CAF50'; saveTokenBtn.style.color = 'white'; saveTokenBtn.style.border = 'none'; saveTokenBtn.style.borderRadius = '3px'; saveTokenBtn.style.cursor = 'pointer'; tokenContainer.append(tokenLabel, tokenInput, saveTokenBtn); // 控制按钮区域 const controlContainer = document.createElement('div'); controlContainer.style.marginBottom = '10px'; const startBtn = document.createElement('button'); startBtn.textContent = '开始答题'; startBtn.id = 'start-answer-btn'; startBtn.style.padding = '6px 20px'; startBtn.style.background = '#2196F3'; startBtn.style.color = 'white'; startBtn.style.border = 'none'; startBtn.style.borderRadius = '3px'; startBtn.style.cursor = 'pointer'; startBtn.style.marginRight = '10px'; const resetBtn = document.createElement('button'); resetBtn.textContent = '重置Token'; resetBtn.style.padding = '6px 20px'; resetBtn.style.background = '#f44336'; resetBtn.style.color = 'white'; resetBtn.style.border = 'none'; resetBtn.style.borderRadius = '3px'; resetBtn.style.cursor = 'pointer'; controlContainer.append(startBtn, resetBtn); // 添加二维码和说明区域 const qrSection = document.createElement('div'); qrSection.style.cssText = ` display: flex; align-items: center; margin: 15px 0; padding: 10px; background: #f9f9f9; border-radius: 5px; `; // 说明文字 const qrDescription = document.createElement('div'); qrDescription.style.cssText = ` margin-right: 15px; max-width: 300px; `; const qrTitle = document.createElement('p'); qrTitle.textContent = '使用帮助'; qrTitle.style.cssText = ` margin: 0 0 5px 0; font-weight: bold; color: #333; `; const qrText = document.createElement('p'); qrText.textContent = '扫描二维码,关注公众号网络喵,发送token,获取免费AI题库token'; qrText.style.cssText = ` margin: 0; font-size: 13px; color: #666; line-height: 1.5; `; qrDescription.append(qrTitle, qrText); // 二维码图片 const qrcode = document.createElement('img'); qrcode.src = 'data:image/jpeg;base64,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'; // 替换为实际二维码URL qrcode.alt = '答题助手帮助二维码'; qrcode.style.cssText = ` width: 100px; height: 100px; border: 1px solid #ddd; padding: 5px; background: white; `; qrSection.append(qrDescription, qrcode); // 状态显示区域 const statusContainer = document.createElement('div'); statusContainer.style.fontSize = '14px'; statusContainer.style.color = '#666'; const statusLabel = document.createElement('div'); statusLabel.id = 'status-label'; statusLabel.textContent = '状态: 未开始'; statusLabel.style.marginBottom = '5px'; const logContainer = document.createElement('div'); logContainer.id = 'log-container'; logContainer.style.maxHeight = '100px'; logContainer.style.overflowY = 'auto'; logContainer.style.border = '1px solid #eee'; logContainer.style.padding = '5px'; logContainer.style.fontFamily = 'monospace'; statusContainer.append(statusLabel, logContainer); // 组装面板 panel.append(title, tokenContainer, controlContainer, qrSection, statusContainer); const targetContainer = document.querySelector('.fanyaMarking_left.whiteBg'); // 添加到页面 if (targetContainer) { targetContainer.prepend(panel); } // 调整页面内容位置,避免被面板遮挡 // document.body.style.marginTop = panel.offsetHeight + 'px'; // 加载已保存的Token const savedToken = GM_getValue(TOKEN_STORAGE_KEY); if (savedToken) { tokenInput.value = savedToken; addLog(`已加载保存的Token`); } // 绑定事件 saveTokenBtn.addEventListener('click', async () => { const token = tokenInput.value.trim(); if (!token) { alert('请输入Token'); return; } // 验证Token setStatus('验证Token中...'); const deviceId = getDeviceId(); const isValid = await verifyToken(token, deviceId); if (isValid) { GM_setValue(TOKEN_STORAGE_KEY, token); addLog(`Token保存成功`); setStatus('Token已保存'); } else { addLog(`Token验证失败`); setStatus('Token无效'); } }); resetBtn.addEventListener('click', () => { if (confirm('确定要清除已保存的Token吗?')) { GM_setValue(TOKEN_STORAGE_KEY, ''); tokenInput.value = ''; addLog(`Token已清除`); setStatus('未开始'); } }); startBtn.addEventListener('click', async () => { const token = tokenInput.value.trim(); if (!token) { alert('请输入并保存Token'); return; } startBtn.disabled = true; startBtn.textContent = '处理中...'; setStatus('开始处理题目...'); addLog('开始答题流程'); try { const deviceId = getDeviceId(); await processAllQuestions(token, deviceId); setStatus('所有题目处理完毕'); addLog('答题流程结束'); } catch (err) { setStatus(`处理失败: ${err.message}`); addLog(`错误: ${err.message}`); } finally { startBtn.disabled = false; startBtn.textContent = '开始答题'; } }); } // 日志和状态工具函数 function addLog(message) { const logContainer = document.getElementById('log-container'); const logItem = document.createElement('div'); logItem.style.margin = '2px 0'; logItem.style.padding = '2px 0'; logItem.style.borderBottom = '1px dashed #f0f0f0'; logItem.textContent = `[${new Date().toLocaleTimeString()}] ${message}`; logContainer.appendChild(logItem); logContainer.scrollTop = logContainer.scrollHeight; // 滚动到底部 } function setStatus(message) { document.getElementById('status-label').textContent = `状态: ${message}`; } // 设备ID相关 function getDeviceId() { let deviceId = GM_getValue(DEVICE_ID_KEY); if (!deviceId) { deviceId = `dev_${Date.now()}_${navigator.userAgent.slice(0, 100).hashCode()}`; GM_setValue(DEVICE_ID_KEY, deviceId); addLog(`生成设备ID: ${deviceId.substring(0, 10)}...`); } return deviceId; } // Token验证 function verifyToken(token, deviceId) { return new Promise((resolve) => { GM_xmlhttpRequest({ method: "POST", url: `${BACKEND_URL}/verify-token`, data: JSON.stringify({ token, device_id: deviceId }), headers: { "Content-Type": "application/json" }, onload: (res) => { const data = JSON.parse(res.responseText); resolve(data.code === 200); }, onerror: () => resolve(false) }); }); } // 截图题目 function captureQuestion(questionEl) { return new Promise((resolve) => { const clone = questionEl.cloneNode(true); clone.style.position = "fixed"; clone.style.top = "0"; clone.style.left = "-9999px"; document.body.appendChild(clone); html2canvas(clone).then(canvas => { const base64 = canvas.toDataURL("image/png").replace("data:image/png;base64,", ""); document.body.removeChild(clone); resolve(base64); }); }); } // 获取答案 function getAnswer(token, deviceId, questionInfo) { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: "POST", url: `${BACKEND_URL}/get-answer`, data: JSON.stringify({ token, device_id: deviceId, question_type: questionInfo.type, question_data: questionInfo.data, question_image: questionInfo.image }), headers: { "Content-Type": "application/json" }, onload: (res) => { const data = JSON.parse(res.responseText); if (data.code === 200) resolve(data.answer); else reject(new Error(data.msg)); }, onerror: () => reject(new Error("后端请求失败")) }); }); } // 选择答案 function selectAnswer(questionEl, questionType, answer) { questionEl.querySelectorAll(".answerBg.selected").forEach(el => el.classList.remove("selected")); const questionId = questionEl.getAttribute("data"); const answerInput = document.getElementById(`answer${questionId}`); switch (questionType) { case "单选题": var singleOpt = questionEl.querySelector(`.answerBg[aria-label^="${answer}"]`); if (singleOpt) singleOpt.click(); answerInput.value = answer; break; case "多选题": answer.forEach(opt => { const multiOpt = questionEl.querySelector(`.answerBg[aria-label^="${opt}"]`); if (multiOpt) multiOpt.click(); }); answerInput.value = answer.join(","); break; case "判断题": var tfOpt = answer === "true" ? questionEl.querySelector(".answerBg[aria-label^='A对']") : questionEl.querySelector(".answerBg[aria-label^='B错']"); if (tfOpt) tfOpt.click(); answerInput.value = answer; break; } } // 处理所有题目 async function processAllQuestions(token, deviceId) { const questions = document.querySelectorAll(".questionLi"); if (questions.length === 0) { throw new Error("未找到题目"); } addLog(`发现 ${questions.length} 道题目`); // 检查当日答题限额 const usageRes = await new Promise(resolve => { GM_xmlhttpRequest({ method: "GET", url: `${BACKEND_URL}/check-usage?token=${token}&device_id=${deviceId}`, onload: (res) => resolve(JSON.parse(res.responseText)) }); }); if (usageRes.code !== 200) { throw new Error(usageRes.msg); } if (usageRes.used >= 100) { throw new Error(`今日答题已达${100}题上限`); } addLog(`今日已答题 ${usageRes.used} 题,剩余 ${100 - usageRes.used} 题`); for (let i = 0; i < questions.length; i++) { const questionEl = questions[i]; const questionIndex = i + 1; try { setStatus(`处理第 ${questionIndex}/${questions.length} 题`); addLog(`开始处理第 ${questionIndex} 题`); // 截图 addLog(`正在截图第 ${questionIndex} 题`); const base64Image = await captureQuestion(questionEl); // 收集信息 const questionInfo = { type: questionEl.getAttribute("typename"), data: questionEl.getAttribute("data"), image: base64Image }; addLog(`题目类型: ${questionInfo.type}`); // 获取答案 addLog(`正在请求第 ${questionIndex} 题答案`); const answer = await getAnswer(token, deviceId, questionInfo); addLog(`获取到答案: ${JSON.stringify(answer)}`); // 选择答案 selectAnswer(questionEl, questionInfo.type, answer); addLog(`第 ${questionIndex} 题答题完成`); // 延迟 await new Promise(resolve => setTimeout(resolve, 1000)); } catch (err) { addLog(`第 ${questionIndex} 题处理失败: ${err.message}`); // 继续处理下一题 continue; } } } // 字符串哈希辅助函数 String.prototype.hashCode = function () { let hash = 0; for (let i = 0; i < this.length; i++) { hash = ((hash << 5) - hash) + this.charCodeAt(i); hash = hash & hash; } return hash; }; // 页面加载完成后初始化 window.addEventListener('load', () => { // 创建控制面板 createControlPanel(); addLog('脚本已加载,准备就绪'); }); })();