您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
广东工贸优慕课脚本,“网课小工具题库(GO题)”右键设置密钥
// ==UserScript== // @name 广东工贸优慕课脚本 // @namespace http://tampermonkey.net/ // @version 2025-06-21 // @description 广东工贸优慕课脚本,“网课小工具题库(GO题)”右键设置密钥 // @author 577fkj // @match https://umooc.gdgm.edu.cn/meol/common/question/test/student/stu_qtest_question.jsp** // @match https://umooc.gdgm.cn/meol/common/question/test/student/stu_qtest_question.jsp** // @icon https://umooc.gdgm.cn/favicon.ico // @run-at document-idle // @grant GM_xmlhttpRequest // @grant GM_setValue // @grant GM_getValue // @connect * // @license GPL3 // ==/UserScript== (function() { 'use strict'; var HtmlUtil = { htmlEncode:function (html){ var temp = document.createElement ("div"); (temp.textContent != undefined ) ? (temp.textContent = html) : (temp.innerText = html); var output = temp.innerHTML; temp = null; return output; }, htmlDecode:function (text){ var temp = document.createElement("div"); temp.innerHTML = text; var output = temp.innerText || temp.textContent; temp = null; return output; } }; console.log('load'); var body = document.body; var result = ''; document.getElementsByClassName('testcontent')[0].childNodes.forEach((node) => { if (node instanceof HTMLInputElement){ result += node.value + '\n'; return; } }); var title = HtmlUtil.htmlDecode(result); var questionType = '[论述题]'; var optionInputs = document.querySelectorAll('.optionContent input[type="radio"], .optionContent input[type="checkbox"]'); if (optionInputs.length > 0) { questionType = optionInputs[0].type === 'radio' ? '[单选题]' : '[多选题]'; } result = questionType + '\n' + result; var a = []; var nextCharCode = 'A'.charCodeAt(0); var optionInputsArray = []; document.querySelectorAll('.optionContent').forEach((node) => { const options = node.querySelectorAll('input[type="radio"], input[type="checkbox"]'); if (options.length > 0) { options.forEach(input => { let labelText = ''; if (input.parentNode.tagName === 'TD') { labelText = input.parentNode.nextElementSibling.textContent || input.parentNode.nextElementSibling.innerText; } else if (input.parentNode.tagName === 'LABEL') { labelText = input.parentNode.textContent || input.parentNode.innerText; } else { console.log('无法解析题目', node, input); return; } labelText = (labelText || '').trim().replace('\t', ''); const optionChar = String.fromCharCode(nextCharCode++); a.push(`${optionChar}:${labelText}`); optionInputsArray.push(input); node.addEventListener('click', () => input.click()); }); } }); result += a.join("\n"); body.oncontextmenu = function(){} body.onselectstart = function(){} body.oncopy = function(){} result = HtmlUtil.htmlDecode(result); console.log("题目:\n", result); var inputElement = document.createElement('textarea'); inputElement.style.width = '100%'; inputElement.style.height = '100px'; inputElement.value = result; body.appendChild(inputElement); var copyButton = document.createElement('button'); copyButton.textContent = '复制'; copyButton.addEventListener('click', function() { inputElement.select(); inputElement.setSelectionRange(0, inputElement.value.length); document.execCommand('copy'); }); body.appendChild(copyButton); var url_map = { "百度": "https://www.baidu.com/s?ie=UTF-8&wd=", "百度AI": "https://chat.baidu.com/search?word=", "百度手机版": "https://m.baidu.com/s?ie=UTF-8&word=", "不挂科": "https://easylearn.baidu.com/edu-page/tiangong/bgklist?query=" }; function openWin(url) { var name = 'seache'; var iWidth=500; var iHeight=570; var iTop = (window.screen.height-30-iHeight)/2; var iLeft = (window.screen.width-10-iWidth)/2; window.open(url,name,'height='+iHeight+',innerHeight='+iHeight+',width='+iWidth+',innerWidth='+iWidth+',top='+iTop+',left='+iLeft+',toolbar=no,menubar=no,scrollbars=auto,resizable=no,location=no,status=no'); } function createButtonClickHandler(url) { return function() { var fullUrl = url + encodeURI(result); openWin(fullUrl); }; } function similar(s, t, f) { if (!s || !t) return 0; if(s === t) return 100; var l = Math.max(s.length, t.length); var n = s.length; var m = t.length; var d = []; f = f || 2; var min = function (a, b, c) { return Math.min(a, b, c); }; var i, j, si, tj, cost; if (n === 0) return m; if (m === 0) return n; for (i = 0; i <= n; i++) { d[i] = [i]; } for (j = 0; j <= m; j++) { d[0][j] = j; } for (i = 1; i <= n; i++) { si = s.charAt(i - 1); for (j = 1; j <= m; j++) { tj = t.charAt(j - 1); cost = si === tj ? 0 : 1; d[i][j] = min(d[i-1][j]+1, d[i][j-1]+1, d[i-1][j-1]+cost); } } let res = (1 - d[n][m] / l) * 100; return res.toFixed(f); } function seache() { GM_xmlhttpRequest({ method: "POST", url: 'https://cx.icodef.com/wyn-nb?v=4', responseType: "json", data: "question=" + encodeURIComponent(title), headers: { "Content-Type": "application/x-www-form-urlencoded", "Authorization": GM_getValue("key") }, onload: function(res){ console.log(res); var resultElement = document.createElement('textarea'); resultElement.style.width = '100%'; resultElement.style.height = '100px'; var resultText = res.response.code === 1 ? title + "\n答案是:" + res.response.data : title + "\n错误:" + res.response.msg; var is_find = false; if (res.response.code === 1) { for (var i = 0; i < a.length; i++) { var optionText = a[i].split(':')[1] || ''; var ss = similar(res.response.data, optionText); if (ss > 50) { is_find = true; resultText += "\n答案相似度:" + ss; optionInputsArray[i].click(); break; } } if (!is_find) { resultText += "\n未匹配到答案"; } } resultElement.value = resultText; body.appendChild(resultElement); } }); } for (var key in url_map) { if (url_map.hasOwnProperty(key)) { var buttonElement = document.createElement('button'); buttonElement.textContent = key + '搜索'; buttonElement.addEventListener('click', createButtonClickHandler(url_map[key])); body.appendChild(buttonElement); } } var buttonSeache = document.createElement('button'); buttonSeache.textContent = '网课小工具题库(GO题)'; buttonSeache.addEventListener('click', seache); buttonSeache.addEventListener("contextmenu", function(event) { event.preventDefault(); var key = prompt('微信公众号"一之哥哥"发送"token"获取密钥,请输入密钥:', GM_getValue("key")); if (key) { GM_setValue("key", key); } }); body.appendChild(buttonSeache); function random() { if (optionInputsArray.length > 0) { var randomInput = optionInputsArray[Math.floor(Math.random() * optionInputsArray.length)]; randomInput.click(); } } var buttonRandom = document.createElement('button'); buttonRandom.textContent = '随机'; buttonRandom.addEventListener('click', random); body.appendChild(buttonRandom); })();